@borgee/agents-host 0.2.101 → 0.2.110
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/README.md +77 -5
- package/dist/agents-host.d.ts +8 -0
- package/dist/agents-host.js +355 -23
- package/dist/catalog-worker.js +21 -0
- package/dist/catalog-worker.js.map +7 -0
- package/dist/chat/chat-control-plane.d.ts +7 -2
- package/dist/chat/normalized-input.d.ts +9 -0
- package/dist/chat/normalized-input.js +24 -0
- package/dist/chat/sdk-chat-control-plane.d.ts +18 -3
- package/dist/chat/sdk-chat-control-plane.js +44 -9
- package/dist/cli-args.d.ts +1 -1
- package/dist/cli-args.js +13 -4
- package/dist/config.d.ts +3 -1
- package/dist/config.js +25 -0
- package/dist/context/injection.d.ts +16 -0
- package/dist/context/injection.js +37 -21
- package/dist/context/prompt.d.ts +12 -0
- package/dist/context/prompt.js +25 -0
- package/dist/context/turn-preparation.d.ts +2 -1
- package/dist/context/turn-preparation.js +15 -0
- package/dist/gateway/localhost-gateway.js +33 -8
- package/dist/hosted-turn-content.js +3 -2
- package/dist/local-config.js +34 -1
- package/dist/managed-daemon.js +15 -0
- package/dist/native-environment.d.ts +2 -0
- package/dist/native-environment.js +9 -0
- package/dist/native-protocol-types/codec.d.ts +49 -0
- package/dist/native-protocol-types/commands.d.ts +71 -0
- package/dist/native-protocol-types/compatibility.d.ts +5 -0
- package/dist/native-protocol-types/cursor.d.ts +7 -0
- package/dist/native-protocol-types/envelope.d.ts +1105 -0
- package/dist/native-protocol-types/file-changes.d.ts +20 -0
- package/dist/native-protocol-types/history.d.ts +487 -0
- package/dist/native-protocol-types/index.d.ts +18 -0
- package/dist/native-protocol-types/interactions.d.ts +619 -0
- package/dist/native-protocol-types/messages.d.ts +2482 -0
- package/dist/native-protocol-types/public-validation.d.ts +10 -0
- package/dist/native-protocol-types/remote-host-uplink.d.ts +67 -0
- package/dist/native-protocol-types/resources.d.ts +126 -0
- package/dist/native-protocol-types/session-settings.d.ts +22 -0
- package/dist/native-protocol-types/snapshot.d.ts +575 -0
- package/dist/native-protocol-types/timeline.d.ts +1503 -0
- package/dist/native-protocol-types/tool-result.d.ts +26 -0
- package/dist/native-protocol-types/uplink.d.ts +56 -0
- package/dist/native-protocol-types/version.d.ts +5 -0
- package/dist/native-provider-types/commands.d.ts +51 -0
- package/dist/native-provider-types/control.d.ts +192 -0
- package/dist/native-provider-types/file-changes.d.ts +9 -0
- package/dist/native-provider-types/index.d.ts +8 -0
- package/dist/native-provider-types/interactions.d.ts +7 -0
- package/dist/native-provider-types/observation.d.ts +209 -0
- package/dist/native-provider-types/provider.d.ts +124 -0
- package/dist/native-provider-types/session-settings.d.ts +17 -0
- package/dist/native-provider-types/testing.d.ts +27 -0
- package/dist/native-provider-types/tool-result.d.ts +21 -0
- package/dist/native-providers.d.ts +21 -0
- package/dist/native-providers.js +18402 -0
- package/dist/native-providers.js.map +7 -0
- package/dist/plugin-sdk.js +10640 -225
- package/dist/plugin-sdk.js.map +4 -4
- package/dist/policy/copilot-permission.js +1 -8
- package/dist/providers/copilot/sdk-session.js +8 -1
- package/dist/providers/create-provider.js +20 -0
- package/dist/providers/normalized/adapter.d.ts +107 -0
- package/dist/providers/normalized/adapter.js +1650 -0
- package/dist/providers/normalized/control-policy.d.ts +5 -0
- package/dist/providers/normalized/control-policy.js +12 -0
- package/dist/providers/normalized/interactions.d.ts +3 -0
- package/dist/providers/normalized/interactions.js +39 -0
- package/dist/providers/normalized/legacy-input-ownership.d.ts +34 -0
- package/dist/providers/normalized/legacy-input-ownership.js +123 -0
- package/dist/providers/normalized/session-management.d.ts +67 -0
- package/dist/providers/normalized/session-management.js +334 -0
- package/dist/providers/normalized/session-ownership.d.ts +3 -0
- package/dist/providers/normalized/session-ownership.js +90 -0
- package/dist/providers/provider-adapter.d.ts +43 -1
- package/dist/providers/provider-adapter.js +8 -0
- package/dist/types.d.ts +34 -9
- package/dist/vendor/agent-provider-codex/LICENSE +211 -0
- package/dist/vendor/agent-provider-codex/NOTICE +13 -0
- package/package.json +22 -13
- package/skills/borgee-agent/SKILL.md +1 -1
- package/skills/borgee-agent/scripts/borgee-agent.mjs +24 -3
- package/skills/borgee-agent/scripts/borgee-agent.py +28 -2
package/dist/plugin-sdk.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/constants.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/buffer-util.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/limiter.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/validation.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/receiver.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/sender.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/event-target.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/extension.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/websocket.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/stream.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/subprotocol.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/websocket-server.js", "../../sdk/plugin-ts/src/bpp/bpp-transport.ts", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/wrapper.mjs", "../../sdk/plugin-ts/src/errors.ts", "../../sdk/plugin-ts/src/channel-contracts.ts", "../../sdk/plugin-ts/src/bpp/channel-results.ts", "../../sdk/plugin-ts/src/activity-reporter.ts", "../../sdk/plugin-ts/src/client.ts", "../../sdk/plugin-ts/src/draft-message.ts"],
|
|
4
|
-
"sourcesContent": ["'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [options.isServer=false] Create the instance in either\n * server or client mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n */\n constructor(options) {\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._maxPayload = this._options.maxPayload | 0;\n this._isServer = !!this._options.isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxBufferedChunks = options.maxBufferedChunks | 0;\n this._maxFragments = options.maxFragments | 0;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n if (\n this._maxBufferedChunks > 0 &&\n this._buffers.length >= this._maxBufferedChunks\n ) {\n cb(\n this.createError(\n RangeError,\n 'Too many buffered chunks',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n )\n );\n return;\n }\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._maxFragments > 0 && ++this._numFragments > this._maxFragments) {\n const error = this.createError(\n RangeError,\n 'Too many message fragments',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n );\n\n cb(error);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\nconst {\n types: { isUint8Array }\n} = require('util');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else if (isUint8Array(data)) {\n buf.set(data, 2);\n } else {\n throw new TypeError('Second argument must be a string or a Uint8Array');\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxBufferedChunks: options.maxBufferedChunks,\n maxFragments: options.maxFragments,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate({\n ...opts.perMessageDeflate,\n isServer: false,\n maxPayload: opts.maxPayload\n });\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxBufferedChunks: opts.maxBufferedChunks,\n maxFragments: opts.maxFragments,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate({\n ...this.options.perMessageDeflate,\n isServer: true,\n maxPayload: this.options.maxPayload\n });\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxBufferedChunks: this.options.maxBufferedChunks,\n maxFragments: this.options.maxFragments,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n", "// BppTransport is the BPP-native implementation of the Transport port.\n//\n// One `/ws/plugin` WebSocket (Bearer <apiKey>) carries all traffic:\n// outbound: connect / semantic_action / task_* / agent_config_ack / heartbeat\n// inbound: inbound_message / semantic_action_result / agent_config_update /\n// permission_denied\n// reverse requests: {type:\"request\",id,data} \u2194 {type:\"response\",...}\n//\n// Frame types are generated from the Go definitions in internal/bpp/envelope.go.\nimport { randomUUID } from 'node:crypto';\nimport { WebSocket } from 'ws';\n\nimport { BorgeeError, PermissionDeniedError } from '../errors.js';\nimport { rejectChannelPlacementUpdate, validateChannelPlacement, validateListZonesInput } from '../channel-contracts.js';\nimport { decodeChannel, decodeChannels, decodeZonePage } from './channel-results.js';\nimport type {\n ActionResult,\n InboundHandlers,\n SemanticAction,\n Transport,\n TransportContext,\n} from '../transport.js';\nimport type {\n Channel,\n ChannelFile,\n ListZonesInput,\n ConfigAckReason,\n ConfigUpdate,\n ConfigApplyResult,\n InboundKind,\n InboundMessageEvent,\n Logger,\n Message,\n SentMessage,\n ServerRequestHandler,\n StopBackgroundRunHandler,\n StopBackgroundRunResult,\n StopTurnHandler,\n StopTurnResult,\n Task,\n TaskPropertyDefinition,\n TaskPropertyRender,\n User,\n} from '../types.js';\nimport type {\n AgentActivityFrame,\n AgentConfigAckFrame,\n AgentConfigUpdateFrame,\n ConnectFrame,\n ExecutionFinishedFrame,\n ExecutionStartedFrame,\n ExecutionTelemetryAckFrame,\n ExecutionUsageFrame,\n HeartbeatFrame,\n InboundMessageFrame,\n PermissionDeniedFrame,\n SemanticActionFrame,\n SemanticActionResultFrame,\n TaskFinishedFrame,\n TaskStartedFrame,\n} from './frames.generated.js';\nimport type { ExecutionTelemetryFrame } from '../types.js';\n\nconst PROTOCOL_VERSION = 'bpp-1';\nconst CONFIG_ACK_REASONS = new Set<ConfigAckReason>([\n 'api_key_invalid',\n 'quota_exceeded',\n 'network_unreachable',\n 'runtime_crashed',\n 'runtime_timeout',\n 'unknown',\n]);\n\n// Non-recoverable auth-failure close code (mirrors the server const wsCloseAuthFailed in\n// packages/server-go/internal/ws/plugin.go; Discord-4004 pattern). When the server\n// closes the plugin socket with this code the credentials are permanently bad \u2014 stop reconnecting\n// instead of backing off forever.\nconst WS_CLOSE_AUTH_FAILED = 4004;\n\n// Successful semantic action result status shared with the Go server.\nconst RESULT_STATUS_OK = 'ok';\n\n// The server\u2192plugin request action asking one channel's turn to stop, the error\n// a frame carrying no channel to stop is answered with, and the error a handler\n// that raised is reported as. The Python SDK spells all three identically \u2014 the\n// same situation must read the same on both SDKs.\nconst STOP_TURN_ACTION = 'stop_turn';\nconst STOP_TURN_CHANNEL_ID_INVALID = 'stop_turn_channel_id_invalid';\nconst STOP_BACKGROUND_RUN_ACTION = 'stop_background_run';\nconst STOP_BACKGROUND_RUN_TARGET_INVALID = 'stop_background_run_target_invalid';\nconst SERVER_REQUEST_FAILED = 'server_request_failed';\n\n/** Optional BppTransport timing controls with production defaults. */\nexport interface BppTransportOptions {\n /** Timeout for perform() to receive semantic_action_result. Default 30000 ms. */\n performTimeoutMs?: number;\n /** Heartbeat interval. Default 30000 ms. */\n heartbeatIntervalMs?: number;\n /** Initial reconnect delay. Default 500 ms. */\n reconnectBaseMs?: number;\n /** Maximum reconnect delay. Default 30000 ms. */\n reconnectMaxMs?: number;\n /** Reconnect after an unexpected socket close. Default true. */\n autoReconnect?: boolean;\n /** Maximum runtime config apply duration. Default 5000. */\n configApplyTimeoutMs?: number;\n}\n\n// Pending perform() actions match semantic_action_result or permission_denied\n// by nonce and reject when their deadline expires.\ninterface Pending {\n op: SemanticAction['op'];\n zoneInput?: ListZonesInput;\n resolve(v: ActionResult): void;\n reject(err: Error): void;\n timer: ReturnType<typeof setTimeout>;\n}\ninterface ReconnectWaiter {\n resolve(): void;\n reject(error: Error): void;\n}\n\n// Minimal envelope inspected before decoding the concrete frame by type.\ninterface WireEnvelope {\n type?: string;\n id?: string;\n data?: unknown;\n [k: string]: unknown;\n}\n\nexport class BppTransport implements Transport {\n private readonly performTimeoutMs: number;\n private readonly heartbeatIntervalMs: number;\n private readonly reconnectBaseMs: number;\n private readonly reconnectMaxMs: number;\n private readonly autoReconnect: boolean;\n private readonly configApplyTimeoutMs: number;\n\n private ctx: TransportContext | undefined;\n private handlers: InboundHandlers | undefined;\n private serverRequestHandler: ServerRequestHandler | undefined;\n private stopTurnHandler: StopTurnHandler | undefined;\n\n private ws: WebSocket | undefined;\n private readonly pending = new Map<string, Pending>();\n private closed = false;\n // ONLINE = this socket's handshake has been written and its identity is known.\n // Outbound semantic actions gate on this rather than on a raw open socket, so a\n // send issued during a reconnect never races ahead of the handshake.\n private online = false;\n\n private terminal = false;\n private stopBackgroundRunHandler: StopBackgroundRunHandler | undefined;\n private inboundChain: Promise<void> = Promise.resolve();\n private configChain: Promise<void> = Promise.resolve();\n private readonly configAcks = new Map<string, AgentConfigAckFrame>();\n private readonly connectionAborts = new WeakMap<WebSocket, AbortController>();\n private readonly reconnectWaiters = new Set<ReconnectWaiter>();\n private reconnectAttempt = 0;\n private heartbeatTimer: ReturnType<typeof setInterval> | undefined;\n private reconnectTimer: ReturnType<typeof setTimeout> | undefined;\n // The agent id resolved by get_me when the caller supplied none; stamped on\n // every outbound frame that names an agent.\n private agentId = '';\n\n constructor(options: BppTransportOptions = {}) {\n this.performTimeoutMs = options.performTimeoutMs ?? 30_000;\n this.heartbeatIntervalMs = options.heartbeatIntervalMs ?? 30_000;\n this.reconnectBaseMs = options.reconnectBaseMs ?? 500;\n this.reconnectMaxMs = options.reconnectMaxMs ?? 30_000;\n this.autoReconnect = options.autoReconnect ?? true;\n this.configApplyTimeoutMs = options.configApplyTimeoutMs ?? 5_000;\n }\n\n private get logger(): Logger | undefined {\n return this.ctx?.logger;\n }\n\n private currentAgentId(): string {\n return this.agentId || this.ctx?.agentId || '';\n }\n\n subscribe(handlers: InboundHandlers): void {\n this.handlers = handlers;\n }\n\n setServerRequestHandler(handler: ServerRequestHandler | undefined): void {\n this.serverRequestHandler = handler;\n }\n\n setStopTurnHandler(handler: StopTurnHandler | undefined): void {\n this.stopTurnHandler = handler;\n }\n\n setStopBackgroundRunHandler(handler: StopBackgroundRunHandler | undefined): void {\n this.stopBackgroundRunHandler = handler;\n }\n\n getResolvedAgentId(): string {\n return this.currentAgentId();\n }\n\n /** Fire-and-forget metadata-only lifecycle rail. Callers durably retry until ACK. */\n sendExecutionTelemetry(frame: ExecutionTelemetryFrame): void {\n const base = {\n agent_id: this.currentAgentId(),\n execution_id: frame.executionId,\n telemetry_context: frame.telemetryContext,\n event_id: frame.eventId,\n };\n switch (frame.type) {\n case 'execution_started':\n this.send({\n type: frame.type,\n ...base,\n started_at: frame.startedAt,\n } satisfies ExecutionStartedFrame);\n break;\n case 'execution_usage':\n this.send({\n type: frame.type,\n ...base,\n usage_granularity: frame.usageGranularity,\n ...(frame.callIndex === undefined ? {} : { call_index: frame.callIndex }),\n provider: frame.provider,\n model: frame.model,\n input_tokens: frame.inputTokens,\n output_tokens: frame.outputTokens,\n cache_read_tokens: frame.cacheReadTokens,\n cache_write_tokens: frame.cacheWriteTokens,\n observed_at: frame.observedAt,\n } satisfies ExecutionUsageFrame);\n break;\n case 'execution_finished':\n this.send({\n type: frame.type,\n ...base,\n succeeded: frame.succeeded,\n ended_at: frame.endedAt,\n } satisfies ExecutionFinishedFrame);\n break;\n }\n }\n\n async connect(ctx: TransportContext): Promise<void> {\n this.ctx = ctx;\n this.closed = false;\n this.terminal = false;\n this.agentId = ctx.agentId || '';\n await this.openSocket();\n }\n\n async close(): Promise<void> {\n this.closed = true;\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n // close() clears this.ws before ws.close() below, so the 'close' handler sees wasCurrent=false\n // and cannot reset online there; do it here so a post-close perform fails fast.\n this.online = false;\n this.stopHeartbeat();\n this.rejectReconnectWaiters(new BorgeeError('transport not connected', 'bpp.not_connected'));\n this.rejectAllPending(new BorgeeError('transport closed', 'bpp.transport_closed'));\n const ws = this.ws;\n this.ws = undefined;\n if (ws) {\n try {\n ws.close();\n } catch {\n /* ignore */\n }\n }\n }\n\n // ---- Outbound operations ----\n\n async perform(action: SemanticAction, opts?: { handshake?: boolean }): Promise<ActionResult> {\n // Lifecycle and typing frames are fire-and-forget.\n if (action.op === 'report_task_started') {\n this.sendTaskStarted(action);\n return undefined;\n }\n if (action.op === 'report_task_finished') {\n this.sendTaskFinished(action);\n return undefined;\n }\n if (action.op === 'report_typing') {\n this.sendTyping(action);\n return undefined;\n }\n if (action.op === 'report_activity') {\n this.sendActivity(action);\n return undefined;\n }\n\n // One action_timeout bounds waiting-for-online and the response wait together.\n const deadline = Date.now() + this.performTimeoutMs;\n // Fail fast on a closed/terminal transport even if `online` is briefly stale-true.\n if (this.closed || this.terminal) {\n throw new BorgeeError('transport not connected', 'bpp.not_connected');\n }\n if (opts?.handshake) {\n // The identity handshake belongs to the socket that opened it: it needs an\n // open socket and nothing else, so the wait for readiness can never\n // redirect it onto a replacement one \u2014 readiness is downstream of this call.\n if (!this.isOpen()) throw new BorgeeError('transport not connected', 'bpp.not_connected');\n } else if (!this.online) {\n await this.waitUntilOnline(action.op, deadline);\n }\n\n const nonce = randomUUID();\n const frame: SemanticActionFrame = {\n type: 'semantic_action',\n agent_id: this.currentAgentId(),\n action: action.op,\n payload: JSON.stringify(encodeActionPayload(action)),\n nonce,\n };\n\n return new Promise<ActionResult>((resolve, reject) => {\n const remaining = Math.max(0, deadline - Date.now());\n const timer = setTimeout(() => {\n this.pending.delete(nonce);\n reject(new BorgeeError(`semantic_action ${action.op} timed out`, 'bpp.action_timeout'));\n }, remaining);\n this.pending.set(nonce, {\n op: action.op,\n ...(action.op === 'list_zones' ? { zoneInput: { guildId: action.guildId, limit: action.limit, after: action.after } } : {}),\n resolve, reject, timer,\n });\n this.send(frame);\n });\n }\n\n // ---- Socket lifecycle ----\n\n // Transition the given socket to ONLINE. Bails if the socket is stale (a reconnect replaced it),\n // so a handshake completing on a prior socket cannot flip online across a reconnect.\n private goOnline(source: WebSocket | undefined): void {\n if (!source || source !== this.ws) return;\n this.online = true;\n this.handlers?.onStateChange({ status: 'online' });\n this.resolveReconnectWaiters();\n }\n\n private isOpen(): boolean {\n return this.ws !== undefined && this.ws.readyState === WebSocket.OPEN;\n }\n\n private openSocket(): Promise<void> {\n const ctx = this.ctx;\n if (!ctx) throw new BorgeeError('connect() called without context', 'bpp.no_context');\n\n const url = pluginWsUrl(ctx.baseUrl);\n // A new (or reconnecting) socket is not ONLINE until it has announced itself.\n this.online = false;\n const ws = new WebSocket(url, {\n headers: { Authorization: `Bearer ${ctx.apiKey}` },\n });\n const connectionAbort = new AbortController();\n this.connectionAborts.set(ws, connectionAbort);\n this.ws = ws;\n\n return new Promise<void>((resolve, reject) => {\n let settled = false;\n let opened = false;\n\n ws.on('open', () => {\n opened = true;\n this.reconnectAttempt = 0;\n void this.onOpen(\n ws,\n () => {\n if (!settled) {\n settled = true;\n resolve();\n }\n },\n (error) => {\n if (!settled) {\n settled = true;\n reject(error);\n }\n },\n );\n });\n\n ws.on('message', (data: unknown) => {\n this.onMessage(rawToString(data), ws);\n });\n\n ws.on('error', (err: Error) => {\n this.logger?.warn('bpp.ws_error', err);\n // Errors before open reject connect(); later failures flow through close.\n if (!opened && !settled) {\n settled = true;\n reject(new BorgeeError(`ws connect failed: ${err.message}`, 'bpp.connect_failed'));\n }\n });\n\n ws.on('close', (code: number, reason: Buffer) => {\n const closeReason = reason?.toString('utf8') ?? '';\n connectionAbort.abort();\n const wasCurrent = this.ws === ws;\n const closeSummary = `code=${code} reason=${closeReason || '<none>'} current=${wasCurrent}`;\n if (code === 1000 || this.closed) {\n this.logger?.info('bpp.ws_closed', closeSummary);\n } else {\n this.logger?.warn('bpp.ws_closed', closeSummary);\n }\n if (wasCurrent) {\n this.online = false;\n this.stopHeartbeat();\n this.ws = undefined;\n }\n\n const authFailed = code === WS_CLOSE_AUTH_FAILED;\n if (authFailed && wasCurrent) {\n // Permanently terminal: reuse `closed` so scheduleReconnect()/the reconnect timer both\n // short-circuit; a backoff loop here would re-flood the server forever.\n this.closed = true;\n this.terminal = true;\n this.logger?.error(\n 'bpp.auth_failed',\n `server closed with ${WS_CLOSE_AUTH_FAILED} (authentication failed); not reconnecting. reason=${closeReason}`,\n );\n this.handlers?.onStateChange({ status: 'error', reason: 'api_key_invalid' });\n }\n\n // The server does not replay action results, so disconnect rejects all pending operations.\n if (wasCurrent) {\n this.rejectAllPending(\n authFailed\n ? new BorgeeError(\n 'authentication failed: invalid or revoked API key',\n 'bpp.auth_failed',\n )\n : new BorgeeError('connection lost', 'bpp.connection_lost'),\n );\n }\n\n if (!settled) {\n settled = true;\n reject(\n authFailed\n ? new BorgeeError(\n 'authentication failed: invalid or revoked API key',\n 'bpp.auth_failed',\n )\n : new BorgeeError(\n opened ? 'ws closed before the handshake was written' : 'ws closed before open',\n opened ? 'bpp.handshake_incomplete' : 'bpp.connect_failed',\n ),\n );\n }\n\n if (authFailed || !wasCurrent) {\n if (authFailed && wasCurrent) {\n this.rejectReconnectWaiters(\n new BorgeeError(\n 'authentication failed: invalid or revoked API key',\n 'bpp.auth_failed',\n ),\n );\n }\n return; // do NOT scheduleReconnect\n }\n if (!this.autoReconnect) {\n this.rejectReconnectWaiters(new BorgeeError('connection lost', 'bpp.connection_lost'));\n return;\n }\n this.scheduleReconnect();\n });\n });\n }\n\n private async onOpen(\n ws: WebSocket,\n resolve: () => void,\n reject: (error: Error) => void,\n ): Promise<void> {\n const ctx = this.ctx;\n if (!ctx) return;\n\n const connectFrame: ConnectFrame = {\n type: 'connect',\n plugin_id: ctx.pluginId ?? '',\n token: '',\n version: PROTOCOL_VERSION,\n capabilities: JSON.stringify([\n 'semantic_action',\n 'inbound_message',\n 'read_file',\n 'execution_telemetry',\n ]),\n };\n this.sendTo(ws, connectFrame);\n\n try {\n if (!this.currentAgentId()) {\n const identity = await this.perform({ op: 'get_me' }, { handshake: true });\n const resolved = identity && typeof identity === 'object' ? (identity as User).id : '';\n if (!resolved)\n throw new BorgeeError(\n 'authenticated agent identity could not be resolved',\n 'bpp.identity_unresolved',\n );\n this.agentId = resolved;\n }\n // Readiness is the handshake having been written by a socket that knows who\n // it is, not an answer to it: the credential was accepted on the upgrade and\n // the identity is resolved above, so nothing is left to confirm. A server\n // that refuses the connection for any other reason closes it, and the next\n // gated action then fails against a closed socket rather than against a\n // deadline.\n this.startHeartbeat();\n this.goOnline(ws);\n this.logger?.info('bpp.connected');\n resolve();\n } catch (error) {\n const failure =\n error instanceof BorgeeError\n ? error\n : new BorgeeError(\n `agent identity handshake failed: ${String(error)}`,\n 'bpp.identity_unresolved',\n );\n reject(failure);\n this.failTerminal(failure, ws);\n }\n }\n\n private scheduleReconnect(): void {\n if (this.closed || this.terminal || !this.autoReconnect) return;\n this.reconnectAttempt += 1;\n const delay = Math.min(\n this.reconnectBaseMs * 2 ** (this.reconnectAttempt - 1),\n this.reconnectMaxMs,\n );\n this.handlers?.onStateChange({ status: 'reconnecting', attempt: this.reconnectAttempt });\n this.logger?.info(\n 'bpp.reconnect_scheduled',\n `attempt=${this.reconnectAttempt} delay_ms=${delay}`,\n );\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = undefined;\n if (this.closed) return;\n this.openSocket().catch((err) => {\n this.logger?.warn('bpp.reconnect_failed', err);\n // The close handler already scheduled the next reconnect.\n });\n }, delay);\n }\n\n private startHeartbeat(): void {\n this.stopHeartbeat();\n this.heartbeatTimer = setInterval(() => {\n if (!this.isOpen()) return;\n const frame: HeartbeatFrame = {\n type: 'heartbeat',\n plugin_id: this.ctx?.pluginId ?? '',\n agent_id: this.currentAgentId(),\n status: 'online',\n reason: '',\n timestamp: Date.now(),\n };\n this.send(frame);\n }, this.heartbeatIntervalMs);\n // Heartbeats do not keep the process alive.\n this.heartbeatTimer.unref?.();\n }\n\n private stopHeartbeat(): void {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = undefined;\n }\n }\n\n // ---- Inbound dispatch ----\n\n private onMessage(raw: string, source: WebSocket): void {\n if (source !== this.ws) return;\n let env: WireEnvelope;\n try {\n env = JSON.parse(raw) as WireEnvelope;\n } catch {\n this.logger?.warn('bpp.frame_parse_failed');\n return;\n }\n switch (env.type) {\n case 'request':\n void this.handleServerRequest(env);\n break;\n case 'inbound_message':\n this.handleInbound(env as unknown as InboundMessageFrame);\n break;\n case 'execution_telemetry_ack':\n this.handlers?.onExecutionTelemetryAck?.({\n eventId: (env as unknown as ExecutionTelemetryAckFrame).event_id,\n });\n break;\n case 'semantic_action_result':\n this.handleActionResult(env as unknown as SemanticActionResultFrame);\n break;\n case 'permission_denied':\n this.handlePermissionDenied(env as unknown as PermissionDeniedFrame);\n break;\n case 'agent_config_update':\n this.handleConfigUpdate(env as unknown as AgentConfigUpdateFrame, source);\n break;\n case 'pong':\n case 'ping':\n case 'agent_toggle':\n // Declared but not consumed: agent_toggle is the server's own switch on\n // inbound fan-out, and ping/pong keep the socket alive.\n break;\n default:\n // Unknown frames are ignored for forward compatibility, matching the server.\n break;\n }\n }\n\n private handleInbound(frame: InboundMessageFrame): void {\n this.inboundChain = this.inboundChain.then(() => {\n try {\n this.handlers?.onInbound(mapInbound(frame));\n } catch (error) {\n this.logger?.error('bpp.inbound_dispatch_failed', this.inboundFailure(error));\n }\n });\n }\n\n private handleActionResult(frame: SemanticActionResultFrame): void {\n const p = this.pending.get(frame.nonce);\n if (!p) return; // Ignore results that arrived after their operation was removed.\n this.pending.delete(frame.nonce);\n clearTimeout(p.timer);\n if (frame.status === RESULT_STATUS_OK) {\n let result: ActionResult;\n try {\n result = decodeActionResult(p.op, frame.payload, p.zoneInput);\n } catch (error) {\n p.reject(error as Error);\n return;\n }\n // Caching the resolved identity is what lets the later reconnect / task /\n // heartbeat frames stamp an agent id the caller never supplied.\n if (p.op === 'get_me' && result && typeof result === 'object') {\n const id = (result as User).id;\n if (id) this.agentId = id;\n }\n p.resolve(result);\n } else {\n p.reject(\n new BorgeeError(\n `semantic_action failed: ${frame.error}`,\n frame.error || 'bpp.semantic_action_failed',\n ),\n );\n }\n }\n\n private handlePermissionDenied(frame: PermissionDeniedFrame): void {\n const denied = {\n requestId: frame.request_id || undefined,\n attemptedAction: frame.attempted_action,\n requiredCapability: frame.required_capability || undefined,\n currentScope: frame.current_scope || undefined,\n };\n // A request ID matching a pending nonce rejects that operation; otherwise\n // the denial is delivered as an inbound event.\n const p = frame.request_id ? this.pending.get(frame.request_id) : undefined;\n if (p) {\n this.pending.delete(frame.request_id);\n clearTimeout(p.timer);\n p.reject(new PermissionDeniedError(denied));\n return;\n }\n this.handlers?.onPermissionDenied(denied);\n }\n\n private handleConfigUpdate(frame: AgentConfigUpdateFrame, source: WebSocket): void {\n const update: ConfigUpdate = {\n agentId: frame.agent_id,\n schemaVersion: frame.schema_version,\n blob: safeParseJSON(frame.blob),\n idempotencyKey: frame.idempotency_key,\n cursor: frame.cursor,\n };\n this.configChain = this.configChain\n .then(async () => {\n const signal = this.connectionAborts.get(source)?.signal;\n if (!signal || signal.aborted || source !== this.ws) return;\n const cached = this.configAcks.get(frame.idempotency_key);\n if (cached) {\n this.sendTo(source, cached);\n return;\n }\n const result = await this.applyConfig(update, signal);\n if (signal.aborted || source !== this.ws) return;\n try {\n this.handlers?.onConfigUpdate(update);\n } catch (error) {\n this.logger?.warn('bpp.config_observer_failed', error);\n }\n const ack: AgentConfigAckFrame = {\n type: 'agent_config_ack',\n cursor: frame.cursor,\n agent_id: frame.agent_id,\n schema_version: frame.schema_version,\n idempotency_key: frame.idempotency_key,\n status: result.status,\n reason: result.reason ?? '',\n applied_at: result.status === 'applied' ? Date.now() : 0,\n };\n this.configAcks.set(frame.idempotency_key, ack);\n this.sendTo(source, ack);\n })\n .catch((error) => {\n this.logger?.error('bpp.config_update_failed', error);\n const signal = this.connectionAborts.get(source)?.signal;\n if (!signal || signal.aborted || source !== this.ws) return;\n const ack: AgentConfigAckFrame = {\n type: 'agent_config_ack',\n cursor: frame.cursor,\n agent_id: frame.agent_id,\n schema_version: frame.schema_version,\n idempotency_key: frame.idempotency_key,\n status: 'rejected',\n reason: 'unknown',\n applied_at: 0,\n };\n this.sendTo(source, ack);\n });\n }\n\n private async applyConfig(update: ConfigUpdate, signal: AbortSignal): Promise<ConfigApplyResult> {\n const handler = this.handlers?.applyConfigUpdate;\n if (!handler) return { status: 'rejected', reason: 'unknown' };\n const timeoutMs = this.ctx?.configApplyTimeoutMs ?? this.configApplyTimeoutMs;\n const applyController = new AbortController();\n const relayAbort = () => applyController.abort(signal.reason);\n signal.addEventListener('abort', relayAbort, { once: true });\n let timer: ReturnType<typeof setTimeout> | undefined;\n let timedOut = false;\n try {\n if (signal.aborted) relayAbort();\n const result = await Promise.race([\n Promise.resolve().then(() => handler(update, { signal: applyController.signal })),\n new Promise<ConfigApplyResult>((resolve) => {\n timer = setTimeout(() => {\n timedOut = true;\n resolve({ status: 'rejected', reason: 'runtime_timeout' });\n applyController.abort(\n new BorgeeError('config apply timed out', 'bpp.config_apply_timeout'),\n );\n }, timeoutMs);\n }),\n ]);\n if (signal.aborted && !timedOut)\n throw new BorgeeError('stale config generation', 'bpp.stale_generation');\n if (!result || !['applied', 'rejected', 'stale'].includes(result.status)) {\n return { status: 'rejected', reason: 'unknown' };\n }\n const reason = CONFIG_ACK_REASONS.has(result.reason as ConfigAckReason)\n ? (result.reason as ConfigAckReason)\n : 'unknown';\n return result.status === 'applied'\n ? { status: 'applied' }\n : { status: result.status, reason };\n } catch (error) {\n this.logger?.warn('bpp.config_handler_failed', error);\n return { status: 'rejected', reason: 'unknown' };\n } finally {\n if (timer) clearTimeout(timer);\n signal.removeEventListener('abort', relayAbort);\n if (!applyController.signal.aborted) applyController.abort();\n }\n }\n\n private async handleServerRequest(env: WireEnvelope): Promise<void> {\n const id = env.id;\n if (!id) return;\n const data = (env.data ?? {}) as Record<string, unknown>;\n const action = typeof data.action === 'string' ? data.action : '';\n if (action === STOP_TURN_ACTION) {\n await this.answerStopTurn(id, data);\n return;\n }\n if (action === STOP_BACKGROUND_RUN_ACTION) {\n await this.answerStopBackgroundRun(id, data);\n return;\n }\n if (!this.serverRequestHandler) {\n this.send({ type: 'response', id, error: 'no_server_request_handler' });\n return;\n }\n try {\n const result = await this.serverRequestHandler(action, data);\n this.send({ type: 'response', id, data: result });\n } catch (err) {\n this.send({ type: 'response', id, error: err instanceof Error ? err.message : String(err) });\n }\n }\n\n // Precedence: the specific handler wins, an onServerRequest callback gets\n // stop_turn only while no specific one is registered, and with neither the\n // SDK answers the request itself. That order is what lets a plugin that\n // already switches on the action name inside one callback keep working\n // unchanged, and lets it move onto onStopTurn one action at a time.\n private async answerStopTurn(id: string, data: Record<string, unknown>): Promise<void> {\n const channelId = data.channel_id;\n if (typeof channelId !== 'string' || channelId === '') {\n this.send({ type: 'response', id, error: STOP_TURN_CHANNEL_ID_INVALID });\n return;\n }\n const specific = this.stopTurnHandler;\n const generic = this.serverRequestHandler;\n try {\n const answer = specific\n ? await specific(channelId)\n : generic\n ? await generic(STOP_TURN_ACTION, data)\n : // No handler is not the same as \"unsupported\": nothing was aborted,\n // which is what false already says, and the rail carries no third\n // value to draw that distinction with.\n { aborted: false };\n this.send({ type: 'response', id, data: this.asStopTurnResult(answer) });\n } catch (err) {\n this.logger?.warn('bpp.stop_turn_handler_failed', err);\n this.send({ type: 'response', id, error: SERVER_REQUEST_FAILED });\n }\n }\n\n // The rail's answer is one boolean and nothing else, so that is what goes on\n // the wire whatever the handler returned. A callback switching on action names\n // answers actions it does not implement with something else entirely \u2014 and\n // \"the callback does not implement stopping\" is one of the things false\n // already covers, so it is reported as such rather than as a broken agent.\n private asStopTurnResult(answer: unknown): StopTurnResult {\n const aborted = (answer as StopTurnResult | null | undefined)?.aborted;\n if (typeof aborted !== 'boolean') {\n this.logger?.warn('bpp.stop_turn_answer_unusable', answer);\n return { aborted: false };\n }\n return { aborted };\n }\n\n private async answerStopBackgroundRun(id: string, data: Record<string, unknown>): Promise<void> {\n const channelId = data.channel_id;\n const runId = data.run_id;\n if (\n typeof channelId !== 'string' ||\n channelId === '' ||\n typeof runId !== 'string' ||\n runId === ''\n ) {\n this.send({ type: 'response', id, error: STOP_BACKGROUND_RUN_TARGET_INVALID });\n return;\n }\n try {\n const answer = this.stopBackgroundRunHandler\n ? await this.stopBackgroundRunHandler(channelId, runId)\n : {\n outcome: 'unsupported',\n reason: 'Targeted background-run cancellation is not registered',\n };\n this.send({ type: 'response', id, data: this.asStopBackgroundRunResult(answer) });\n } catch (err) {\n this.logger?.warn('bpp.stop_background_run_handler_failed', err);\n this.send({ type: 'response', id, error: SERVER_REQUEST_FAILED });\n }\n }\n\n private asStopBackgroundRunResult(answer: unknown): StopBackgroundRunResult {\n const candidate = answer as StopBackgroundRunResult | null | undefined;\n if (!candidate || !['stopped', 'not_found', 'unsupported'].includes(candidate.outcome)) {\n return {\n outcome: 'unsupported',\n reason: 'Targeted background-run cancellation returned an unusable answer',\n };\n }\n return {\n outcome: candidate.outcome,\n ...(typeof candidate.reason === 'string' && candidate.reason !== ''\n ? { reason: candidate.reason }\n : {}),\n };\n }\n\n // ---- Task lifecycle output ----\n\n private sendTaskStarted(action: Extract<SemanticAction, { op: 'report_task_started' }>): void {\n const frame: TaskStartedFrame = {\n type: 'task_started',\n task_id: action.taskId,\n agent_id: this.currentAgentId(),\n channel_id: action.channelId,\n subject: action.subject,\n started_at: Date.now(),\n };\n this.send(frame);\n }\n\n private sendTaskFinished(action: Extract<SemanticAction, { op: 'report_task_finished' }>): void {\n const frame: TaskFinishedFrame = {\n type: 'task_finished',\n task_id: action.taskId,\n agent_id: this.currentAgentId(),\n channel_id: action.channelId,\n outcome: action.outcome,\n reason: action.reason ?? '',\n finished_at: Date.now(),\n };\n this.send(frame);\n }\n\n // sendActivity flattens the activity union onto one frame. The union is\n // how a producer says which shape it is reporting; the wire puts the\n // discriminator beside its payload with no wrapper object, matching both the\n // protocol this relays and inbound_message's own `kind`.\n //\n // The frame names no agent: identity is stamped by the server from the\n // authenticated connection, so nothing here can report as another agent.\n private sendActivity(action: Extract<SemanticAction, { op: 'report_activity' }>): void {\n const frame: AgentActivityFrame = {\n type: 'agent_activity',\n channel_id: action.channelId,\n sequence: action.sequence,\n shape: action.activity.shape,\n activity_id: '',\n label: '',\n description: '',\n kind: '',\n status: '',\n detail: '',\n parent_id: '',\n subagent: false,\n reason: '',\n stream: '',\n text: '',\n turn_state: '',\n run_id: '',\n run_state: '',\n started_at: 0,\n finished_at: 0,\n stop_supported: false,\n stop_unsupported_reason: '',\n };\n switch (action.activity.shape) {\n case 'activity':\n frame.activity_id = action.activity.id;\n frame.label = action.activity.label ?? '';\n frame.description = action.activity.description ?? '';\n frame.kind = action.activity.kind ?? '';\n frame.status = action.activity.status ?? '';\n frame.detail = action.activity.detail ?? '';\n frame.parent_id = action.activity.parentId ?? '';\n frame.subagent = action.activity.subagent ?? false;\n frame.background = action.activity.background;\n frame.background_state = action.activity.backgroundState;\n frame.follow_up_control = action.activity.followUpControl;\n frame.reason = action.activity.reason ?? '';\n if (action.activity.paths) frame.paths = action.activity.paths;\n break;\n case 'plan':\n frame.plan = action.activity.entries.map((entry) => ({\n label: entry.label,\n status: entry.status,\n }));\n break;\n case 'output':\n frame.stream = action.activity.stream;\n frame.text = action.activity.text;\n break;\n case 'turn':\n frame.turn_state = action.activity.state;\n break;\n case 'background_run':\n frame.run_id = action.activity.runId;\n frame.label = action.activity.label;\n frame.run_state = action.activity.state;\n frame.parent_id = action.activity.parentId ?? '';\n frame.started_at = action.activity.startedAt;\n frame.finished_at = action.activity.finishedAt ?? 0;\n frame.reason = action.activity.reason ?? '';\n frame.stop_supported = action.activity.stopSupported;\n frame.stop_unsupported_reason = action.activity.stopUnsupportedReason ?? '';\n break;\n case 'normalized':\n frame.protocol_version = action.activity.protocolVersion;\n frame.task_id = action.activity.taskId;\n frame.event = action.activity.event;\n break;\n }\n if (action.activity.shape === 'normalized') {\n const ids = [frame.channel_id, frame.task_id];\n if (ids.some((value) => new TextEncoder().encode(value).byteLength > 256)) return;\n if (new TextEncoder().encode(JSON.stringify(frame)).byteLength > 32_768) return;\n }\n this.send(frame);\n }\n\n private sendTyping(action: Extract<SemanticAction, { op: 'report_typing' }>): void {\n // Intentional inline frame (not from frames.generated.ts): agent typing deliberately\n // reuses the human \"typing\" wire shape {type,channel_id} rather than a generated BPP\n // frame; the server handles it on the plugin read loop (server task), no envelope.go churn.\n this.send({ type: 'typing', channel_id: action.channelId });\n }\n\n // ---- Low-level output ----\n\n private send(frame: unknown): void {\n if (!this.isOpen()) return;\n try {\n this.ws!.send(JSON.stringify(frame));\n } catch (err) {\n this.logger?.warn('bpp.send_failed', err);\n }\n }\n\n private sendTo(ws: WebSocket, frame: unknown): void {\n if (ws !== this.ws || ws.readyState !== WebSocket.OPEN) return;\n try {\n ws.send(JSON.stringify(frame));\n } catch (err) {\n this.logger?.warn('bpp.send_failed', err);\n }\n }\n\n private inboundFailure(error: unknown): BorgeeError {\n if (error instanceof BorgeeError) return error;\n return new BorgeeError(\n `inbound dispatch failed: ${String(error)}`,\n 'bpp.inbound_dispatch_failed',\n );\n }\n\n private failTerminal(error: BorgeeError, ws: WebSocket | undefined): void {\n if (this.terminal) return;\n this.logger?.error('bpp.terminal_failure', error);\n this.terminal = true;\n this.online = false;\n this.handlers?.onStateChange({ status: 'error', reason: 'unknown', code: error.code });\n this.rejectReconnectWaiters(error);\n this.rejectAllPending(error);\n try {\n ws?.close();\n } catch {\n // The terminal flag already prevents reconnect; close is best effort.\n }\n }\n\n private rejectAllPending(err: Error): void {\n for (const [nonce, p] of this.pending) {\n this.pending.delete(nonce);\n clearTimeout(p.timer);\n p.reject(err);\n }\n }\n\n private async waitUntilOnline(op: SemanticAction['op'], deadline: number): Promise<void> {\n if (this.online) return;\n if (this.closed || this.terminal || !this.autoReconnect) {\n throw new BorgeeError('transport not connected', 'bpp.not_connected');\n }\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const settle = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n if (timer) clearTimeout(timer);\n this.reconnectWaiters.delete(waiter);\n callback();\n };\n const waiter: ReconnectWaiter = {\n resolve: () => settle(resolve),\n reject: (error: Error) => settle(() => reject(error)),\n };\n this.reconnectWaiters.add(waiter);\n if (!this.reconnectWaiters.has(waiter)) return;\n const remaining = Math.max(0, deadline - Date.now());\n timer = setTimeout(() => {\n settle(() =>\n reject(new BorgeeError(`semantic_action ${op} timed out`, 'bpp.action_timeout')),\n );\n }, remaining);\n if (this.online) this.resolveReconnectWaiters();\n });\n }\n\n private resolveReconnectWaiters(): void {\n if (!this.online) return;\n for (const waiter of [...this.reconnectWaiters]) waiter.resolve();\n }\n\n private rejectReconnectWaiters(error: Error): void {\n for (const waiter of [...this.reconnectWaiters]) waiter.reject(error);\n }\n}\n\n// ---- Pure mappings ----\n\n/** Map an HTTP base URL to the plugin WebSocket endpoint. */\nexport function pluginWsUrl(baseUrl: string): string {\n const trimmed = baseUrl.replace(/\\/+$/, '');\n const wsBase = trimmed.replace(/^http:/, 'ws:').replace(/^https:/, 'wss:');\n return `${wsBase}/ws/plugin`;\n}\n\n/** Encode a SemanticAction as the operation-specific server payload. */\nexport function encodeActionPayload(action: SemanticAction): Record<string, unknown> {\n switch (action.op) {\n case 'send_message':\n return {\n channel_id: action.channelId,\n content: action.body,\n reply_to_id: action.replyToId,\n content_type: action.contentType,\n };\n case 'edit_message':\n return { message_id: action.messageId, content: action.body };\n case 'delete_message':\n return { message_id: action.messageId };\n case 'react':\n return {\n message_id: action.messageId,\n emoji: action.emoji,\n removed: action.removed ?? false,\n };\n case 'create_dm':\n return { user_id: action.userId };\n case 'get_me':\n return {};\n case 'read_channel_history':\n return {\n channel_id: action.channelId,\n before: action.before,\n after: action.after,\n limit: action.limit,\n };\n case 'list_channel_files':\n return { channel_id: action.channelId };\n case 'read_channel_file':\n return { channel_id: action.channelId, path: action.path, text_only: action.textOnly };\n case 'publish_channel_file':\n return {\n channel_id: action.channelId,\n path: action.path,\n content_type: action.contentType,\n base64: action.base64,\n overwrite: action.overwrite ?? false,\n };\n case 'list_users':\n case 'list_channels':\n return {};\n case 'list_zones':\n validateListZonesInput(action);\n return { guild_id: action.guildId, limit: action.limit, after: action.after };\n case 'create_channel':\n validateChannelPlacement(action.parentId);\n return {\n guild_id: action.guildId,\n name: action.name,\n parent_id: action.parentId,\n topic: action.topic,\n visibility: action.visibility,\n member_ids: action.memberIds,\n };\n case 'update_channel':\n rejectChannelPlacementUpdate(action);\n return {\n channel_id: action.channelId,\n name: action.name,\n visibility: action.visibility,\n archived: action.archived,\n };\n case 'set_topic':\n return { channel_id: action.channelId, topic: action.topic };\n case 'delete_channel':\n return { channel_id: action.channelId };\n case 'create_task':\n return {\n channel_id: action.channelId,\n title: action.title,\n description: action.description,\n assignee_id: action.assigneeId,\n heartbeat_interval_ms: action.heartbeat_interval_ms,\n heartbeat_prompt: action.heartbeat_prompt,\n };\n case 'list_tasks':\n // Send only the scope actually supplied \u2014 both keys at once is\n // ambiguous and the server rejects it.\n return action.channelId ? { channel_id: action.channelId } : { guild_id: action.guildId };\n case 'get_task':\n return { task_id: action.taskId };\n case 'update_task':\n // Per-field `!== undefined`: an assigneeId of '' is the valid intent\n // \"unassign\", which a truthiness check would fold into \"unchanged\".\n return {\n task_id: action.taskId,\n ...(action.status !== undefined ? { status: action.status } : {}),\n ...(action.assigneeId !== undefined ? { assignee_id: action.assigneeId } : {}),\n ...(action.title !== undefined ? { title: action.title } : {}),\n ...(action.description !== undefined ? { description: action.description } : {}),\n ...(action.heartbeat_interval_ms !== undefined\n ? { heartbeat_interval_ms: action.heartbeat_interval_ms }\n : {}),\n ...(action.heartbeat_prompt !== undefined\n ? { heartbeat_prompt: action.heartbeat_prompt }\n : {}),\n };\n case 'set_task_property':\n return { task_id: action.taskId, key: action.key, value: action.value };\n case 'delete_task_property':\n return { task_id: action.taskId, key: action.key };\n case 'list_task_property_definitions':\n return {};\n default:\n return {};\n }\n}\n\n/** The semantic_action_result payload (a JSON string) decoded into the op's domain object. */\nexport function decodeActionResult(op: SemanticAction['op'], payloadJSON: string, zoneInput?: ListZonesInput): ActionResult {\n if (op === 'list_zones' || op === 'list_channels' || op === 'create_channel' || op === 'update_channel') {\n let value: unknown;\n try {\n value = JSON.parse(payloadJSON);\n } catch (cause) {\n throw new BorgeeError('Invalid JSON in channel result', 'bpp.invalid_result', { cause });\n }\n if (op === 'list_zones') return decodeZonePage(value, zoneInput);\n if (op === 'list_channels') return decodeChannels(value);\n return decodeChannel(value);\n }\n const p = safeParseJSON(payloadJSON) as Record<string, unknown>;\n switch (op) {\n case 'send_message':\n return { messageId: String(p.message_id ?? '') } satisfies SentMessage;\n case 'create_dm':\n return { channelId: String(p.channel_id ?? '') };\n case 'get_me':\n return {\n id: String(p.id ?? ''),\n displayName: String(p.display_name ?? ''),\n kind: p.role === 'agent' ? 'agent' : 'user',\n } satisfies User;\n case 'edit_message':\n case 'delete_message':\n case 'react':\n return undefined; // These client methods return void.\n case 'read_channel_history': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((m) => ({\n id: String(m.id ?? ''),\n channelId: String(m.channel_id ?? ''),\n authorId: String(m.author_id ?? ''),\n body: String(m.body ?? ''),\n contentType: m.content_type ? String(m.content_type) : undefined,\n type: m.msg_type ? String(m.msg_type) : m.type ? String(m.type) : undefined,\n replyToId: m.reply_to_id ? String(m.reply_to_id) : undefined,\n createdAt: Number(m.created_at ?? 0),\n editedAt: m.edited_at != null ? Number(m.edited_at) : undefined,\n })) satisfies Message[];\n }\n case 'list_channel_files': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((file) => ({\n id: String(file.id ?? ''),\n ownerUserId: String(file.owner_user_id ?? ''),\n channelId: String(file.channel_id ?? ''),\n path: String(file.path ?? ''),\n parentPath: String(file.parent_path ?? ''),\n name: String(file.name ?? ''),\n isDirectory: Boolean(file.is_directory),\n mimeType: String(file.mime_type ?? ''),\n sizeBytes: Number(file.size_bytes ?? 0),\n source: String(file.source ?? ''),\n sourceMessageId: String(file.source_message_id ?? ''),\n createdAt: Number(file.created_at ?? 0),\n updatedAt: Number(file.updated_at ?? 0),\n })) satisfies ChannelFile[];\n }\n case 'read_channel_file': {\n const content = p as Record<string, unknown>;\n return {\n path: String(content.path ?? ''),\n filename: String(content.filename ?? ''),\n contentType: String(content.content_type ?? ''),\n sizeBytes: Number(content.size_bytes ?? 0),\n ...(content.base64 != null ? { base64: String(content.base64) } : {}),\n ...(content.text != null ? { text: String(content.text) } : {}),\n };\n }\n case 'publish_channel_file': {\n const file = p as Record<string, unknown>;\n return {\n id: String(file.id ?? ''),\n ownerUserId: String(file.owner_user_id ?? ''),\n channelId: String(file.channel_id ?? ''),\n path: String(file.path ?? ''),\n parentPath: String(file.parent_path ?? ''),\n name: String(file.name ?? ''),\n isDirectory: Boolean(file.is_directory),\n mimeType: String(file.mime_type ?? ''),\n sizeBytes: Number(file.size_bytes ?? 0),\n source: String(file.source ?? ''),\n sourceMessageId: String(file.source_message_id ?? ''),\n createdAt: Number(file.created_at ?? 0),\n updatedAt: Number(file.updated_at ?? 0),\n } satisfies ChannelFile;\n }\n case 'list_users': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((u) => ({\n id: String(u.id ?? ''),\n displayName: String(u.display_name ?? ''),\n kind: u.kind === 'agent' ? 'agent' : 'user',\n })) satisfies User[];\n }\n case 'set_topic':\n case 'delete_channel':\n return undefined; // client methods return void\n case 'create_task':\n case 'get_task':\n case 'update_task':\n case 'set_task_property':\n case 'delete_task_property':\n return decodeTask(p);\n case 'list_task_property_definitions': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((d) => ({\n key: String(d.key ?? ''),\n label: String(d.label ?? ''),\n render: (d.render === 'url' || d.render === 'identifier'\n ? d.render\n : 'text') as TaskPropertyRender,\n })) satisfies TaskPropertyDefinition[];\n }\n case 'list_tasks': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map(decodeTask) satisfies Task[];\n }\n default:\n return p;\n }\n}\n\n/**\n * Task wire shape (snake_case) -> SDK domain object (camelCase), as Message does.\n *\n * Every field taskWire sends is decoded here. A field the server sends and this\n * function drops is invisible to plugins and silently un-round-trippable \u2014 a\n * plugin can write a heartbeat setting and never read it back.\n */\nfunction decodeTask(t: Record<string, unknown>): Task {\n return {\n id: String(t.id ?? ''),\n channelId: String(t.channel_id ?? ''),\n guildId: String(t.guild_id ?? ''),\n seq: Number(t.seq ?? 0),\n title: String(t.title ?? ''),\n description: String(t.description ?? ''),\n status: String(t.status ?? ''),\n // Nullable FK: unassigned stays null rather than decaying to ''.\n assigneeId: t.assignee_id != null ? String(t.assignee_id) : null,\n createdBy: String(t.created_by ?? ''),\n messageId: t.message_id != null ? String(t.message_id) : null,\n threadId: t.thread_id != null ? String(t.thread_id) : null,\n createdAt: Number(t.created_at ?? 0),\n updatedAt: Number(t.updated_at ?? 0),\n heartbeatIntervalMs: Number(t.heartbeat_interval_ms ?? 0),\n heartbeatPrompt: String(t.heartbeat_prompt ?? ''),\n participants: Array.isArray(t.participants) ? t.participants.map((p) => String(p)) : [],\n properties: decodeTaskProperties(t.properties),\n };\n}\n\n/**\n * Property values are strings on the wire; anything else means the server and\n * this SDK disagree about the shape, so it is dropped rather than coerced into\n * a plausible-looking \"[object Object]\".\n */\nfunction decodeTaskProperties(raw: unknown): Record<string, string> {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) return {};\n const out: Record<string, string> = {};\n for (const [key, value] of Object.entries(raw as Record<string, unknown>)) {\n if (typeof value === 'string') out[key] = value;\n }\n return out;\n}\n\n/** InboundMessageFrame \u2192 InboundMessageEvent, dispatched on the frame's kind. */\nexport function mapInbound(frame: InboundMessageFrame): InboundMessageEvent {\n const kind = frame.kind as InboundKind;\n const base: InboundMessageEvent = {\n kind,\n channelId: frame.channel_id,\n channelType: frame.channel_type,\n ...(frame.conversation_context\n ? {\n conversationContext: {\n guildId: frame.conversation_context.guild_id,\n topLevelChannelId: frame.conversation_context.top_level_channel_id,\n ...(frame.conversation_context.thread_id\n ? { threadId: frame.conversation_context.thread_id }\n : {}),\n ...(frame.conversation_context.task_id\n ? { taskId: frame.conversation_context.task_id }\n : {}),\n },\n }\n : {}),\n authorName: frame.author_name,\n createdAt: frame.created_at,\n };\n if (frame.execution_id && frame.telemetry_context) {\n base.executionGrant = {\n executionId: frame.execution_id,\n telemetryContext: frame.telemetry_context,\n };\n }\n switch (kind) {\n case 'message':\n case 'mention': {\n base.message = mapMessage(frame);\n break;\n }\n case 'edited': {\n const m = mapMessage(frame);\n m.editedAt = frame.created_at;\n base.message = m;\n break;\n }\n case 'deleted':\n base.messageId = frame.message_id;\n break;\n case 'reaction':\n base.messageId = frame.message_id;\n base.reaction = {\n emoji: frame.emoji,\n userId: frame.reactor_id,\n added: frame.reaction_added,\n };\n break;\n default:\n break;\n }\n return base;\n}\n\nfunction mapMessage(frame: InboundMessageFrame): Message {\n const message: Message = {\n id: frame.message_id,\n channelId: frame.channel_id,\n authorId: frame.author_id,\n body: frame.body,\n contentType: frame.content_type || undefined,\n type: frame.msg_type || undefined,\n createdAt: frame.created_at,\n };\n if (frame.attachments && frame.attachments.length > 0) {\n message.attachments = frame.attachments.map((a) => ({\n url: a.url,\n filename: a.filename || undefined,\n contentType: a.content_type,\n sizeBytes: a.size_bytes || undefined,\n }));\n }\n return message;\n}\n\nfunction safeParseJSON(s: string): unknown {\n if (!s) return undefined;\n try {\n return JSON.parse(s);\n } catch {\n return undefined;\n }\n}\n\nfunction rawToString(data: unknown): string {\n if (typeof data === 'string') return data;\n if (data instanceof Buffer) return data.toString('utf8');\n if (data instanceof ArrayBuffer) return Buffer.from(data).toString('utf8');\n if (Array.isArray(data)) return Buffer.concat(data as Buffer[]).toString('utf8');\n return String(data);\n}\n", "import createWebSocketStream from './lib/stream.js';\nimport extension from './lib/extension.js';\nimport PerMessageDeflate from './lib/permessage-deflate.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport subprotocol from './lib/subprotocol.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport {\n createWebSocketStream,\n extension,\n PerMessageDeflate,\n Receiver,\n Sender,\n subprotocol,\n WebSocket,\n WebSocketServer\n};\n\nexport default WebSocket;\n", "import type { PermissionDenied } from './types.js';\n\n// Codes retain the server's machine-readable failure classification.\nexport class BorgeeError extends Error {\n readonly code: string;\n constructor(message: string, code: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'BorgeeError';\n this.code = code;\n }\n}\n\n// Permission failures include the capability and scope needed by the caller.\nexport class PermissionDeniedError extends BorgeeError {\n readonly requestId?: string;\n readonly attemptedAction: string;\n readonly requiredCapability?: string;\n readonly currentScope?: string;\n\n constructor(info: PermissionDenied) {\n super(info.reason ?? `permission denied: ${info.attemptedAction}`, 'permission_denied');\n this.name = 'PermissionDeniedError';\n this.requestId = info.requestId;\n this.attemptedAction = info.attemptedAction;\n this.requiredCapability = info.requiredCapability;\n this.currentScope = info.currentScope;\n }\n}\n", "import { BorgeeError } from './errors.js';\nimport type { ListZonesInput } from './types.js';\n\nexport const isZoneId = (value: unknown): value is string =>\n typeof value === 'string' && /^[A-Za-z0-9_-]{1,128}$/.test(value);\n\nexport const validateChannelPlacement = (parentId: unknown): void => {\n if (parentId !== null && (!isZoneId(parentId) || parentId === 'null')) {\n throw new BorgeeError('parentId is required: pass null for Default or a Zone ID', 'channel.placement_invalid');\n }\n};\n\nexport const rejectChannelPlacementUpdate = (input: object): void => {\n for (const field of ['parentId', 'parent_id', 'channelType', 'channel_type', 'kind']) {\n if (Object.hasOwn(input, field)) {\n throw new BorgeeError(`${field} cannot be changed after channel creation`, 'channel.field_immutable');\n }\n }\n};\n\nexport const validateListZonesInput = (input: ListZonesInput): void => {\n if (!isZoneId(input.guildId)) {\n throw new BorgeeError('guildId must be a nonempty opaque ID', 'zone.input_invalid');\n }\n if (input.limit !== undefined && (!Number.isInteger(input.limit) || input.limit < 1 || input.limit > 50)) {\n throw new BorgeeError('limit must be an integer between 1 and 50', 'zone.input_invalid');\n }\n if (input.after !== undefined && !isZoneId(input.after)) {\n throw new BorgeeError('after must be a nonempty opaque Zone ID', 'zone.input_invalid');\n }\n};\n", "import { BorgeeError } from '../errors.js';\nimport { isZoneId } from '../channel-contracts.js';\nimport type { Channel, ListZonesInput, ZoneDTO, ZonePageDTO } from '../types.js';\n\nconst invalidResult = (field: string): BorgeeError =>\n new BorgeeError(`Invalid channel result: ${field}`, 'bpp.invalid_result');\n\nconst record = (value: unknown, field: string): Record<string, unknown> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw invalidResult(field);\n return value as Record<string, unknown>;\n};\n\nconst requiredString = (value: unknown, field: string): string => {\n if (typeof value !== 'string') throw invalidResult(field);\n return value;\n};\n\nexport const decodeChannel = (value: unknown): Channel => {\n const channel = record(value, 'channel');\n if (!isZoneId(channel.id)) throw invalidResult('id');\n if (channel.parent_id !== null && !isZoneId(channel.parent_id)) throw invalidResult('parent_id');\n return {\n id: channel.id,\n name: requiredString(channel.name, 'name'),\n kind: requiredString(channel.kind, 'kind'),\n parentId: channel.parent_id,\n };\n};\n\nexport const decodeChannels = (value: unknown): Channel[] => {\n if (!Array.isArray(value)) throw invalidResult('channels');\n return value.map(decodeChannel);\n};\n\nconst decodeZone = (value: unknown): ZoneDTO => {\n const zone = record(value, 'zone');\n if (!isZoneId(zone.id)) throw invalidResult('zone.id');\n const name = requiredString(zone.name, 'zone.name');\n if (/^\\p{White_Space}|\\p{White_Space}$/u.test(name) || [...name].length < 1 || [...name].length > 100 || /[\\p{Cc}\\p{Cs}]/u.test(name)) {\n throw invalidResult('zone.name');\n }\n return { id: zone.id, name };\n};\n\nexport const decodeZonePage = (value: unknown, input?: ListZonesInput): ZonePageDTO => {\n const page = record(value, 'Zone page');\n if (!Array.isArray(page.zones)) throw invalidResult('zones');\n const limit = input?.limit ?? 20;\n if (page.zones.length > limit) throw invalidResult('zones exceed the requested limit');\n const zones = page.zones.map(decodeZone);\n let previous = input?.after;\n for (const zone of zones) {\n if (previous !== undefined && zone.id <= previous) throw invalidResult('Zone IDs must follow the cursor in ascending order');\n previous = zone.id;\n }\n const nextAfter = page.next_after;\n if (nextAfter !== null) {\n if (!isZoneId(nextAfter) || zones.length !== limit || nextAfter !== zones.at(-1)?.id) {\n throw invalidResult('next_after must be null or the final ID of a full page');\n }\n }\n return { zones, nextAfter };\n};\n", "import type { AgentActivity, ReportActivityInput } from './types.js';\n\n/**\n * How long one shape of one activity waits before it may be reported again.\n *\n * A producer's progress callbacks fire far faster than anyone reads: an agent\n * streaming an answer produces tens of updates a second. Roughly six a second\n * is about as fast as a reader can follow a line that keeps changing, so this\n * is where the rail's rate is set \u2014 every hop downstream carries whatever\n * arrives, and the browser's own coalescing is a second line of defence rather\n * than the first.\n */\nconst DEFAULT_THROTTLE_MS = 150;\n\n/**\n * How much of a stream's tail travels.\n *\n * Deliberately not an option. It is a bound on what this rail carries rather\n * than a preference: the server truncates on the way in regardless, so a caller\n * allowed to raise it would buy nothing but bytes discarded a hop later.\n */\nconst OUTPUT_TAIL_CHARS = 2000;\n\n/**\n * Runs a callback later, and answers a function that calls it off.\n *\n * Injected so that the one place the runtimes genuinely differ stays in one\n * small adapter. The default holds nothing open: a pending window is a report\n * nothing recovers, and delaying a process's exit to deliver one is the wrong\n * trade \u2014 which is also what keeps this SDK and the Python one agreeing at\n * shutdown, since an asyncio timer cannot hold its loop open at all.\n */\nexport type ActivityScheduler = (callback: () => void, delayMs: number) => () => void;\n\nconst defaultScheduler: ActivityScheduler = (callback, delayMs) => {\n const timer = setTimeout(callback, delayMs);\n timer.unref?.(); // no-op in a browser, where setTimeout answers a number\n return () => clearTimeout(timer);\n};\n\n/** Cuts on a code point boundary: a tail beginning on a low surrogate renders as a replacement glyph. */\nfunction outputTail(text: string): string {\n if (text.length <= OUTPUT_TAIL_CHARS) {\n return text;\n }\n const tail = text.slice(text.length - OUTPUT_TAIL_CHARS);\n return /^[\\uDC00-\\uDFFF]/.test(tail) ? tail.slice(1) : tail;\n}\n\n/** Every shape a producer reports. The turn boundary is this class's own and never arrives from outside. */\ntype ReportedShape = Exclude<AgentActivity, { shape: 'turn' | 'background_run' | 'normalized' }>;\n\n/**\n * Which reports supersede each other, matching how the server folds them in: a\n * tool call is superseded only by a later report about the same call, a plan is\n * replaced whole so any plan supersedes any earlier one, and the two text\n * streams are independent tails.\n *\n * Keying per activity id rather than per agent is what keeps a burst of ten\n * distinct tool calls ten reports instead of one.\n */\nfunction throttleKey(activity: ReportedShape): string {\n switch (activity.shape) {\n case 'activity':\n return `activity:${activity.id}`;\n case 'plan':\n return 'plan';\n case 'output':\n return `output:${activity.stream}`;\n }\n}\n\ninterface ThrottleWindow {\n latest: ReportedShape | null;\n cancel: (() => void) | null;\n}\n\n/** What a caller chooses. Delivery and the counter are the client's, not a producer's. */\nexport interface ReportTurnActivityInput {\n channelId: string;\n /**\n * Whether this turn is still the one its channel is running. Asked again at\n * every send rather than once at the start, because a window opened by one\n * turn can close after another has replaced it \u2014 including the window a\n * turn's own ending would flush. A producer with no notion of supersession\n * leaves it out.\n */\n canReport?: () => boolean;\n throttleMs?: number;\n}\n\n/** Everything the reporter needs. `deliver` is the client's own send, which stamps the sequence. */\nexport interface TurnActivityReporterOptions extends ReportTurnActivityInput {\n deliver: (input: ReportActivityInput) => void;\n scheduler?: ActivityScheduler;\n}\n\n/**\n * Reports one turn's work, bounded at the producer.\n *\n * One of these belongs to one turn, so the windows it holds are that turn's and\n * nothing carries into the next. Its two boundary reports are what let a reader\n * say whether an agent is working without inferring it from an entry nobody\n * closed, and they ride the same frame as the shapes they bracket, so an ending\n * cannot overtake the work it ends.\n *\n * Coalescing to the newest value loses nothing because every shape carries\n * absolute state rather than a delta. That is the property the whole design\n * rests on, and a shape that ever carried a delta would break it.\n *\n * One caveat a reader cannot infer: a window still open when the process exits\n * is dropped rather than delivered, in both this SDK and the Python one. The\n * trailing value is delivered if the process lives long enough, which `end()`\n * makes true for every turn that ends normally by draining before it reports\n * the boundary.\n */\nexport class TurnActivityReporter {\n private readonly windows = new Map<string, ThrottleWindow>();\n private readonly throttleMs: number;\n private readonly scheduler: ActivityScheduler;\n private ended = false;\n\n constructor(private readonly options: TurnActivityReporterOptions) {\n this.throttleMs = options.throttleMs ?? DEFAULT_THROTTLE_MS;\n this.scheduler = options.scheduler ?? defaultScheduler;\n }\n\n start(): void {\n this.report({ shape: 'turn', state: 'started' });\n }\n\n progress(activity: ReportedShape): void {\n if (this.ended) {\n return;\n }\n this.offer(\n activity.shape === 'output'\n ? { ...activity, text: outputTail(activity.text) }\n : activity,\n );\n }\n\n /**\n * Ends the turn. What the windows still hold goes first, so the last thing a\n * reader sees of a turn is that turn's own last word rather than whatever\n * happened to fall outside a window.\n */\n end(): void {\n if (this.ended) {\n return;\n }\n this.ended = true;\n this.drain();\n this.report({ shape: 'turn', state: 'ended' });\n }\n\n private offer(activity: ReportedShape): void {\n const key = throttleKey(activity);\n const open = this.windows.get(key);\n if (open) {\n open.latest = activity;\n return;\n }\n this.report(activity);\n this.openWindow(key);\n }\n\n private openWindow(key: string): void {\n const window: ThrottleWindow = { latest: null, cancel: null };\n window.cancel = this.scheduler(() => {\n this.windows.delete(key);\n if (window.latest) {\n this.offer(window.latest);\n }\n }, this.throttleMs);\n this.windows.set(key, window);\n }\n\n private drain(): void {\n const held = [...this.windows.values()];\n this.windows.clear();\n for (const window of held) {\n window.cancel?.();\n if (window.latest) {\n this.report(window.latest);\n }\n }\n }\n\n private report(activity: AgentActivity): void {\n if (this.options.canReport && !this.options.canReport()) {\n return;\n }\n this.options.deliver({ channelId: this.options.channelId, activity });\n }\n}\n", "import { BppTransport } from './bpp/bpp-transport.js';\nimport { BorgeeError } from './errors.js';\nimport { validateChannelPlacement, rejectChannelPlacementUpdate, validateListZonesInput } from './channel-contracts.js';\nimport { TurnActivityReporter, type ReportTurnActivityInput } from './activity-reporter.js';\nimport type { Transport, TransportContext, InboundHandlers } from './transport.js';\nimport type {\n Channel,\n ChannelFile,\n ChannelFileContent,\n PublishChannelFileInput,\n ListZonesInput,\n ZonePageDTO,\n ReportActivityInput,\n ConfigUpdate,\n ConfigUpdateHandler,\n ConnectionState,\n ExecutionTelemetryAck,\n ExecutionTelemetryFrame,\n CreateChannelInput,\n CreateTaskInput,\n DeleteChannelInput,\n DeleteTaskPropertyInput,\n InboundMessageEvent,\n Logger,\n Message,\n PermissionDenied,\n ReadHistoryInput,\n ReportTaskFinishedInput,\n ReportTaskStartedInput,\n SendMessageInput,\n SentMessage,\n ServerRequestHandler,\n SetTaskPropertyInput,\n SetTopicInput,\n StopTurnHandler,\n StopBackgroundRunHandler,\n Task,\n TaskPropertyDefinition,\n UpdateChannelInput,\n UpdateTaskInput,\n Unsubscribe,\n User,\n} from './types.js';\n\nexport interface BorgeePluginOptions {\n baseUrl: string;\n apiKey: string;\n agentId?: string; // Omit to resolve the Agent through get_me during connect.\n pluginId?: string;\n logger?: Logger;\n configUpdateHandler?: ConfigUpdateHandler;\n configApplyTimeoutMs?: number;\n}\n\ninterface EventMap {\n message: InboundMessageEvent;\n configUpdate: ConfigUpdate;\n permissionDenied: PermissionDenied;\n connectionState: ConnectionState;\n executionTelemetryAck: ExecutionTelemetryAck;\n}\n\nexport interface BorgeePluginClient {\n connect(): Promise<void>;\n close(): Promise<void>;\n readonly agentId: string;\n readonly connectionState: ConnectionState;\n\n sendMessage(input: SendMessageInput): Promise<SentMessage>;\n editMessage(input: { messageId: string; body: string }): Promise<void>;\n deleteMessage(input: { messageId: string }): Promise<void>;\n react(input: { messageId: string; emoji: string }): Promise<void>;\n unreact(input: { messageId: string; emoji: string }): Promise<void>;\n readHistory(input: ReadHistoryInput): Promise<Message[]>;\n createDm(input: { userId: string }): Promise<{ channelId: string }>;\n getMe(): Promise<User>;\n listUsers(): Promise<User[]>;\n listChannelFiles(input: { channelId: string }): Promise<ChannelFile[]>;\n readChannelFile(input: { channelId: string; path: string; textOnly: boolean }): Promise<ChannelFileContent>;\n publishChannelFile(input: PublishChannelFileInput): Promise<ChannelFile>;\n listChannels(): Promise<Channel[]>;\n listZones(input: ListZonesInput): Promise<ZonePageDTO>;\n createChannel(input: CreateChannelInput): Promise<Channel>;\n updateChannel(input: UpdateChannelInput): Promise<Channel>;\n setTopic(input: SetTopicInput): Promise<void>;\n deleteChannel(input: DeleteChannelInput): Promise<void>;\n\n // Task CRUD (BPP semantic actions)\n createTask(input: CreateTaskInput): Promise<Task>;\n listTasks(input: { channelId: string }): Promise<Task[]>;\n listGuildTasks(input: { guildId: string }): Promise<Task[]>;\n getTask(input: { taskId: string }): Promise<Task>;\n updateTask(input: UpdateTaskInput): Promise<Task>;\n\n // Task properties (one key per call)\n setTaskProperty(input: SetTaskPropertyInput): Promise<Task>;\n deleteTaskProperty(input: DeleteTaskPropertyInput): Promise<Task>;\n listTaskPropertyDefinitions(): Promise<TaskPropertyDefinition[]>;\n\n reportTaskStarted(input: ReportTaskStartedInput): void;\n reportTaskFinished(input: ReportTaskFinishedInput): void;\n\n /**\n * Report what this agent is doing inside a turn to everyone who may read the\n * channel. Fire-and-forget and never persisted: what is lost is a strip that\n * stays stale until the next report, never a fact.\n */\n reportActivity(input: ReportActivityInput): void;\n\n /** Sends metadata-only execution telemetry. Delivery durability is owned by the caller. */\n reportExecutionTelemetry(frame: ExecutionTelemetryFrame): void;\n\n /**\n * Open a reporter for one turn: it brackets the turn with its boundaries and\n * bounds how often a shape may be reported, so a producer whose progress\n * callbacks fire tens of times a second does not put that on the wire.\n */\n reportTurnActivity(input: ReportTurnActivityInput): TurnActivityReporter;\n\n /** Emit one typing pulse for channelId. Fire-and-forget. */\n reportTyping(channelId: string): void;\n\n /** Emit a \"typing\" keepalive for channelId immediately and every 2s until the returned stop() is called. Fire-and-forget. */\n startTyping(channelId: string): () => void;\n\n // Register one server-to-plugin request hook. Passing undefined clears it;\n // transports without a reverse request channel treat this as a no-op.\n onServerRequest(handler: ServerRequestHandler | undefined): void;\n\n /**\n * Register the handler asked to stop the turn running in one channel.\n * Registering it takes stop_turn away from any onServerRequest callback,\n * which keeps serving every other action; pass undefined to hand it back.\n * With neither registered the SDK answers { aborted: false } itself, and so\n * does whichever handler answers without a boolean `aborted` \u2014 a callback\n * that does not implement stopping aborted nothing, which is what false says.\n */\n onStopTurn(handler: StopTurnHandler | undefined): void;\n\n /** Register targeted cancellation for one background run. Missing handlers explicitly answer unsupported. */\n onStopBackgroundRun(handler: StopBackgroundRunHandler | undefined): void;\n\n on<K extends keyof EventMap>(event: K, handler: (e: EventMap[K]) => void): Unsubscribe;\n}\n\nconst noopLogger: Logger = {\n debug() {},\n info() {},\n warn() {},\n error() {},\n};\n\nclass Client implements BorgeePluginClient {\n private readonly opts: BorgeePluginOptions;\n private readonly t: Transport;\n private readonly logger: Logger;\n private _agentId: string;\n private activitySequence = 0;\n private _state: ConnectionState = { status: 'connecting' };\n private readonly listeners: { [K in keyof EventMap]: Set<(e: EventMap[K]) => void> } = {\n message: new Set(),\n configUpdate: new Set(),\n permissionDenied: new Set(),\n connectionState: new Set(),\n executionTelemetryAck: new Set(),\n };\n\n constructor(opts: BorgeePluginOptions, transport: Transport) {\n this.opts = opts;\n this.t = transport;\n this.logger = opts.logger ?? noopLogger;\n this._agentId = opts.agentId ?? '';\n }\n\n get agentId(): string {\n return this._agentId;\n }\n get connectionState(): ConnectionState {\n return this._state;\n }\n\n async connect(): Promise<void> {\n this.t.subscribe(this.handlers());\n await this.t.connect(this.context());\n if (!this._agentId) {\n this._agentId = this.t.getResolvedAgentId?.() ?? '';\n if (!this._agentId) {\n const me = await this.getMe();\n this._agentId = me.id;\n }\n }\n }\n\n async close(): Promise<void> {\n await this.t.close();\n }\n\n async sendMessage(input: SendMessageInput): Promise<SentMessage> {\n return (await this.t.perform({\n op: 'send_message',\n channelId: input.channelId,\n body: input.body,\n replyToId: input.replyToId,\n contentType: input.contentType,\n })) as SentMessage;\n }\n\n async editMessage(input: { messageId: string; body: string }): Promise<void> {\n await this.t.perform({ op: 'edit_message', messageId: input.messageId, body: input.body });\n }\n\n async deleteMessage(input: { messageId: string }): Promise<void> {\n await this.t.perform({ op: 'delete_message', messageId: input.messageId });\n }\n\n async react(input: { messageId: string; emoji: string }): Promise<void> {\n await this.t.perform({ op: 'react', messageId: input.messageId, emoji: input.emoji });\n }\n\n async unreact(input: { messageId: string; emoji: string }): Promise<void> {\n await this.t.perform({ op: 'react', messageId: input.messageId, emoji: input.emoji, removed: true });\n }\n\n async readHistory(input: ReadHistoryInput): Promise<Message[]> {\n return (await this.t.perform({\n op: 'read_channel_history',\n channelId: input.channelId,\n before: input.before,\n after: input.after,\n limit: input.limit,\n })) as Message[];\n }\n\n async createDm(input: { userId: string }): Promise<{ channelId: string }> {\n return (await this.t.perform({ op: 'create_dm', userId: input.userId })) as { channelId: string };\n }\n\n async getMe(): Promise<User> {\n return (await this.t.perform({ op: 'get_me' })) as User;\n }\n\n async listUsers(): Promise<User[]> {\n return (await this.t.perform({ op: 'list_users' })) as User[];\n }\n\n async listChannelFiles(input: { channelId: string }): Promise<ChannelFile[]> {\n return (await this.t.perform({ op: 'list_channel_files', channelId: input.channelId })) as ChannelFile[];\n }\n\n async readChannelFile(input: { channelId: string; path: string; textOnly: boolean }): Promise<ChannelFileContent> {\n return (await this.t.perform({ op: 'read_channel_file', ...input })) as ChannelFileContent;\n }\n\n async publishChannelFile(input: PublishChannelFileInput): Promise<ChannelFile> {\n return (await this.t.perform({ op: 'publish_channel_file', ...input })) as ChannelFile;\n }\n\n async listChannels(): Promise<Channel[]> {\n return (await this.t.perform({ op: 'list_channels' })) as Channel[];\n }\n\n async createChannel(input: CreateChannelInput): Promise<Channel> {\n validateChannelPlacement(input.parentId);\n return (await this.t.perform({\n op: 'create_channel',\n guildId: input.guildId,\n name: input.name,\n parentId: input.parentId,\n topic: input.topic,\n visibility: input.visibility,\n memberIds: input.memberIds,\n })) as Channel;\n }\n\n async updateChannel(input: UpdateChannelInput): Promise<Channel> {\n rejectChannelPlacementUpdate(input);\n return (await this.t.perform({\n op: 'update_channel',\n channelId: input.channelId,\n name: input.name,\n visibility: input.visibility,\n archived: input.archived,\n })) as Channel;\n }\n\n async listZones(input: ListZonesInput): Promise<ZonePageDTO> {\n validateListZonesInput(input);\n return (await this.t.perform({ op: 'list_zones', ...input })) as ZonePageDTO;\n }\n\n async setTopic(input: SetTopicInput): Promise<void> {\n await this.t.perform({ op: 'set_topic', channelId: input.channelId, topic: input.topic });\n }\n\n async deleteChannel(input: DeleteChannelInput): Promise<void> {\n await this.t.perform({ op: 'delete_channel', channelId: input.channelId });\n }\n\n reportTaskStarted(input: ReportTaskStartedInput): void {\n void this.t\n .perform({ op: 'report_task_started', taskId: input.taskId, channelId: input.channelId, subject: input.subject })\n .catch((err) => this.logger.warn('reportTaskStarted failed', err));\n }\n\n reportTaskFinished(input: ReportTaskFinishedInput): void {\n void this.t\n .perform({\n op: 'report_task_finished',\n taskId: input.taskId,\n channelId: input.channelId,\n outcome: input.outcome,\n reason: input.reason,\n })\n .catch((err) => this.logger.warn('reportTaskFinished failed', err));\n }\n\n reportActivity(input: ReportActivityInput): void {\n void this.t\n .perform({\n op: 'report_activity',\n channelId: input.channelId,\n sequence: this.nextActivitySequence(),\n activity: input.activity,\n })\n .catch((err) => this.logger.warn('reportActivity failed', err));\n }\n\n reportExecutionTelemetry(frame: ExecutionTelemetryFrame): void {\n this.t.sendExecutionTelemetry?.(frame);\n }\n\n reportTurnActivity(input: ReportTurnActivityInput): TurnActivityReporter {\n return new TurnActivityReporter({\n ...input,\n deliver: (report) => this.reportActivity(report),\n });\n }\n\n /**\n * The counter every activity report carries. It belongs to the connection\n * rather than to a producer: both readers use it only to drop anything not\n * newer, so two producers on one agent numbering independently would silently\n * erase each other, and the failure would present as a missing report rather\n * than as a wrong one. Nothing outside this client can supply or observe it.\n */\n private nextActivitySequence(): number {\n this.activitySequence += 1;\n return this.activitySequence;\n }\n\n // \u2500\u2500\u2500 Task CRUD (BPP semantic actions) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Semantic actions rather than REST: the blueprint's protocol red line\n // (plugin-protocol.md 1.3) is that a plugin does not reach past the semantic\n // layer to REST; the server centralizes permission checks at dispatch.\n\n async createTask(input: CreateTaskInput): Promise<Task> {\n return (await this.t.perform({\n op: 'create_task',\n channelId: input.channelId,\n title: input.title,\n description: input.description,\n assigneeId: input.assigneeId,\n heartbeat_interval_ms: input.heartbeatIntervalMs,\n heartbeat_prompt: input.heartbeatPrompt,\n })) as Task;\n }\n\n async listTasks(input: { channelId: string }): Promise<Task[]> {\n return (await this.t.perform({ op: 'list_tasks', channelId: input.channelId })) as Task[];\n }\n\n async listGuildTasks(input: { guildId: string }): Promise<Task[]> {\n return (await this.t.perform({ op: 'list_tasks', guildId: input.guildId })) as Task[];\n }\n\n async getTask(input: { taskId: string }): Promise<Task> {\n return (await this.t.perform({ op: 'get_task', taskId: input.taskId })) as Task;\n }\n\n async updateTask(input: UpdateTaskInput): Promise<Task> {\n // An empty patch always draws a 400 (\"No updates\") from the server.\n // Rejecting it here gives the caller an error naming the fields it can\n // set, and the round trip never happens.\n if (input.status === undefined && input.assigneeId === undefined && input.title === undefined && input.description === undefined && input.heartbeatIntervalMs === undefined && input.heartbeatPrompt === undefined) {\n throw new BorgeeError(\n 'updateTask requires at least one of: status, assigneeId, title, description, heartbeatIntervalMs, heartbeatPrompt',\n 'bpp.task_no_updates',\n );\n }\n return (await this.t.perform({\n op: 'update_task',\n taskId: input.taskId,\n status: input.status,\n assigneeId: input.assigneeId,\n title: input.title,\n description: input.description,\n heartbeat_interval_ms: input.heartbeatIntervalMs,\n heartbeat_prompt: input.heartbeatPrompt,\n })) as Task;\n }\n\n // \u2500\u2500\u2500 Task properties \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 // One key per call. The server has no whole-object property write, so two\n // agents writing different keys of the same task never overwrite each other.\n\n async setTaskProperty(input: SetTaskPropertyInput): Promise<Task> {\n return (await this.t.perform({\n op: 'set_task_property',\n taskId: input.taskId,\n key: input.key,\n value: input.value,\n })) as Task;\n }\n\n async deleteTaskProperty(input: DeleteTaskPropertyInput): Promise<Task> {\n return (await this.t.perform({\n op: 'delete_task_property',\n taskId: input.taskId,\n key: input.key,\n })) as Task;\n }\n\n /**\n * The registered property keys with their labels and render kinds. Read this\n * rather than hardcoding keys \u2014 the server can register a new property\n * without an SDK release.\n */\n async listTaskPropertyDefinitions(): Promise<TaskPropertyDefinition[]> {\n return (await this.t.perform({ op: 'list_task_property_definitions' })) as TaskPropertyDefinition[];\n }\n\n reportTyping(channelId: string): void {\n void this.t\n .perform({ op: 'report_typing', channelId })\n .catch((err) => this.logger.warn('reportTyping failed', err));\n }\n\n startTyping(channelId: string): () => void {\n const emit = () => this.reportTyping(channelId);\n emit();\n const interval = setInterval(emit, 2000);\n interval.unref?.(); // don't keep the process alive if stop() is missed (browsers: no-op)\n return () => clearInterval(interval);\n }\n\n on<K extends keyof EventMap>(event: K, handler: (e: EventMap[K]) => void): Unsubscribe {\n this.listeners[event].add(handler);\n return () => {\n this.listeners[event].delete(handler);\n };\n }\n\n onServerRequest(handler: ServerRequestHandler | undefined): void {\n this.t.setServerRequestHandler?.(handler);\n }\n\n onStopTurn(handler: StopTurnHandler | undefined): void {\n this.t.setStopTurnHandler?.(handler);\n }\n\n onStopBackgroundRun(handler: StopBackgroundRunHandler | undefined): void {\n this.t.setStopBackgroundRunHandler?.(handler);\n }\n\n private emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void {\n for (const h of this.listeners[event]) {\n try {\n h(payload);\n } catch (error) {\n this.logger.error('client.observer_failed', { event, error });\n }\n }\n }\n\n private handlers(): InboundHandlers {\n return {\n onInbound: (e) => this.emit('message', e),\n onConfigUpdate: (u) => this.emit('configUpdate', u),\n applyConfigUpdate: this.opts.configUpdateHandler,\n onPermissionDenied: (d) => this.emit('permissionDenied', d),\n onStateChange: (s) => {\n this._state = s;\n this.emit('connectionState', s);\n },\n onExecutionTelemetryAck: (ack) => this.emit('executionTelemetryAck', ack),\n };\n }\n\n private context(): TransportContext {\n return {\n baseUrl: this.opts.baseUrl,\n apiKey: this.opts.apiKey,\n agentId: this._agentId,\n pluginId: this.opts.pluginId,\n logger: this.logger,\n configApplyTimeoutMs: this.opts.configApplyTimeoutMs,\n };\n }\n}\n\nexport function createBorgeePlugin(opts: BorgeePluginOptions): BorgeePluginClient {\n return new Client(opts, new BppTransport());\n}\n\nexport function createBorgeePluginWithTransport(opts: BorgeePluginOptions, transport: Transport): BorgeePluginClient {\n return new Client(opts, transport);\n}\n", "import type { BorgeePluginClient } from './client.js';\n\n/**\n * How long updates coalesce before one reaches the wire. An update arriving\n * during the window replaces the pending body rather than queueing behind it,\n * so a producer emitting per token costs at most four writes a second.\n */\nconst THROTTLE_MS = 250;\n\n/**\n * One message that is written while it is still being produced: sent once, then\n * edited in place until it is sealed.\n *\n * The message exists in the channel from the first flush onward, so everything\n * it shows is already published \u2014 this is not a private buffer. A producer that\n * must not publish something has to keep it out of `update()`.\n *\n * Every write goes through one chain, so an edit can never overtake the send\n * that assigns the id it edits. After `finalize()` or `discard()` the controller\n * is sealed and ignores further updates; a producer with more to say opens\n * another controller rather than reviving this one.\n */\nexport class DraftMessageController {\n private messageId: string | null = null;\n private currentBody = '';\n private pendingBody: string | null = null;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private sealed = false;\n private writeChain: Promise<void> = Promise.resolve();\n\n constructor(\n private readonly client: BorgeePluginClient,\n private readonly channelId: string,\n private readonly replyToId?: string,\n ) {}\n\n /**\n * Offer the whole body as it currently reads \u2014 not a delta. Nothing is written\n * for up to {@link THROTTLE_MS}, and only the last body offered in that window\n * is; blank text is ignored, which is why a producer that has not yet emitted\n * anything visible never creates an empty message.\n */\n update(text: string): void {\n if (this.sealed || !text.trim()) return;\n this.pendingBody = text;\n if (this.timer) return;\n this.timer = setTimeout(() => {\n this.timer = null;\n void this.flushPending().catch(() => {});\n }, THROTTLE_MS);\n }\n\n /**\n * Seal the draft at `finalText` and resolve once that text is on the wire.\n * Empty final text means the draft said nothing worth keeping, so the message\n * is deleted rather than left showing a body the producer has disowned.\n */\n async finalize(finalText: string): Promise<void> {\n this.sealed = true;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n if (finalText.trim()) {\n this.pendingBody = finalText;\n await this.flushPending();\n this.messageId = null;\n return;\n }\n\n await this.enqueue(async () => {\n if (!this.messageId) return;\n await this.client.deleteMessage({ messageId: this.messageId });\n this.messageId = null;\n });\n }\n\n /** Seal the draft and remove whatever it published. */\n async discard(): Promise<void> {\n this.sealed = true;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.pendingBody = null;\n await this.enqueue(async () => {\n if (!this.messageId) return;\n await this.client.deleteMessage({ messageId: this.messageId });\n this.messageId = null;\n });\n }\n\n /** Whether a message has actually been published yet. */\n get hasMessage(): boolean {\n return this.messageId !== null;\n }\n\n private async flushPending(): Promise<void> {\n await this.enqueue(async () => {\n const body = this.pendingBody;\n if (!body || body === this.currentBody) return;\n\n if (this.messageId) {\n await this.client.editMessage({ messageId: this.messageId, body });\n } else {\n const posted = await this.client.sendMessage({\n channelId: this.channelId,\n body,\n replyToId: this.replyToId,\n });\n this.messageId = posted.messageId;\n }\n this.currentBody = body;\n });\n }\n\n /**\n * Run `op` after every write queued before it. The same callback handles both\n * settlements deliberately: a rejected write must not wedge the chain, and a\n * producer that keeps typing after one failed edit still gets its next one.\n */\n private enqueue(op: () => Promise<void>): Promise<void> {\n this.writeChain = this.writeChain.then(op, op);\n return this.writeChain;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["PerMessageDeflate", "data", "PerMessageDeflate", "Receiver", "PerMessageDeflate", "Sender", "extension", "PerMessageDeflate", "Receiver", "Sender", "WebSocket", "key", "WebSocket", "createWebSocketStream", "err", "protocol", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "WebSocketServer", "WebSocket"]
|
|
3
|
+
"sources": ["../../../node_modules/.pnpm/fast-sha256@1.3.0/node_modules/fast-sha256/sha256.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/constants.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/buffer-util.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/limiter.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/validation.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/receiver.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/sender.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/event-target.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/extension.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/websocket.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/stream.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/subprotocol.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/websocket-server.js", "../../sdk/plugin-ts/src/protocol-trace.ts", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/system/policy.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/create/immutable.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/create/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/error/error.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/array/array.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/function/function.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/computed/computed.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/never/never.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/union/union.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/number/number.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/string/string.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/object/object.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/errors/function.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/any/any.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/check/check.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/errors/errors.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/assert/assert.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/clone/clone.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/create/create.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/cast/cast.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/clean/clean.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/convert/convert.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/decode/decode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/default/default.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/pointer/pointer.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/equal/equal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/encode/encode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/mutate/mutate.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/parse/parse.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/value/value.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/argument/argument.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/date/date.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/null/null.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/const/const.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/record/record.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/required/required.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/module/compute.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/module/module.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/not/not.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/void/void.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/type/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/type/index.mjs", "../../agent-remote-protocol/src/cursor.ts", "../../agent-remote-protocol/src/version.ts", "../../agent-remote-protocol/src/resources.ts", "../../agent-remote-protocol/src/interactions.ts", "../../agent-remote-protocol/src/session-settings.ts", "../../agent-remote-protocol/src/tool-result.ts", "../../agent-remote-protocol/src/timeline.ts", "../../agent-remote-protocol/src/snapshot.ts", "../../agent-remote-protocol/src/envelope.ts", "../../agent-remote-protocol/src/history.ts", "../../agent-remote-protocol/src/commands.ts", "../../agent-remote-protocol/src/messages.ts", "../../agent-remote-protocol/src/codec.ts", "../../agent-remote-protocol/src/uplink.ts", "../../agent-remote-protocol/src/remote-host-uplink.ts", "../../agent-remote-protocol/src/file-changes.ts", "../../agent-remote-protocol/src/public-validation.ts", "../../agent-remote-protocol/src/compatibility.ts", "../../sdk/plugin-ts/src/application-request.ts", "../../agent-provider-sdk/src/interactions.ts", "../../agent-provider-sdk/src/tool-result.ts", "../../agent-provider-sdk/src/commands.ts", "../../sdk/plugin-ts/src/session-control-types.ts", "../../sdk/plugin-ts/src/bpp/session-control.ts", "../../sdk/plugin-ts/src/session-management.ts", "../../sdk/plugin-ts/src/bpp/application-deadline.ts", "../../sdk/plugin-ts/src/bpp/session-management-receipts.ts", "../../sdk/plugin-ts/src/bpp/session-management-handler.ts", "../../sdk/plugin-ts/src/session-description.ts", "../../sdk/plugin-ts/src/bpp/normalized-transport-codec.ts", "../../sdk/plugin-ts/src/bpp/normalized-transport-types.ts", "../../sdk/plugin-ts/src/bpp/session-observation.ts", "../../sdk/plugin-ts/src/session-directory.ts", "../../sdk/plugin-ts/src/bpp/application-handler.ts", "../../sdk/plugin-ts/src/bpp/session-control-receipts.ts", "../../sdk/plugin-ts/src/bpp/normalized-application-transport.ts", "../../sdk/plugin-ts/src/bpp/send-message-transport.ts", "../../sdk/plugin-ts/src/normalized-frame.ts", "../../sdk/plugin-ts/src/normalized-snapshot.ts", "../../sdk/plugin-ts/src/bpp/bpp-transport.ts", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/wrapper.mjs", "../../sdk/plugin-ts/src/errors.ts", "../../sdk/plugin-ts/src/channel-contracts.ts", "../../sdk/plugin-ts/src/bpp/channel-results.ts", "../../sdk/plugin-ts/src/activity-reporter.ts", "../../sdk/plugin-ts/src/client.ts", "../../sdk/plugin-ts/src/draft-message.ts", "../../sdk/plugin-ts/src/normalized-timeline.ts", "../../sdk/plugin-ts/src/normalized-resource-locators.ts", "../../sdk/plugin-ts/src/normalized-observation.ts", "../../sdk/plugin-ts/src/normalized-activity.ts", "../../sdk/plugin-ts/src/normalized-execution-telemetry.ts", "../../sdk/plugin-ts/src/session-timeline.ts", "../../sdk/plugin-ts/src/session-observation-projection.ts", "../../sdk/plugin-ts/src/session-timeline-publication.ts", "../../sdk/plugin-ts/src/input-ownership.ts"],
|
|
4
|
+
"sourcesContent": ["(function (root, factory) {\n // Hack to make all exports of this module sha256 function object properties.\n var exports = {};\n factory(exports);\n var sha256 = exports[\"default\"];\n for (var k in exports) {\n sha256[k] = exports[k];\n }\n \n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = sha256;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return sha256; }); \n } else {\n root.sha256 = sha256;\n }\n})(this, function(exports) {\n\"use strict\";\nexports.__esModule = true;\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexports.digestLength = 32;\nexports.blockSize = 64;\n// SHA-256 constants\nvar K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n var a, b, c, d, e, f, g, h, u, i, j, t1, t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nvar Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = exports.digestLength;\n this.blockSize = exports.blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n var bytesHashed = this.bytesHashed;\n var left = this.bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (var i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nexports.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nvar HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n }\n else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (var i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n }\n else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n var h = (new Hash()).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n// Function hash is both available as module.hash and as default export.\nexports[\"default\"] = hash;\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n var h = (new HMAC(key)).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n var num = counter[0];\n if (num === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nvar hkdfSalt = new Uint8Array(exports.digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n var counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n var hmac_ = new HMAC(okm);\n // Allocate buffer.\n var buffer = new Uint8Array(hmac_.digestLength);\n var bufpos = buffer.length;\n var out = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nexports.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n var prf = new HMAC(password);\n var len = prf.digestLength;\n var ctr = new Uint8Array(4);\n var t = new Uint8Array(len);\n var u = new Uint8Array(len);\n var dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n var c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (var k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nexports.pbkdf2 = pbkdf2;\n});\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [options.isServer=false] Create the instance in either\n * server or client mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n */\n constructor(options) {\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._maxPayload = this._options.maxPayload | 0;\n this._isServer = !!this._options.isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxBufferedChunks = options.maxBufferedChunks | 0;\n this._maxFragments = options.maxFragments | 0;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n if (\n this._maxBufferedChunks > 0 &&\n this._buffers.length >= this._maxBufferedChunks\n ) {\n cb(\n this.createError(\n RangeError,\n 'Too many buffered chunks',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n )\n );\n return;\n }\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._maxFragments > 0 && ++this._numFragments > this._maxFragments) {\n const error = this.createError(\n RangeError,\n 'Too many message fragments',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n );\n\n cb(error);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\nconst {\n types: { isUint8Array }\n} = require('util');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else if (isUint8Array(data)) {\n buf.set(data, 2);\n } else {\n throw new TypeError('Second argument must be a string or a Uint8Array');\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxBufferedChunks: options.maxBufferedChunks,\n maxFragments: options.maxFragments,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate({\n ...opts.perMessageDeflate,\n isServer: false,\n maxPayload: opts.maxPayload\n });\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxBufferedChunks: opts.maxBufferedChunks,\n maxFragments: opts.maxFragments,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate({\n ...this.options.perMessageDeflate,\n isServer: true,\n maxPayload: this.options.maxPayload\n });\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxBufferedChunks: this.options.maxBufferedChunks,\n maxFragments: this.options.maxFragments,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n", "import { randomUUID } from 'node:crypto';\nimport { mkdir, open } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nexport interface ProtocolTraceInput {\n stage: string;\n kind: string;\n correlation?: Record<string, string | number | undefined>;\n payload?: unknown;\n bytes?: number;\n outcome?: string;\n reason?: string;\n}\n\nconst processId = `${process.pid}-${randomUUID()}`;\nlet sequence = 0;\nlet pending = 0;\nlet written = 0;\nlet omitted = 0;\nlet queueDropped = 0;\nlet exhausted = false;\nlet chain = Promise.resolve();\nconst maxLineBytes = 64 * 1024;\nconst maxFileBytes = 32 * 1024 * 1024;\n\n/** Diagnostic payloads deliberately omit private inputs and interaction answers. */\nexport function redactProtocolTrace(value: unknown, depth = 0): unknown {\n if (depth > 12) return { omitted: true, reason: 'depth_limit' };\n if (typeof value === 'string') return value\n .replace(/Bearer\\s+\\S+/gi, 'Bearer [redacted]')\n .replace(/\\b(?:sk-[A-Za-z0-9_-]{8,}|gh[pousr]_[A-Za-z0-9_]+|bgr_[A-Za-z0-9_-]+)\\b/g, '[redacted]')\n .replace(/([?&](?:token|api_key|key|secret|password)=)[^&#\\s]*/gi, '$1[redacted]');\n if (!value || typeof value !== 'object') return value;\n if (Array.isArray(value)) return value.length > 512\n ? { omitted: true, reason: 'array_limit', length: value.length }\n : value.map(item => redactProtocolTrace(item, depth + 1));\n const input = value as Record<string, unknown>;\n if (Object.keys(input).length > 512) return { omitted: true, reason: 'object_limit' };\n const result: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(input)) {\n if (/authorization|cookie|password|secret|^telemetry[_-]?context$|^((access|refresh|id|auth|session|csrf|xsrf|bearer)[_-]?)?tokens?$|api.?key|credential|persistence|prompt|environment|^env$|^answers?$|^default(?:value)?$|^response$|^arguments$|^input$|^values$|^selectedValues$|^value$/i.test(key)\n || (input.type === 'user/message' && key === 'data')\n || (input.type === 'inbound_message' && ['body', 'attachments'].includes(key))\n || ((input.type === 'user_message' || input.role === 'user' || input.author_kind === 'user' || input.authorKind === 'user') && ['text', 'content', 'body'].includes(key))) {\n result[key] = { omitted: true, reason: 'private_value' };\n } else result[key] = redactProtocolTrace(entry, depth + 1);\n }\n return result;\n}\n\n/** A process sequence establishes local observation order, never cross-process causality. */\nexport function recordProtocolTrace(input: ProtocolTraceInput): void {\n const directory = process.env.BORGEE_PROTOCOL_TRACE_DIR;\n if (!directory || exhausted) return;\n try {\n if (pending >= 256) { queueDropped++; return; }\n const record = {\n schemaVersion: 1, runId: process.env.BORGEE_PROTOCOL_TRACE_RUN_ID ?? '',\n processId, sequence: ++sequence, at: new Date().toISOString(), ...input,\n correlation: Object.fromEntries(Object.entries(input.correlation ?? {}).filter(([, value]) => typeof value === 'number' || (typeof value === 'string' && Buffer.byteLength(value) <= 256))), payload: redactProtocolTrace(input.payload),\n correlationOmitted: Object.entries(input.correlation ?? {}).filter(([, value]) => typeof value === 'string' && Buffer.byteLength(value) > 256).map(([key]) => key),\n ...(omitted ? { traceOmission: { records: omitted, reason: 'queue_or_write_failure' } } : {}),\n };\n omitted = 0;\n let line = JSON.stringify(record) + '\\n';\n if (Buffer.byteLength(line) > maxLineBytes) line = JSON.stringify({ ...record,\n payload: { omitted: true, reason: 'record_limit', originalBytes: Buffer.byteLength(line) },\n }) + '\\n';\n pending++;\n chain = chain.then(async () => {\n await mkdir(directory, { recursive: true, mode: 0o700 });\n const handle = await open(join(directory, `${processId}.jsonl`), 'a', 0o600);\n try {\n if (exhausted) return;\n if (written + Buffer.byteLength(line) > maxFileBytes - 2048) {\n exhausted = true;\n line = JSON.stringify({ schemaVersion: 1, runId: record.runId, processId, sequence: record.sequence, at: record.at,\n stage: 'trace.writer', kind: 'omission', correlation: {}, payload: { omitted: true, reason: 'file_limit' } }) + '\\n';\n }\n await handle.writeFile(line);\n written += Buffer.byteLength(line);\n } finally { await handle.close(); }\n }).catch(() => { omitted++; }).finally(() => {\n pending--;\n if (!pending && queueDropped && !exhausted) {\n const records = queueDropped;\n queueDropped = 0;\n recordProtocolTrace({ stage: 'trace.writer', kind: 'omission', payload: { omitted: true, reason: 'queue_limit', records } });\n }\n });\n } catch { /* Diagnostic failures cannot affect the observed operation. */ }\n}\n\n/** Allows diagnostics and tests to await locally queued writes. */\nexport async function flushProtocolTrace(): Promise<void> {\n let current: Promise<void>;\n do { current = chain; await current; } while (current !== chain);\n}\n", "// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && globalThis.Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && globalThis.Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nexport function IsStandardObject(value) {\n return IsObject(value) && (globalThis.Object.getPrototypeOf(value) === Object.prototype || globalThis.Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nexport function IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nexport function IsPromise(value) {\n return value instanceof globalThis.Promise;\n}\n/** Returns true if this value is a Date */\nexport function IsDate(value) {\n return value instanceof Date && globalThis.Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map<K, T> */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set<T> */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nexport function IsTypedArray(value) {\n return globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true of this value is an object type */\nexport function IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nexport function IsArray(value) {\n return globalThis.Array.isArray(value) && !globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nexport function IsInteger(value) {\n return globalThis.Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nexport function IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n", "import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';\nexport var TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Instancing\n // ------------------------------------------------------------------\n /**\n * Configures the instantiation behavior of TypeBox types. The `default` option assigns raw JavaScript\n * references for embedded types, which may cause side effects if type properties are explicitly updated\n * outside the TypeBox type builder. The `clone` option creates copies of any shared types upon creation,\n * preventing unintended side effects. The `freeze` option applies `Object.freeze()` to the type, making\n * it fully readonly and immutable. Implementations should use `default` whenever possible, as it is the\n * fastest way to instantiate types. The default setting is `default`.\n */\n TypeSystemPolicy.InstanceMode = 'default';\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Checking\n // ------------------------------------------------------------------\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Checks this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Checks this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = IsObject(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Checks this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Checks this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? IsNumber(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Checks this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = IsUndefined(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (TypeSystemPolicy = {}));\n", "/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nexport function Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nexport function Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nexport function Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nexport function Get(format) {\n return map.get(format);\n}\n", "/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nexport function Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nexport function Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nexport function Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nexport function Get(kind) {\n return map.get(kind);\n}\n", "// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n", "import * as ValueGuard from '../guard/value.mjs';\nfunction ImmutableArray(value) {\n return globalThis.Object.freeze(value).map((value) => Immutable(value));\n}\nfunction ImmutableDate(value) {\n return value;\n}\nfunction ImmutableUint8Array(value) {\n return value;\n}\nfunction ImmutableRegExp(value) {\n return value;\n}\nfunction ImmutableObject(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Immutable(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Immutable(value[key]);\n }\n return globalThis.Object.freeze(result);\n}\n/** Specialized deep immutable value. Applies freeze recursively to the given value */\n// prettier-ignore\nexport function Immutable(value) {\n return (ValueGuard.IsArray(value) ? ImmutableArray(value) :\n ValueGuard.IsDate(value) ? ImmutableDate(value) :\n ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) :\n ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) :\n ValueGuard.IsObject(value) ? ImmutableObject(value) :\n value);\n}\n", "import * as ValueGuard from '../guard/value.mjs';\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nexport function Clone(value) {\n return Visit(value);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Immutable } from './immutable.mjs';\nimport { Clone } from '../clone/value.mjs';\n/** Creates TypeBox schematics using the configured InstanceMode */\nexport function CreateType(schema, options) {\n const result = options !== undefined ? { ...options, ...schema } : schema;\n switch (TypeSystemPolicy.InstanceMode) {\n case 'freeze':\n return Immutable(result);\n case 'clone':\n return Clone(result);\n default:\n return result;\n }\n}\n", "/** Symbol key applied to transform types */\nexport const TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexport const ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexport const OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexport const Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexport const Kind = Symbol.for('TypeBox.Kind');\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nexport function Unsafe(options = {}) {\n return CreateType({ [Kind]: options[Kind] ?? 'Unsafe' }, options);\n}\n", "/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n return CreateType({\n [Kind]: 'MappedResult',\n properties\n });\n}\n", "function DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\n/** Discards property keys from the given value. This function returns a shallow Clone. */\nexport function Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(items, options) {\n return CreateType({ [Kind]: 'Array', type: 'array', items }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options) {\n return CreateType({ [Kind]: 'AsyncIterator', type: 'AsyncIterator', items }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n return CreateType({ [Kind]: 'Constructor', type: 'Constructor', parameters, returns }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n return CreateType({ [Kind]: 'Function', type: 'Function', parameters, returns }, options);\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/symbols.mjs';\n/** `[Internal]` Creates a deferred computed type. This type is used exclusively in modules to defer resolution of computable types that contain interior references */\nexport function Computed(target, parameters, options) {\n return CreateType({ [Kind]: 'Computed', target, parameters }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options) {\n return CreateType({ [Kind]: 'Never', not: {} }, options);\n}\n", "import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nexport function IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArgument */\nexport function IsArgument(value) {\n return IsKindOf(value, 'Argument');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nexport function IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TComputed */\nexport function IsComputed(value) {\n return IsKindOf(value, 'Computed');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nexport function IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsImport(value) {\n return IsKindOf(value, 'Import');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nexport function IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nexport function IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nexport function IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nexport function IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nexport function IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nexport function IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nexport function IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArgument(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsComputed(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveOptional(schema) {\n return CreateType(Discard(schema, [OptionalKind]));\n}\nfunction AddOptional(schema) {\n return CreateType({ ...schema, [OptionalKind]: 'Optional' });\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nexport function Optional(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Optional } from './optional.mjs';\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Optional(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsObject, IsSchema } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IntersectCreate(T, options = {}) {\n const allObjects = T.every((schema) => IsObject(schema));\n const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties)\n ? { unevaluatedProperties: options.unevaluatedProperties }\n : {};\n return CreateType((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n ? { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: T }\n : { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: T }), options);\n}\n", "import { OptionalKind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsTransform } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsIntersectOptional(types) {\n return types.every(left => IsOptional(left));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(type) {\n return (Discard(type, [OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(types) {\n return types.map(left => IsOptional(left) ? RemoveOptionalFromType(left) : left);\n}\n// prettier-ignore\nfunction ResolveIntersect(types, options) {\n return (IsIntersectOptional(types)\n ? Optional(IntersectCreate(RemoveOptionalFromRest(types), options))\n : IntersectCreate(RemoveOptionalFromRest(types), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nexport function IntersectEvaluated(types, options = {}) {\n if (types.length === 1)\n return CreateType(types[0], options);\n if (types.length === 0)\n return Never(options);\n if (types.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(types, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n/** `[Json]` Creates an evaluated Intersect type */\nexport function Intersect(types, options) {\n if (types.length === 1)\n return CreateType(types[0], options);\n if (types.length === 0)\n return Never(options);\n if (types.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return IntersectCreate(types, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n return CreateType({ [Kind]: 'Union', anyOf: T }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { UnionCreate } from './union-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsUnionOptional(types) {\n return types.some(type => IsOptional(type));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(types) {\n return types.map(left => IsOptional(left) ? RemoveOptionalFromType(left) : left);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(types, options) {\n const isOptional = IsUnionOptional(types);\n return (isOptional\n ? Optional(UnionCreate(RemoveOptionalFromRest(types), options))\n : UnionCreate(RemoveOptionalFromRest(types), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nexport function UnionEvaluated(T, options) {\n // prettier-ignore\n return (T.length === 1 ? CreateType(T[0], options) :\n T.length === 0 ? Never(options) :\n ResolveUnion(T, options));\n}\n", "import { Never } from '../never/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { UnionCreate } from './union-create.mjs';\n/** `[Json]` Creates a Union type */\nexport function Union(types, options) {\n // prettier-ignore\n return (types.length === 0 ? Never(options) :\n types.length === 1 ? CreateType(types[0], options) :\n UnionCreate(types, options));\n}\n", "import { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nexport class TemplateLiteralParserError extends TypeBoxError {\n}\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nexport function TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nexport function TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n", "import { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nexport class TemplateLiteralFiniteError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nexport function IsTemplateLiteralFinite(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n", "import { IsTemplateLiteralExpressionFinite } from './finite.mjs';\nimport { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nexport class TemplateLiteralGenerateError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nexport function* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nexport function TemplateLiteralGenerate(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n // prettier-ignore\n return (IsTemplateLiteralExpressionFinite(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options) {\n return CreateType({\n [Kind]: 'Literal',\n const: value,\n type: typeof value,\n }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options) {\n return CreateType({ [Kind]: 'Boolean', type: 'boolean' }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options) {\n return CreateType({ [Kind]: 'BigInt', type: 'bigint' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options) {\n return CreateType({ [Kind]: 'Number', type: 'number' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options) {\n return CreateType({ [Kind]: 'String', type: 'string' }, options);\n}\n", "import { Literal } from '../literal/index.mjs';\nimport { Boolean } from '../boolean/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield Boolean() :\n trim === 'number' ? yield Number() :\n trim === 'bigint' ? yield BigInt() :\n trim === 'string' ? yield String() :\n yield (() => {\n const literals = trim.split('|').map((literal) => Literal(literal.trim()));\n return (literals.length === 0 ? Never() :\n literals.length === 1 ? literals[0] :\n UnionEvaluated(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = Literal('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield Literal(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = Literal(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield Literal(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nexport function TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n", "export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternNever = '(?!.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\nexport const PatternNeverExact = `^${PatternNever}$`;\n", "import { PatternNumber, PatternString, PatternBoolean } from '../patterns/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsNumber, IsInteger, IsBigInt, IsString, IsLiteral, IsBoolean } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nexport class TemplateLiteralPatternError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return (IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n IsUnion(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n IsNumber(schema) ? `${acc}${PatternNumber}` :\n IsInteger(schema) ? `${acc}${PatternNumber}` :\n IsBigInt(schema) ? `${acc}${PatternNumber}` :\n IsString(schema) ? `${acc}${PatternString}` :\n IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` :\n IsBoolean(schema) ? `${acc}${PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); })());\n}\nexport function TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n", "import { UnionEvaluated } from '../union/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { TemplateLiteralGenerate } from './generate.mjs';\n/** Returns a Union from the given TemplateLiteral */\nexport function TemplateLiteralToUnion(schema) {\n const R = TemplateLiteralGenerate(schema);\n const L = R.map((S) => Literal(S));\n return UnionEvaluated(L);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TemplateLiteralSyntax } from './syntax.mjs';\nimport { TemplateLiteralPattern } from './pattern.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nexport function TemplateLiteral(unresolved, options) {\n const pattern = IsString(unresolved)\n ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved))\n : TemplateLiteralPattern(unresolved);\n return CreateType({ [Kind]: 'TemplateLiteral', type: 'string', pattern }, options);\n}\n", "import { TemplateLiteralGenerate } from '../template-literal/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsLiteral, IsNumber, IsInteger } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromTemplateLiteral(templateLiteral) {\n const keys = TemplateLiteralGenerate(templateLiteral);\n return keys.map(key => key.toString());\n}\n// prettier-ignore\nfunction FromUnion(types) {\n const result = [];\n for (const type of types)\n result.push(...IndexPropertyKeys(type));\n return result;\n}\n// prettier-ignore\nfunction FromLiteral(literalValue) {\n return ([literalValue.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nexport function IndexPropertyKeys(type) {\n return [...new Set((IsTemplateLiteral(type) ? FromTemplateLiteral(type) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsLiteral(type) ? FromLiteral(type.const) :\n IsNumber(type) ? ['[number]'] :\n IsInteger(type) ? ['[number]'] :\n []))];\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { Index } from './index.mjs';\n// prettier-ignore\nfunction FromProperties(type, properties, options) {\n const result = {};\n for (const K2 of Object.getOwnPropertyNames(properties)) {\n result[K2] = Index(type, IndexPropertyKeys(properties[K2]), options);\n }\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(type, mappedResult, options) {\n return FromProperties(type, mappedResult.properties, options);\n}\n// prettier-ignore\nexport function IndexFromMappedResult(type, mappedResult, options) {\n const properties = FromMappedResult(type, mappedResult, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';\nimport { IndexFromMappedResult } from './indexed-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsIntersect, IsObject, IsMappedKey, IsMappedResult, IsNever, IsSchema, IsTuple, IsUnion, IsRef } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(types, key) {\n return types.map(type => IndexFromPropertyKey(type, key));\n}\n// prettier-ignore\nfunction FromIntersectRest(types) {\n return types.filter(type => !IsNever(type));\n}\n// prettier-ignore\nfunction FromIntersect(types, key) {\n return (IntersectEvaluated(FromIntersectRest(FromRest(types, key))));\n}\n// prettier-ignore\nfunction FromUnionRest(types) {\n return (types.some(L => IsNever(L))\n ? []\n : types);\n}\n// prettier-ignore\nfunction FromUnion(types, key) {\n return (UnionEvaluated(FromUnionRest(FromRest(types, key))));\n}\n// prettier-ignore\nfunction FromTuple(types, key) {\n return (key in types ? types[key] :\n key === '[number]' ? UnionEvaluated(types) :\n Never());\n}\n// prettier-ignore\nfunction FromArray(type, key) {\n return (key === '[number]'\n ? type\n : Never());\n}\n// prettier-ignore\nfunction FromProperty(properties, propertyKey) {\n return (propertyKey in properties ? properties[propertyKey] : Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKey(type, propertyKey) {\n return (IsIntersect(type) ? FromIntersect(type.allOf, propertyKey) :\n IsUnion(type) ? FromUnion(type.anyOf, propertyKey) :\n IsTuple(type) ? FromTuple(type.items ?? [], propertyKey) :\n IsArray(type) ? FromArray(type.items, propertyKey) :\n IsObject(type) ? FromProperty(type.properties, propertyKey) :\n Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKeys(type, propertyKeys) {\n return propertyKeys.map(propertyKey => IndexFromPropertyKey(type, propertyKey));\n}\n// prettier-ignore\nfunction FromSchema(type, propertyKeys) {\n return (UnionEvaluated(IndexFromPropertyKeys(type, propertyKeys)));\n}\n// prettier-ignore\nexport function IndexFromComputed(type, key) {\n return Computed('Index', [type, key]);\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nexport function Index(type, key, options) {\n // computed-type\n if (IsRef(type) || IsRef(key)) {\n const error = `Index types using Ref parameters require both Type and Key to be of TSchema`;\n if (!IsSchema(type) || !IsSchema(key))\n throw new TypeBoxError(error);\n return Computed('Index', [type, key]);\n }\n // mapped-types\n if (IsMappedResult(key))\n return IndexFromMappedResult(type, key, options);\n if (IsMappedKey(key))\n return IndexFromMappedKey(type, key, options);\n // prettier-ignore\n return CreateType(IsSchema(key)\n ? FromSchema(type, IndexPropertyKeys(key))\n : FromSchema(type, key), options);\n}\n", "import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(type, key, options) {\n return { [key]: Index(type, [key], Clone(options)) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((result, left) => {\n return { ...result, ...MappedIndexPropertyKey(type, left, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(type, mappedKey, options) {\n return MappedIndexPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function IndexFromMappedKey(type, mappedKey, options) {\n const properties = MappedIndexProperties(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options) {\n return CreateType({ [Kind]: 'Iterator', type: 'Iterator', items }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n/** Creates a RequiredArray derived from the given TProperties value. */\nfunction RequiredArray(properties) {\n return globalThis.Object.keys(properties).filter((key) => !IsOptional(properties[key]));\n}\n/** `[Json]` Creates an Object type */\nfunction _Object_(properties, options) {\n const required = RequiredArray(properties);\n const schema = required.length > 0 ? { [Kind]: 'Object', type: 'object', required, properties } : { [Kind]: 'Object', type: 'object', properties };\n return CreateType(schema, options);\n}\n// ------------------------------------------------------------------\n// TypeScript 7: CommonJS TS2441\n//\n// TypeScript generates a CommonJS shim that patches local variables\n// via an unqualified reference to Object (e.g. the __esModule shim's\n// Object.defineProperty call). Other compiler tools have been\n// observed patching in the same way, but TypeScript 7 has correctly\n// begun flagging variables named Object in CommonJS, since they\n// conflict with the shim and can cause \"used before definition\"\n// errors. This is CommonJS-specific; no such shim exists for ESM.\n//\n// TypeBox works around this using a `var` declaration, which is\n// known to avoid use-before-definition errors. TypeBox 1.x employs\n// a similar strategy.\n// ------------------------------------------------------------------\n/** `[Json]` Creates an Object type */\n// @ts-ignore - error TS2441: Duplicate identifier 'Object'. Compiler reserves name 'Object' in top level scope of a module.\nexport var Object = _Object_;\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options) {\n return CreateType({ [Kind]: 'Promise', type: 'Promise', item }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { ReadonlyKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { ReadonlyFromMappedResult } from './readonly-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveReadonly(schema) {\n return CreateType(Discard(schema, [ReadonlyKind]));\n}\nfunction AddReadonly(schema) {\n return CreateType({ ...schema, [ReadonlyKind]: 'Readonly' });\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nexport function Readonly(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Readonly } from './readonly.mjs';\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Readonly(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(types, options) {\n // prettier-ignore\n return CreateType(types.length > 0 ?\n { [Kind]: 'Tuple', type: 'array', items: types, additionalItems: false, minItems: types.length, maxItems: types.length } :\n { [Kind]: 'Tuple', type: 'array', minItems: types.length, maxItems: types.length }, options);\n}\n", "/** Returns true if element right is in the set of left */\n// prettier-ignore\nexport function SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nexport function SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nexport function SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nexport function SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nexport function SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nexport function SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nexport function SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nexport function SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n", "import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\n// evaluation types\nimport { Array } from '../array/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Promise } from '../promise/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// operator\nimport { SetIncludes } from '../sets/index.mjs';\n// mapping types\nimport { MappedResult } from './mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsAsyncIterator, IsConstructor, IsFunction, IsIntersect, IsIterator, IsReadonly, IsMappedResult, IsMappedKey, IsObject, IsOptional, IsPromise, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : MappedResult(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: Literal(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = Literal(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return (SetIncludes(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n // required to retain user defined options for mapped type\n const options = { ...T };\n return (\n // unevaluated modifier types\n IsOptional(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :\n IsReadonly(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :\n // unevaluated mapped types\n IsMappedResult(T) ? FromMappedResult(K, T.properties) :\n IsMappedKey(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n IsConstructor(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items), options) :\n IsIterator(T) ? Iterator(FromSchemaType(K, T.items), options) :\n IsIntersect(T) ? Intersect(FromRest(K, T.allOf), options) :\n IsUnion(T) ? Union(FromRest(K, T.anyOf), options) :\n IsTuple(T) ? Tuple(FromRest(K, T.items ?? []), options) :\n IsObject(T) ? _Object_(FromProperties(K, T.properties), options) :\n IsArray(T) ? Array(FromSchemaType(K, T.items), options) :\n IsPromise(T) ? Promise(FromSchemaType(K, T.item), options) :\n T);\n}\n// prettier-ignore\nexport function MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nexport function Mapped(key, map, options) {\n const K = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const RT = map({ [Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return _Object_(R, options);\n}\n", "import { TypeBoxError } from '../error/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Ref type. The referenced type must contain a $id */\nexport function Ref(...args) {\n const [$ref, options] = typeof args[0] === 'string' ? [args[0], args[1]] : [args[0].$id, args[1]];\n if (typeof $ref !== 'string')\n throw new TypeBoxError('Ref: $ref must be a string');\n return CreateType({ [Kind]: 'Ref', $ref }, options);\n}\n", "import { SetUnionMany, SetIntersectMany } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsRecord } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(types) {\n const result = [];\n for (const L of types)\n result.push(KeyOfPropertyKeys(L));\n return result;\n}\n// prettier-ignore\nfunction FromIntersect(types) {\n const propertyKeysArray = FromRest(types);\n const propertyKeys = SetUnionMany(propertyKeysArray);\n return propertyKeys;\n}\n// prettier-ignore\nfunction FromUnion(types) {\n const propertyKeysArray = FromRest(types);\n const propertyKeys = SetIntersectMany(propertyKeysArray);\n return propertyKeys;\n}\n// prettier-ignore\nfunction FromTuple(types) {\n return types.map((_, indexer) => indexer.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nexport function KeyOfPropertyKeys(type) {\n return (IsIntersect(type) ? FromIntersect(type.allOf) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsTuple(type) ? FromTuple(type.items ?? []) :\n IsArray(type) ? FromArray(type.items) :\n IsObject(type) ? FromProperties(type.properties) :\n IsRecord(type) ? FromPatternProperties(type.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nexport function KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsRef, IsComputed } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('KeyOf', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('KeyOf', [Ref($ref)]);\n}\n// prettier-ignore\nfunction KeyOfFromType(type, options) {\n const propertyKeys = KeyOfPropertyKeys(type);\n const propertyKeyTypes = KeyOfPropertyKeysToRest(propertyKeys);\n const result = UnionEvaluated(propertyKeyTypes);\n return CreateType(result, options);\n}\n// prettier-ignore\nexport function KeyOfPropertyKeysToRest(propertyKeys) {\n return propertyKeys.map(L => L === '[number]' ? Number() : Literal(L));\n}\n/** `[Json]` Creates a KeyOf type */\nexport function KeyOf(type, options) {\n return (IsComputed(type) ? FromComputed(type.target, type.parameters) : IsRef(type) ? FromRef(type.$ref) : IsMappedResult(type) ? KeyOfFromMappedResult(type, options) : KeyOfFromType(type, options));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = KeyOf(properties[K2], Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, options) {\n return FromProperties(mappedResult.properties, options);\n}\n// prettier-ignore\nexport function KeyOfFromMappedResult(mappedResult, options) {\n const properties = FromMappedResult(mappedResult, options);\n return MappedResult(properties);\n}\n", "import { IndexFromPropertyKeys } from '../indexed/indexed.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\n/**\n * `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster\n * than obtaining the keys and resolving each individually via indexing. This method was written\n * accellerate Intersect and Union encoding.\n */\nexport function KeyOfPropertyEntries(schema) {\n const keys = KeyOfPropertyKeys(schema);\n const schemas = IndexFromPropertyKeys(schema, keys);\n return keys.map((_, index) => [keys[index], schemas[index]]);\n}\n", "import { Kind } from '../symbols/index.mjs';\n/** Fast undefined check used for properties of type undefined */\nfunction Intersect(schema) {\n return schema.allOf.every((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Union(schema) {\n return schema.anyOf.some((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Not(schema) {\n return !ExtendsUndefinedCheck(schema.not);\n}\n/** Fast undefined check used for properties of type undefined */\n// prettier-ignore\nexport function ExtendsUndefinedCheck(schema) {\n return (schema[Kind] === 'Intersect' ? Intersect(schema) :\n schema[Kind] === 'Union' ? Union(schema) :\n schema[Kind] === 'Not' ? Not(schema) :\n schema[Kind] === 'Undefined' ? true :\n false);\n}\n", "import { Kind } from '../type/symbols/index.mjs';\nimport { ValueErrorType } from './errors.mjs';\n/** Creates an error message using en-US as the default locale */\nexport function DefaultErrorFunction(error) {\n switch (error.errorType) {\n case ValueErrorType.ArrayContains:\n return 'Expected array to contain at least one matching value';\n case ValueErrorType.ArrayMaxContains:\n return `Expected array to contain no more than ${error.schema.maxContains} matching values`;\n case ValueErrorType.ArrayMinContains:\n return `Expected array to contain at least ${error.schema.minContains} matching values`;\n case ValueErrorType.ArrayMaxItems:\n return `Expected array length to be less or equal to ${error.schema.maxItems}`;\n case ValueErrorType.ArrayMinItems:\n return `Expected array length to be greater or equal to ${error.schema.minItems}`;\n case ValueErrorType.ArrayUniqueItems:\n return 'Expected array elements to be unique';\n case ValueErrorType.Array:\n return 'Expected array';\n case ValueErrorType.AsyncIterator:\n return 'Expected AsyncIterator';\n case ValueErrorType.BigIntExclusiveMaximum:\n return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.BigIntExclusiveMinimum:\n return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.BigIntMaximum:\n return `Expected bigint to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.BigIntMinimum:\n return `Expected bigint to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.BigIntMultipleOf:\n return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.BigInt:\n return 'Expected bigint';\n case ValueErrorType.Boolean:\n return 'Expected boolean';\n case ValueErrorType.DateExclusiveMinimumTimestamp:\n return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;\n case ValueErrorType.DateExclusiveMaximumTimestamp:\n return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;\n case ValueErrorType.DateMinimumTimestamp:\n return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;\n case ValueErrorType.DateMaximumTimestamp:\n return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;\n case ValueErrorType.DateMultipleOfTimestamp:\n return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;\n case ValueErrorType.Date:\n return 'Expected Date';\n case ValueErrorType.Function:\n return 'Expected function';\n case ValueErrorType.IntegerExclusiveMaximum:\n return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.IntegerExclusiveMinimum:\n return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.IntegerMaximum:\n return `Expected integer to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.IntegerMinimum:\n return `Expected integer to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.IntegerMultipleOf:\n return `Expected integer to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Integer:\n return 'Expected integer';\n case ValueErrorType.IntersectUnevaluatedProperties:\n return 'Unexpected property';\n case ValueErrorType.Intersect:\n return 'Expected all values to match';\n case ValueErrorType.Iterator:\n return 'Expected Iterator';\n case ValueErrorType.Literal:\n return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;\n case ValueErrorType.Never:\n return 'Never';\n case ValueErrorType.Not:\n return 'Value should not match';\n case ValueErrorType.Null:\n return 'Expected null';\n case ValueErrorType.NumberExclusiveMaximum:\n return `Expected number to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.NumberExclusiveMinimum:\n return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.NumberMaximum:\n return `Expected number to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.NumberMinimum:\n return `Expected number to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.NumberMultipleOf:\n return `Expected number to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Number:\n return 'Expected number';\n case ValueErrorType.Object:\n return 'Expected object';\n case ValueErrorType.ObjectAdditionalProperties:\n return 'Unexpected property';\n case ValueErrorType.ObjectMaxProperties:\n return `Expected object to have no more than ${error.schema.maxProperties} properties`;\n case ValueErrorType.ObjectMinProperties:\n return `Expected object to have at least ${error.schema.minProperties} properties`;\n case ValueErrorType.ObjectRequiredProperty:\n return 'Expected required property';\n case ValueErrorType.Promise:\n return 'Expected Promise';\n case ValueErrorType.RegExp:\n return 'Expected string to match regular expression';\n case ValueErrorType.StringFormatUnknown:\n return `Unknown format '${error.schema.format}'`;\n case ValueErrorType.StringFormat:\n return `Expected string to match '${error.schema.format}' format`;\n case ValueErrorType.StringMaxLength:\n return `Expected string length less or equal to ${error.schema.maxLength}`;\n case ValueErrorType.StringMinLength:\n return `Expected string length greater or equal to ${error.schema.minLength}`;\n case ValueErrorType.StringPattern:\n return `Expected string to match '${error.schema.pattern}'`;\n case ValueErrorType.String:\n return 'Expected string';\n case ValueErrorType.Symbol:\n return 'Expected symbol';\n case ValueErrorType.TupleLength:\n return `Expected tuple to have ${error.schema.maxItems || 0} elements`;\n case ValueErrorType.Tuple:\n return 'Expected tuple';\n case ValueErrorType.Uint8ArrayMaxByteLength:\n return `Expected byte length less or equal to ${error.schema.maxByteLength}`;\n case ValueErrorType.Uint8ArrayMinByteLength:\n return `Expected byte length greater or equal to ${error.schema.minByteLength}`;\n case ValueErrorType.Uint8Array:\n return 'Expected Uint8Array';\n case ValueErrorType.Undefined:\n return 'Expected undefined';\n case ValueErrorType.Union:\n return 'Expected union value';\n case ValueErrorType.Void:\n return 'Expected void';\n case ValueErrorType.Kind:\n return `Expected kind '${error.schema[Kind]}'`;\n default:\n return 'Unknown error type';\n }\n}\n/** Manages error message providers */\nlet errorFunction = DefaultErrorFunction;\n/** Sets the error function used to generate error messages. */\nexport function SetErrorFunction(callback) {\n errorFunction = callback;\n}\n/** Gets the error function used to generate error messages */\nexport function GetErrorFunction() {\n return errorFunction;\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { IsString } from '../guard/guard.mjs';\nexport class TypeDereferenceError extends TypeBoxError {\n constructor(schema) {\n super(`Unable to dereference schema with $id '${schema.$ref}'`);\n this.schema = schema;\n }\n}\nfunction Resolve(schema, references) {\n const target = references.find((target) => target.$id === schema.$ref);\n if (target === undefined)\n throw new TypeDereferenceError(schema);\n return Deref(target, references);\n}\n/** `[Internal]` Pushes a schema onto references if the schema has an $id and does not exist on references */\nexport function Pushref(schema, references) {\n if (!IsString(schema.$id) || references.some((target) => target.$id === schema.$id))\n return references;\n references.push(schema);\n return references;\n}\n/** `[Internal]` Dereferences a schema from the references array or throws if not found */\nexport function Deref(schema, references) {\n // prettier-ignore\n return (schema[Kind] === 'This' || schema[Kind] === 'Ref')\n ? Resolve(schema, references)\n : schema;\n}\n", "import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsObject, IsString, IsSymbol, IsUint8Array, IsUndefined } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueHashError extends TypeBoxError {\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('18446744073709551616' /* 2 ^ 64 */)];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if (IsArray(value))\n return ArrayType(value);\n if (IsBoolean(value))\n return BooleanType(value);\n if (IsBigInt(value))\n return BigIntType(value);\n if (IsDate(value))\n return DateType(value);\n if (IsNull(value))\n return NullType(value);\n if (IsNumber(value))\n return NumberType(value);\n if (IsObject(value))\n return ObjectType(value);\n if (IsString(value))\n return StringType(value);\n if (IsSymbol(value))\n return SymbolType(value);\n if (IsUint8Array(value))\n return Uint8ArrayType(value);\n if (IsUndefined(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options) {\n return CreateType({ [Kind]: 'Any' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options) {\n return CreateType({ [Kind]: 'Unknown' }, options);\n}\n", "import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nexport class TypeGuardUnknownTypeError extends TypeBoxError {\n}\nconst KnownTypes = [\n 'Argument',\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Computed',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nexport function IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArgument */\nexport function IsArgument(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Argument') &&\n ValueGuard.IsNumber(value.index));\n}\n/** Returns true if the given value is TArray */\nexport function IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TComputed */\nexport function IsComputed(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Computed') &&\n ValueGuard.IsString(value.target) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every((schema) => IsSchema(schema)));\n}\n/** Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nexport function IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TImport */\nexport function IsImport(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Import') &&\n ValueGuard.HasPropertyKey(value, '$defs') &&\n ValueGuard.IsObject(value.$defs) &&\n IsProperties(value.$defs) &&\n ValueGuard.HasPropertyKey(value, '$ref') &&\n ValueGuard.IsString(value.$ref) &&\n value.$ref in value.$defs // required\n );\n}\n/** Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nexport function IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nexport function IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nexport function IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nexport function IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nexport function IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nexport function IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nexport function IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion<Literal<string | number>[]> */\nexport function IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]) && !KnownTypes.includes(value[Kind]);\n}\n/** Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArgument(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsComputed(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "import { Any } from '../any/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nimport { PatternNumberExact, PatternStringExact } from '../patterns/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { TypeGuard, ValueGuard } from '../guard/index.mjs';\nexport class ExtendsResolverError extends TypeBoxError {\n}\nexport var ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (TypeGuard.IsNever(right) ||\n TypeGuard.IsIntersect(right) ||\n TypeGuard.IsUnion(right) ||\n TypeGuard.IsUnknown(right) ||\n TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (TypeGuard.IsUnion(right) && right.anyOf.some((schema) => TypeGuard.IsAny(schema) || TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : Unknown();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = FunctionType([Any()], Any());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n TypeGuard.IsOptional(left) && !TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union : (TypeGuard.IsNever(left) ||\n (TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (TypeGuard.IsRecord(left) && TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (TypeGuard.IsRecord(left) && TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (PatternNumberExact in schema.patternProperties ? Number() :\n PatternStringExact in schema.patternProperties ? String() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :\n PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((TypeGuard.IsLiteralString(left) && TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n TypeGuard.IsUint8Array(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsString(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsArray(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = TypeGuard.IsRegExp(left) ? String() : left;\n const R = TypeGuard.IsRegExp(right) ? String() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :\n TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (TypeGuard.IsTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :\n TypeGuard.IsTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (TypeGuard.IsNever(left) ? ExtendsResult.True :\n TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) || (!ValueGuard.IsUndefined(left.items) && ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (TypeGuard.IsTemplateLiteral(left) || TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (TypeGuard.IsRegExp(left) || TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (TypeGuard.IsNot(left) || TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n TypeGuard.IsAny(left) ? FromAny(left, right) :\n TypeGuard.IsArray(left) ? FromArray(left, right) :\n TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n TypeGuard.IsDate(left) ? FromDate(left, right) :\n TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n TypeGuard.IsNever(left) ? FromNever(left, right) :\n TypeGuard.IsNull(left) ? FromNull(left, right) :\n TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n TypeGuard.IsObject(left) ? FromObject(left, right) :\n TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n TypeGuard.IsString(left) ? FromString(left, right) :\n TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[Kind]}'`));\n}\nexport function ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Extends } from './extends.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extends(P[K2], Right, True, False, Clone(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.mjs';\nimport { ExtendsFromMappedKey } from './extends-from-mapped-key.mjs';\nimport { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = ExtendsCheck(left, right);\n return (R === ExtendsResult.Union ? Union([trueType, falseType]) :\n R === ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nexport function Extends(L, R, T, F, options) {\n // prettier-ignore\n return (IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) :\n IsMappedKey(L) ? CreateType(ExtendsFromMappedKey(L, R, T, F, options)) :\n CreateType(ExtendsResolve(L, R, T, F), options));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Extends } from './extends.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: Extends(Literal(K), U, L, R, Clone(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return MappedResult(P);\n}\n", "import { TypeSystemPolicy } from '../../system/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Hash } from '../hash/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { KeyOfPattern } from '../../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Never } from '../../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCheckUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super(`Unknown type`);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// TypeGuards\n// ------------------------------------------------------------------\nfunction IsAnyOrUnknown(schema) {\n return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromAny(schema, references, value) {\n return true;\n}\nfunction FromArgument(schema, references, value) {\n return true;\n}\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return false;\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n return false;\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n return false;\n }\n for (const element of value) {\n if (!Visit(schema.items, references, element))\n return false;\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n return false;\n }\n // contains\n if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {\n return true; // exit\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n return false;\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n return false;\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n return false;\n }\n return true;\n}\nfunction FromAsyncIterator(schema, references, value) {\n return IsAsyncIterator(value);\n}\nfunction FromBigInt(schema, references, value) {\n if (!IsBigInt(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n return false;\n }\n return true;\n}\nfunction FromBoolean(schema, references, value) {\n return IsBoolean(value);\n}\nfunction FromConstructor(schema, references, value) {\n return Visit(schema.returns, references, value.prototype);\n}\nfunction FromDate(schema, references, value) {\n if (!IsDate(value))\n return false;\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n return false;\n }\n return true;\n}\nfunction FromFunction(schema, references, value) {\n return IsFunction(value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromInteger(schema, references, value) {\n if (!IsInteger(value)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromIntersect(schema, references, value) {\n const check1 = schema.allOf.every((schema) => Visit(schema, references, value));\n if (schema.unevaluatedProperties === false) {\n const keyPattern = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key));\n return check1 && check2;\n }\n else if (IsSchema(schema.unevaluatedProperties)) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key]));\n return check1 && check2;\n }\n else {\n return check1;\n }\n}\nfunction FromIterator(schema, references, value) {\n return IsIterator(value);\n}\nfunction FromLiteral(schema, references, value) {\n return value === schema.const;\n}\nfunction FromNever(schema, references, value) {\n return false;\n}\nfunction FromNot(schema, references, value) {\n return !Visit(schema.not, references, value);\n}\nfunction FromNull(schema, references, value) {\n return IsNull(value);\n}\nfunction FromNumber(schema, references, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromObject(schema, references, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return false;\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n if (!Visit(property, references, value[knownKey])) {\n return false;\n }\n if ((ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) {\n return false;\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) {\n return false;\n }\n }\n }\n if (schema.additionalProperties === false) {\n const valueKeys = Object.getOwnPropertyNames(value);\n // optimization: value is valid if schemaKey length matches the valueKey length\n if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {\n return true;\n }\n else {\n return valueKeys.every((valueKey) => knownKeys.includes(valueKey));\n }\n }\n else if (typeof schema.additionalProperties === 'object') {\n const valueKeys = Object.getOwnPropertyNames(value);\n return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key]));\n }\n else {\n return true;\n }\n}\nfunction FromPromise(schema, references, value) {\n return IsPromise(value);\n}\nfunction FromRecord(schema, references, value) {\n if (!TypeSystemPolicy.IsRecordLike(value)) {\n return false;\n }\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n // prettier-ignore\n const check1 = Object.entries(value).every(([key, value]) => {\n return (regex.test(key)) ? Visit(patternSchema, references, value) : true;\n });\n // prettier-ignore\n const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {\n return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;\n }) : true;\n const check3 = schema.additionalProperties === false\n ? Object.getOwnPropertyNames(value).every((key) => {\n return regex.test(key);\n })\n : true;\n return check1 && check2 && check3;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromRegExp(schema, references, value) {\n const regex = new RegExp(schema.source, schema.flags);\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n return regex.test(value);\n}\nfunction FromString(schema, references, value) {\n if (!IsString(value)) {\n return false;\n }\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n if (IsDefined(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value))\n return false;\n }\n if (IsDefined(schema.format)) {\n if (!FormatRegistry.Has(schema.format))\n return false;\n const func = FormatRegistry.Get(schema.format);\n return func(value);\n }\n return true;\n}\nfunction FromSymbol(schema, references, value) {\n return IsSymbol(value);\n}\nfunction FromTemplateLiteral(schema, references, value) {\n return IsString(value) && new RegExp(schema.pattern).test(value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value)) {\n return false;\n }\n if (schema.items === undefined && !(value.length === 0)) {\n return false;\n }\n if (!(value.length === schema.maxItems)) {\n return false;\n }\n if (!schema.items) {\n return true;\n }\n for (let i = 0; i < schema.items.length; i++) {\n if (!Visit(schema.items[i], references, value[i]))\n return false;\n }\n return true;\n}\nfunction FromUndefined(schema, references, value) {\n return IsUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n return schema.anyOf.some((inner) => Visit(inner, references, value));\n}\nfunction FromUint8Array(schema, references, value) {\n if (!IsUint8Array(value)) {\n return false;\n }\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n return false;\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n return false;\n }\n return true;\n}\nfunction FromUnknown(schema, references, value) {\n return true;\n}\nfunction FromVoid(schema, references, value) {\n return TypeSystemPolicy.IsVoidLike(value);\n}\nfunction FromKind(schema, references, value) {\n if (!TypeRegistry.Has(schema[Kind]))\n return false;\n const func = TypeRegistry.Get(schema[Kind]);\n return func(schema, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsDefined(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_, value);\n case 'Argument':\n return FromArgument(schema_, references_, value);\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Function':\n return FromFunction(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Iterator':\n return FromIterator(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Not':\n return FromNot(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Promise':\n return FromPromise(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'RegExp':\n return FromRegExp(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_, value);\n case 'Unknown':\n return FromUnknown(schema_, references_, value);\n case 'Void':\n return FromVoid(schema_, references_, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCheckUnknownTypeError(schema_);\n return FromKind(schema_, references_, value);\n }\n}\n/** Returns true if the value matches the given type. */\nexport function Check(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeSystemPolicy } from '../system/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { GetErrorFunction } from './function.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Check } from '../value/check/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nexport var ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nexport class ValueErrorsUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nexport class ValueErrorIterator {\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value, errors = []) {\n return {\n type: errorType,\n schema,\n path,\n value,\n message: GetErrorFunction()({ errorType, path, schema, value, errors }),\n errors,\n };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArgument(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!IsArray(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!IsAsyncIterator(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!IsBigInt(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!IsBoolean(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!IsDate(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!IsFunction(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromImport(schema, references, path, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n yield* Visit(target, [...references, ...definitions], path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!IsInteger(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n let hasError = false;\n for (const inner of schema.allOf) {\n for (const error of Visit(inner, references, path, value)) {\n hasError = true;\n yield error;\n }\n }\n if (hasError) {\n return yield Create(ValueErrorType.Intersect, schema, path, value);\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!IsIterator(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!IsNull(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!IsPromise(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if (IsString(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if (IsString(schema.format)) {\n if (!FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!IsSymbol(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!IsArray(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!IsUndefined(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n if (Check(schema, references, value))\n return;\n const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit(variant, references, path, value)));\n yield Create(ValueErrorType.Union, schema, path, value, errors);\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!IsUint8Array(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = TypeRegistry.Get(schema[Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Argument':\n return yield* FromArgument(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Import':\n return yield* FromImport(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nexport function Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AssertError_instances, _AssertError_iterator, _AssertError_Iterator;\nimport { Errors, ValueErrorIterator } from '../../errors/index.mjs';\nimport { TypeBoxError } from '../../type/error/error.mjs';\nimport { Check } from '../check/check.mjs';\n// ------------------------------------------------------------------\n// AssertError\n// ------------------------------------------------------------------\nexport class AssertError extends TypeBoxError {\n constructor(iterator) {\n const error = iterator.First();\n super(error === undefined ? 'Invalid Value' : error.message);\n _AssertError_instances.add(this);\n _AssertError_iterator.set(this, void 0);\n __classPrivateFieldSet(this, _AssertError_iterator, iterator, \"f\");\n this.error = error;\n }\n /** Returns an iterator for each error in this value. */\n Errors() {\n return new ValueErrorIterator(__classPrivateFieldGet(this, _AssertError_instances, \"m\", _AssertError_Iterator).call(this));\n }\n}\n_AssertError_iterator = new WeakMap(), _AssertError_instances = new WeakSet(), _AssertError_Iterator = function* _AssertError_Iterator() {\n if (this.error)\n yield this.error;\n yield* __classPrivateFieldGet(this, _AssertError_iterator, \"f\");\n};\n// ------------------------------------------------------------------\n// AssertValue\n// ------------------------------------------------------------------\nfunction AssertValue(schema, references, value) {\n if (Check(schema, references, value))\n return;\n throw new AssertError(Errors(schema, references, value));\n}\n/** Asserts a value matches the given type or throws an `AssertError` if invalid */\nexport function Assert(...args) {\n return args.length === 3 ? AssertValue(args[0], args[1], args[2]) : AssertValue(args[0], [], args[1]);\n}\n", "// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsDate, IsMap, IsSet, IsObject, IsTypedArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Clonable\n// ------------------------------------------------------------------\nfunction FromObject(value) {\n const Acc = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n Acc[key] = Clone(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n Acc[key] = Clone(value[key]);\n }\n return Acc;\n}\nfunction FromArray(value) {\n return value.map((element) => Clone(element));\n}\nfunction FromTypedArray(value) {\n return value.slice();\n}\nfunction FromMap(value) {\n return new Map(Clone([...value.entries()]));\n}\nfunction FromSet(value) {\n return new Set(Clone([...value.entries()]));\n}\nfunction FromDate(value) {\n return new Date(value.toISOString());\n}\nfunction FromValue(value) {\n return value;\n}\n// ------------------------------------------------------------------\n// Clone\n// ------------------------------------------------------------------\n/** Returns a clone of the given value */\nexport function Clone(value) {\n if (IsArray(value))\n return FromArray(value);\n if (IsDate(value))\n return FromDate(value);\n if (IsTypedArray(value))\n return FromTypedArray(value);\n if (IsMap(value))\n return FromMap(value);\n if (IsSet(value))\n return FromSet(value);\n if (IsObject(value))\n return FromObject(value);\n if (IsValueType(value))\n return FromValue(value);\n throw new Error('ValueClone: Unable to clone value');\n}\n", "import { HasPropertyKey } from '../guard/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { TemplateLiteralGenerate, IsTemplateLiteralFinite } from '../../type/template-literal/index.mjs';\nimport { TypeRegistry } from '../../type/registry/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { IsFunction } from '../guard/guard.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCreateError extends TypeBoxError {\n constructor(schema, message) {\n super(message);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction FromDefault(value) {\n return IsFunction(value) ? value() : Clone(value);\n}\n// ------------------------------------------------------------------\n// Create\n// ------------------------------------------------------------------\nfunction FromAny(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromArgument(schema, references) {\n return {};\n}\nfunction FromArray(schema, references) {\n if (schema.uniqueItems === true && !HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'Array with the uniqueItems constraint requires a default value');\n }\n else if ('contains' in schema && !HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'Array with the contains constraint requires a default value');\n }\n else if ('default' in schema) {\n return FromDefault(schema.default);\n }\n else if (schema.minItems !== undefined) {\n return Array.from({ length: schema.minItems }).map((item) => {\n return Visit(schema.items, references);\n });\n }\n else {\n return [];\n }\n}\nfunction FromAsyncIterator(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return (async function* () { })();\n }\n}\nfunction FromBigInt(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return BigInt(0);\n }\n}\nfunction FromBoolean(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return false;\n }\n}\nfunction FromConstructor(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n const value = Visit(schema.returns, references);\n if (typeof value === 'object' && !Array.isArray(value)) {\n return class {\n constructor() {\n for (const [key, val] of Object.entries(value)) {\n const self = this;\n self[key] = val;\n }\n }\n };\n }\n else {\n return class {\n };\n }\n }\n}\nfunction FromDate(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimumTimestamp !== undefined) {\n return new Date(schema.minimumTimestamp);\n }\n else {\n return new Date();\n }\n}\nfunction FromFunction(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return () => Visit(schema.returns, references);\n }\n}\nfunction FromImport(schema, references) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions]);\n}\nfunction FromInteger(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimum !== undefined) {\n return schema.minimum;\n }\n else {\n return 0;\n }\n}\nfunction FromIntersect(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n // --------------------------------------------------------------\n // Note: The best we can do here is attempt to instance each\n // sub type and apply through object assign. For non-object\n // sub types, we just escape the assignment and just return\n // the value. In the latter case, this is typically going to\n // be a consequence of an illogical intersection.\n // --------------------------------------------------------------\n const value = schema.allOf.reduce((acc, schema) => {\n const next = Visit(schema, references);\n return typeof next === 'object' ? { ...acc, ...next } : next;\n }, {});\n if (!Check(schema, references, value))\n throw new ValueCreateError(schema, 'Intersect produced invalid value. Consider using a default value.');\n return value;\n }\n}\nfunction FromIterator(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return (function* () { })();\n }\n}\nfunction FromLiteral(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return schema.const;\n }\n}\nfunction FromNever(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'Never types cannot be created. Consider using a default value.');\n }\n}\nfunction FromNot(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'Not types must have a default value');\n }\n}\nfunction FromNull(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return null;\n }\n}\nfunction FromNumber(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimum !== undefined) {\n return schema.minimum;\n }\n else {\n return 0;\n }\n}\nfunction FromObject(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n const required = new Set(schema.required);\n const Acc = {};\n for (const [key, subschema] of Object.entries(schema.properties)) {\n if (!required.has(key))\n continue;\n Acc[key] = Visit(subschema, references);\n }\n return Acc;\n }\n}\nfunction FromPromise(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Promise.resolve(Visit(schema.item, references));\n }\n}\nfunction FromRecord(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromRef(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Visit(Deref(schema, references), references);\n }\n}\nfunction FromRegExp(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'RegExp types cannot be created. Consider using a default value.');\n }\n}\nfunction FromString(schema, references) {\n if (schema.pattern !== undefined) {\n if (!HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'String types with patterns must specify a default value');\n }\n else {\n return FromDefault(schema.default);\n }\n }\n else if (schema.format !== undefined) {\n if (!HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'String types with formats must specify a default value');\n }\n else {\n return FromDefault(schema.default);\n }\n }\n else {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minLength !== undefined) {\n // prettier-ignore\n return Array.from({ length: schema.minLength }).map(() => ' ').join('');\n }\n else {\n return '';\n }\n }\n}\nfunction FromSymbol(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if ('value' in schema) {\n return Symbol.for(schema.value);\n }\n else {\n return Symbol();\n }\n}\nfunction FromTemplateLiteral(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n if (!IsTemplateLiteralFinite(schema))\n throw new ValueCreateError(schema, 'Can only create template literals that produce a finite variants. Consider using a default value.');\n const generated = TemplateLiteralGenerate(schema);\n return generated[0];\n}\nfunction FromThis(schema, references) {\n if (recursiveDepth++ > recursiveMaxDepth)\n throw new ValueCreateError(schema, 'Cannot create recursive type as it appears possibly infinite. Consider using a default.');\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Visit(Deref(schema, references), references);\n }\n}\nfunction FromTuple(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n if (schema.items === undefined) {\n return [];\n }\n else {\n return Array.from({ length: schema.minItems }).map((_, index) => Visit(schema.items[index], references));\n }\n}\nfunction FromUndefined(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return undefined;\n }\n}\nfunction FromUnion(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.anyOf.length === 0) {\n throw new Error('ValueCreate.Union: Cannot create Union with zero variants');\n }\n else {\n return Visit(schema.anyOf[0], references);\n }\n}\nfunction FromUint8Array(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minByteLength !== undefined) {\n return new Uint8Array(schema.minByteLength);\n }\n else {\n return new Uint8Array(0);\n }\n}\nfunction FromUnknown(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromVoid(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return void 0;\n }\n}\nfunction FromKind(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new Error('User defined types must specify a default value');\n }\n}\nfunction Visit(schema, references) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_);\n case 'Argument':\n return FromArgument(schema_, references_);\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'BigInt':\n return FromBigInt(schema_, references_);\n case 'Boolean':\n return FromBoolean(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Date':\n return FromDate(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Import':\n return FromImport(schema_, references_);\n case 'Integer':\n return FromInteger(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Literal':\n return FromLiteral(schema_, references_);\n case 'Never':\n return FromNever(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Null':\n return FromNull(schema_, references_);\n case 'Number':\n return FromNumber(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'RegExp':\n return FromRegExp(schema_, references_);\n case 'String':\n return FromString(schema_, references_);\n case 'Symbol':\n return FromSymbol(schema_, references_);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Undefined':\n return FromUndefined(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_);\n case 'Unknown':\n return FromUnknown(schema_, references_);\n case 'Void':\n return FromVoid(schema_, references_);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCreateError(schema_, 'Unknown type');\n return FromKind(schema_, references_);\n }\n}\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nconst recursiveMaxDepth = 512;\nlet recursiveDepth = 0;\n/** Creates a value from the given schema */\nexport function Create(...args) {\n recursiveDepth = 0;\n return args.length === 2 ? Visit(args[0], args[1]) : Visit(args[0], []);\n}\n", "import { IsObject, IsArray, IsString, IsNumber, IsNull } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { Create } from '../create/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCastError extends TypeBoxError {\n constructor(schema, message) {\n super(message);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// The following logic assigns a score to a schema based on how well\n// it matches a given value. For object types, the score is calculated\n// by evaluating each property of the value against the schema's\n// properties. To avoid bias towards objects with many properties,\n// each property contributes equally to the total score. Properties\n// that exactly match literal values receive the highest possible\n// score, as literals are often used as discriminators in union types.\n// ------------------------------------------------------------------\nfunction ScoreUnion(schema, references, value) {\n if (schema[Kind] === 'Object' && typeof value === 'object' && !IsNull(value)) {\n const object = schema;\n const keys = Object.getOwnPropertyNames(value);\n const entries = Object.entries(object.properties);\n return entries.reduce((acc, [key, schema]) => {\n const literal = schema[Kind] === 'Literal' && schema.const === value[key] ? 100 : 0;\n const checks = Check(schema, references, value[key]) ? 10 : 0;\n const exists = keys.includes(key) ? 1 : 0;\n return acc + (literal + checks + exists);\n }, 0);\n }\n else if (schema[Kind] === 'Union') {\n const schemas = schema.anyOf.map((schema) => Deref(schema, references));\n const scores = schemas.map((schema) => ScoreUnion(schema, references, value));\n return Math.max(...scores);\n }\n else {\n return Check(schema, references, value) ? 1 : 0;\n }\n}\nfunction SelectUnion(union, references, value) {\n const schemas = union.anyOf.map((schema) => Deref(schema, references));\n let [select, best] = [schemas[0], 0];\n for (const schema of schemas) {\n const score = ScoreUnion(schema, references, value);\n if (score > best) {\n select = schema;\n best = score;\n }\n }\n return select;\n}\nfunction CastUnion(union, references, value) {\n if ('default' in union) {\n return typeof value === 'function' ? union.default : Clone(union.default);\n }\n else {\n const schema = SelectUnion(union, references, value);\n return Cast(schema, references, value);\n }\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction DefaultClone(schema, references, value) {\n return Check(schema, references, value) ? Clone(value) : Create(schema, references);\n}\nfunction Default(schema, references, value) {\n return Check(schema, references, value) ? value : Create(schema, references);\n}\n// ------------------------------------------------------------------\n// Cast\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n const created = IsArray(value) ? Clone(value) : Create(schema, references);\n const minimum = IsNumber(schema.minItems) && created.length < schema.minItems ? [...created, ...Array.from({ length: schema.minItems - created.length }, () => null)] : created;\n const maximum = IsNumber(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum;\n const casted = maximum.map((value) => Visit(schema.items, references, value));\n if (schema.uniqueItems !== true)\n return casted;\n const unique = [...new Set(casted)];\n if (!Check(schema, references, unique))\n throw new ValueCastError(schema, 'Array cast produced invalid data due to uniqueItems constraint');\n return unique;\n}\nfunction FromConstructor(schema, references, value) {\n if (Check(schema, references, value))\n return Create(schema, references);\n const required = new Set(schema.returns.required || []);\n const result = function () { };\n for (const [key, property] of Object.entries(schema.returns.properties)) {\n if (!required.has(key) && value.prototype[key] === undefined)\n continue;\n result.prototype[key] = Visit(property, references, value.prototype[key]);\n }\n return result;\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\nfunction IntersectAssign(correct, value) {\n // trust correct on mismatch | value on non-object\n if ((IsObject(correct) && !IsObject(value)) || (!IsObject(correct) && IsObject(value)))\n return correct;\n if (!IsObject(correct) || !IsObject(value))\n return value;\n return globalThis.Object.getOwnPropertyNames(correct).reduce((result, key) => {\n const property = key in value ? IntersectAssign(correct[key], value[key]) : correct[key];\n return { ...result, [key]: property };\n }, {});\n}\nfunction FromIntersect(schema, references, value) {\n if (Check(schema, references, value))\n return value;\n const correct = Create(schema, references);\n const assigned = IntersectAssign(correct, value);\n return Check(schema, references, assigned) ? assigned : correct;\n}\nfunction FromNever(schema, references, value) {\n throw new ValueCastError(schema, 'Never types cannot be cast');\n}\nfunction FromObject(schema, references, value) {\n if (Check(schema, references, value))\n return value;\n if (value === null || typeof value !== 'object')\n return Create(schema, references);\n const required = new Set(schema.required || []);\n const result = {};\n for (const [key, property] of Object.entries(schema.properties)) {\n if (!required.has(key) && value[key] === undefined)\n continue;\n result[key] = Visit(property, references, value[key]);\n }\n // additional schema properties\n if (typeof schema.additionalProperties === 'object') {\n const propertyNames = Object.getOwnPropertyNames(schema.properties);\n for (const propertyName of Object.getOwnPropertyNames(value)) {\n if (propertyNames.includes(propertyName))\n continue;\n result[propertyName] = Visit(schema.additionalProperties, references, value[propertyName]);\n }\n }\n return result;\n}\nfunction FromRecord(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date)\n return Create(schema, references);\n const subschemaPropertyName = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const subschema = schema.patternProperties[subschemaPropertyName];\n const result = {};\n for (const [propKey, propValue] of Object.entries(value)) {\n result[propKey] = Visit(subschema, references, propValue);\n }\n return result;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n if (!IsArray(value))\n return Create(schema, references);\n if (schema.items === undefined)\n return [];\n return schema.items.map((schema, index) => Visit(schema, references, value[index]));\n}\nfunction FromUnion(schema, references, value) {\n return Check(schema, references, value) ? Clone(value) : CastUnion(schema, references, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsString(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema[Kind]) {\n // --------------------------------------------------------------\n // Structural\n // --------------------------------------------------------------\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n // --------------------------------------------------------------\n // DefaultClone\n // --------------------------------------------------------------\n case 'Date':\n case 'Symbol':\n case 'Uint8Array':\n return DefaultClone(schema, references, value);\n // --------------------------------------------------------------\n // Default\n // --------------------------------------------------------------\n default:\n return Default(schema_, references_, value);\n }\n}\n/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */\nexport function Cast(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { KeyOfPropertyKeys } from '../../type/keyof/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { HasPropertyKey, IsString, IsObject, IsArray, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsKind } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// IsCheckable\n// ------------------------------------------------------------------\nfunction IsCheckable(schema) {\n return IsKind(schema) && schema[Kind] !== 'Unsafe';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return value;\n return value.map((value) => Visit(schema.items, references, value));\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromIntersect(schema, references, value) {\n const unevaluatedProperties = schema.unevaluatedProperties;\n const intersections = schema.allOf.map((schema) => Visit(schema, references, Clone(value)));\n const composite = intersections.reduce((acc, value) => (IsObject(value) ? { ...acc, ...value } : value), {});\n if (!IsObject(value) || !IsObject(composite) || !IsKind(unevaluatedProperties))\n return composite;\n const knownkeys = KeyOfPropertyKeys(schema);\n for (const key of Object.getOwnPropertyNames(value)) {\n if (knownkeys.includes(key))\n continue;\n if (Check(unevaluatedProperties, references, value[key])) {\n composite[key] = Visit(unevaluatedProperties, references, value[key]);\n }\n }\n return composite;\n}\nfunction FromObject(schema, references, value) {\n if (!IsObject(value) || IsArray(value))\n return value; // Check IsArray for AllowArrayObject configuration\n const additionalProperties = schema.additionalProperties;\n for (const key of Object.getOwnPropertyNames(value)) {\n if (HasPropertyKey(schema.properties, key)) {\n value[key] = Visit(schema.properties[key], references, value[key]);\n continue;\n }\n if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) {\n value[key] = Visit(additionalProperties, references, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\nfunction FromRecord(schema, references, value) {\n if (!IsObject(value))\n return value;\n const additionalProperties = schema.additionalProperties;\n const propertyKeys = Object.getOwnPropertyNames(value);\n const [propertyKey, propertySchema] = Object.entries(schema.patternProperties)[0];\n const propertyKeyTest = new RegExp(propertyKey);\n for (const key of propertyKeys) {\n if (propertyKeyTest.test(key)) {\n value[key] = Visit(propertySchema, references, value[key]);\n continue;\n }\n if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) {\n value[key] = Visit(additionalProperties, references, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value))\n return value;\n if (IsUndefined(schema.items))\n return [];\n const length = Math.min(value.length, schema.items.length);\n for (let i = 0; i < length; i++) {\n value[i] = Visit(schema.items[i], references, value[i]);\n }\n // prettier-ignore\n return value.length > length\n ? value.slice(0, length)\n : value;\n}\nfunction FromUnion(schema, references, value) {\n for (const inner of schema.anyOf) {\n if (IsCheckable(inner) && Check(inner, references, value)) {\n return Visit(inner, references, value);\n }\n }\n return value;\n}\nfunction Visit(schema, references, value) {\n const references_ = IsString(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return value;\n }\n}\n/** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */\nexport function Clean(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { Clone } from '../clone/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsObject, IsDate, IsUndefined, IsString, IsNumber, IsBoolean, IsBigInt, IsSymbol, HasPropertyKey } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Conversions\n// ------------------------------------------------------------------\nfunction IsStringNumeric(value) {\n return IsString(value) && !isNaN(value) && !isNaN(parseFloat(value));\n}\nfunction IsValueToString(value) {\n return IsBigInt(value) || IsBoolean(value) || IsNumber(value);\n}\nfunction IsValueTrue(value) {\n return value === true || (IsNumber(value) && value === 1) || (IsBigInt(value) && value === BigInt('1')) || (IsString(value) && (value.toLowerCase() === 'true' || value === '1'));\n}\nfunction IsValueFalse(value) {\n return value === false || (IsNumber(value) && (value === 0 || Object.is(value, -0))) || (IsBigInt(value) && value === BigInt('0')) || (IsString(value) && (value.toLowerCase() === 'false' || value === '0' || value === '-0'));\n}\nfunction IsTimeStringWithTimeZone(value) {\n return IsString(value) && /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i.test(value);\n}\nfunction IsTimeStringWithoutTimeZone(value) {\n return IsString(value) && /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)?$/i.test(value);\n}\nfunction IsDateTimeStringWithTimeZone(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i.test(value);\n}\nfunction IsDateTimeStringWithoutTimeZone(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)?$/i.test(value);\n}\nfunction IsDateString(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/i.test(value);\n}\n// ------------------------------------------------------------------\n// Convert\n// ------------------------------------------------------------------\nfunction TryConvertLiteralString(value, target) {\n const conversion = TryConvertString(value);\n return conversion === target ? conversion : value;\n}\nfunction TryConvertLiteralNumber(value, target) {\n const conversion = TryConvertNumber(value);\n return conversion === target ? conversion : value;\n}\nfunction TryConvertLiteralBoolean(value, target) {\n const conversion = TryConvertBoolean(value);\n return conversion === target ? conversion : value;\n}\n// prettier-ignore\nfunction TryConvertLiteral(schema, value) {\n return (IsString(schema.const) ? TryConvertLiteralString(value, schema.const) :\n IsNumber(schema.const) ? TryConvertLiteralNumber(value, schema.const) :\n IsBoolean(schema.const) ? TryConvertLiteralBoolean(value, schema.const) :\n value);\n}\nfunction TryConvertBoolean(value) {\n return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value;\n}\nfunction TryConvertBigInt(value) {\n const truncateInteger = (value) => value.split('.')[0];\n return IsStringNumeric(value) ? BigInt(truncateInteger(value)) : IsNumber(value) ? BigInt(Math.trunc(value)) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value;\n}\nfunction TryConvertString(value) {\n return IsSymbol(value) && value.description !== undefined ? value.description.toString() : IsValueToString(value) ? value.toString() : value;\n}\nfunction TryConvertNumber(value) {\n return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;\n}\nfunction TryConvertInteger(value) {\n return IsStringNumeric(value) ? parseInt(value) : IsNumber(value) ? Math.trunc(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;\n}\nfunction TryConvertNull(value) {\n return IsString(value) && value.toLowerCase() === 'null' ? null : value;\n}\nfunction TryConvertUndefined(value) {\n return IsString(value) && value === 'undefined' ? undefined : value;\n}\n// ------------------------------------------------------------------\n// note: this function may return an invalid dates for the regex\n// tests above. Invalid dates will however be checked during the\n// casting function and will return a epoch date if invalid.\n// Consider better string parsing for the iso dates in future\n// revisions.\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction TryConvertDate(value) {\n return (IsDate(value) ? value :\n IsNumber(value) ? new Date(value) :\n IsValueTrue(value) ? new Date(1) :\n IsValueFalse(value) ? new Date(0) :\n IsStringNumeric(value) ? new Date(parseInt(value)) :\n IsTimeStringWithoutTimeZone(value) ? new Date(`1970-01-01T${value}.000Z`) :\n IsTimeStringWithTimeZone(value) ? new Date(`1970-01-01T${value}`) :\n IsDateTimeStringWithoutTimeZone(value) ? new Date(`${value}.000Z`) :\n IsDateTimeStringWithTimeZone(value) ? new Date(value) :\n IsDateString(value) ? new Date(`${value}T00:00:00.000Z`) :\n value);\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction Default(value) {\n return value;\n}\n// ------------------------------------------------------------------\n// Convert\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n const elements = IsArray(value) ? value : [value];\n return elements.map((element) => Visit(schema.items, references, element));\n}\nfunction FromBigInt(schema, references, value) {\n return TryConvertBigInt(value);\n}\nfunction FromBoolean(schema, references, value) {\n return TryConvertBoolean(value);\n}\nfunction FromDate(schema, references, value) {\n return TryConvertDate(value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromInteger(schema, references, value) {\n return TryConvertInteger(value);\n}\nfunction FromIntersect(schema, references, value) {\n return schema.allOf.reduce((value, schema) => Visit(schema, references, value), value);\n}\nfunction FromLiteral(schema, references, value) {\n return TryConvertLiteral(schema, value);\n}\nfunction FromNull(schema, references, value) {\n return TryConvertNull(value);\n}\nfunction FromNumber(schema, references, value) {\n return TryConvertNumber(value);\n}\n// prettier-ignore\nfunction FromObject(schema, references, value) {\n if (!IsObject(value) || IsArray(value))\n return value;\n for (const propertyKey of Object.getOwnPropertyNames(schema.properties)) {\n if (!HasPropertyKey(value, propertyKey))\n continue;\n value[propertyKey] = Visit(schema.properties[propertyKey], references, value[propertyKey]);\n }\n return value;\n}\nfunction FromRecord(schema, references, value) {\n const isConvertable = IsObject(value) && !IsArray(value);\n if (!isConvertable)\n return value;\n const propertyKey = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[propertyKey];\n for (const [propKey, propValue] of Object.entries(value)) {\n value[propKey] = Visit(property, references, propValue);\n }\n return value;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromString(schema, references, value) {\n return TryConvertString(value);\n}\nfunction FromSymbol(schema, references, value) {\n return IsString(value) || IsNumber(value) ? Symbol(value) : value;\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, value) {\n const isConvertable = IsArray(value) && !IsUndefined(schema.items);\n if (!isConvertable)\n return value;\n return value.map((value, index) => {\n return (index < schema.items.length)\n ? Visit(schema.items[index], references, value)\n : value;\n });\n}\nfunction FromUndefined(schema, references, value) {\n return TryConvertUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n // Check if original value already matches one of the union variants\n for (const subschema of schema.anyOf) {\n if (Check(subschema, references, value)) {\n return value;\n }\n }\n // Attempt conversion for each variant\n for (const subschema of schema.anyOf) {\n const converted = Visit(subschema, references, Clone(value));\n if (!Check(subschema, references, converted))\n continue;\n return converted;\n }\n return value;\n}\nfunction Visit(schema, references, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return Default(value);\n }\n}\n/** `[Mutable]` Converts any type mismatched values to their target type if a reasonable conversion is possible. */\n// prettier-ignore\nexport function Convert(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// thrown externally\n// prettier-ignore\nexport class TransformDecodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`Unable to decode value as it does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformDecodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(error instanceof Error ? error.message : 'Unknown error');\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Decode(value) : value;\n }\n catch (error) {\n throw new TransformDecodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n return (IsArray(value))\n ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value)))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n if (!IsObject(value) || IsValueType(value))\n return Default(schema, path, value);\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...value };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromImport(schema, references, path, value) {\n const additional = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n const result = Visit(target, [...references, ...additional], path, value);\n return Default(schema, path, result);\n}\nfunction FromNot(schema, references, path, value) {\n return Default(schema, path, Visit(schema.not, references, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n if (!IsObject(value))\n return Default(schema, path, value);\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...value };\n for (const key of knownKeys) {\n if (!HasPropertyKey(knownProperties, key))\n continue;\n // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n // property policy, then we need to continue. This is a special case for optional property handling \n // where a transforms wrapped in a optional modifiers should not run.\n if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n continue;\n // decode property\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n if (!IsObject(value))\n return Default(schema, path, value);\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...value };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n return (IsArray(value) && IsArray(schema.items))\n ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index])))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n // note: ensure interior is decoded first\n const decoded = Visit(subschema, references, path, value);\n return Default(schema, path, decoded);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Import':\n return FromImport(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'Symbol':\n return Default(schema_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Decodes the value and returns the result. This function requires that\n * the caller `Check` the value before use. Passing unchecked values may result in\n * undefined behavior. Refer to the `Value.Decode()` for implementation details.\n */\nexport function TransformDecode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TransformEncodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`The encoded value does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformEncodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(`${error instanceof Error ? error.message : 'Unknown error'}`);\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Encode(value) : value;\n }\n catch (error) {\n throw new TransformEncodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n return IsArray(defaulted)\n ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value))\n : defaulted;\n}\n// prettier-ignore\nfunction FromImport(schema, references, path, value) {\n const additional = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n const result = Default(schema, path, value);\n return Visit(target, [...references, ...additional], path, result);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(value) || IsValueType(value))\n return defaulted;\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...defaulted };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromNot(schema, references, path, value) {\n return Default(schema.not, path, Default(schema, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(defaulted))\n return defaulted;\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...defaulted };\n for (const key of knownKeys) {\n if (!HasPropertyKey(knownProperties, key))\n continue;\n // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n // property policy, then we need to continue. This is a special case for optional property handling \n // where a transforms wrapped in a optional modifiers should not run.\n if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n continue;\n // encode property\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(value))\n return defaulted;\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...defaulted };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n const value1 = Default(schema, path, value);\n return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index])) : [];\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n // test value against union variants\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n const value1 = Visit(subschema, references, path, value);\n return Default(schema, path, value1);\n }\n // test transformed value against union variants\n for (const subschema of schema.anyOf) {\n const value1 = Visit(subschema, references, path, value);\n if (!Check(schema, references, value1))\n continue;\n return Default(schema, path, value1);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Import':\n return FromImport(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Encodes the value and returns the result. This function expects the\n * caller to pass a statically checked value. This function does not check the encoded\n * result, meaning the result should be passed to `Check` before use. Refer to the\n * `Value.Encode()` function for implementation details.\n */\nexport function TransformEncode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n", "import { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/index.mjs';\n// prettier-ignore\nfunction FromArray(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromImport(schema, references) {\n const additional = globalThis.Object.getOwnPropertyNames(schema.$defs).reduce((result, key) => [...result, schema.$defs[key]], []);\n const target = schema.$defs[schema.$ref];\n return IsTransform(schema) || Visit(target, [...additional, ...references]);\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromNot(schema, references) {\n return IsTransform(schema) || Visit(schema.not, references);\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n return (IsTransform(schema) ||\n Object.values(schema.properties).some((schema) => Visit(schema, references)) ||\n (IsSchema(schema.additionalProperties) && Visit(schema.additionalProperties, references)));\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n return IsTransform(schema) || Visit(schema.item, references);\n}\n// prettier-ignore\nfunction FromRecord(schema, references) {\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[pattern];\n return IsTransform(schema) || Visit(property, references) || (IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties));\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromThis(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n return IsTransform(schema) || (!IsUndefined(schema.items) && schema.items.some((schema) => Visit(schema, references)));\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n return IsTransform(schema) || schema.anyOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction Visit(schema, references) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n if (schema.$id && visited.has(schema.$id))\n return false;\n if (schema.$id)\n visited.add(schema.$id);\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Import':\n return FromImport(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n default:\n return IsTransform(schema);\n }\n}\nconst visited = new Set();\n/** Returns true if this schema contains a transform codec */\nexport function HasTransform(schema, references) {\n visited.clear();\n return Visit(schema, references);\n}\n", "import { HasTransform, TransformDecode, TransformDecodeCheckError } from '../transform/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../../errors/index.mjs';\n/** Decodes a value or throws if error */\nexport function Decode(...args) {\n const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];\n if (!Check(schema, references, value))\n throw new TransformDecodeCheckError(schema, value, Errors(schema, references, value).First());\n return HasTransform(schema, references) ? TransformDecode(schema, references, value) : value;\n}\n", "import { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsDate, IsFunction, IsObject, IsUndefined, HasPropertyKey } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsKind } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// ValueOrDefault\n// ------------------------------------------------------------------\nfunction ValueOrDefault(schema, value) {\n const defaultValue = HasPropertyKey(schema, 'default') ? schema.default : undefined;\n const clone = IsFunction(defaultValue) ? defaultValue() : Clone(defaultValue);\n return IsUndefined(value) ? clone : IsObject(value) && IsObject(clone) ? Object.assign(clone, value) : value;\n}\n// ------------------------------------------------------------------\n// HasDefaultProperty\n// ------------------------------------------------------------------\nfunction HasDefaultProperty(schema) {\n return IsKind(schema) && 'default' in schema;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n // if the value is an array, we attempt to initialize it's elements\n if (IsArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = Visit(schema.items, references, value[i]);\n }\n return value;\n }\n // ... otherwise use default initialization\n const defaulted = ValueOrDefault(schema, value);\n if (!IsArray(defaulted))\n return defaulted;\n for (let i = 0; i < defaulted.length; i++) {\n defaulted[i] = Visit(schema.items, references, defaulted[i]);\n }\n return defaulted;\n}\nfunction FromDate(schema, references, value) {\n // special case intercept for dates\n return IsDate(value) ? value : ValueOrDefault(schema, value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromIntersect(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n return schema.allOf.reduce((acc, schema) => {\n const next = Visit(schema, references, defaulted);\n return IsObject(next) ? { ...acc, ...next } : next;\n }, {});\n}\nfunction FromObject(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n // return defaulted\n if (!IsObject(defaulted))\n return defaulted;\n const knownPropertyKeys = Object.getOwnPropertyNames(schema.properties);\n // properties\n for (const key of knownPropertyKeys) {\n // note: we need to traverse into the object and test if the return value\n // yielded a non undefined result. Here we interpret an undefined result as\n // a non assignable property and continue.\n const propertyValue = Visit(schema.properties[key], references, defaulted[key]);\n if (IsUndefined(propertyValue))\n continue;\n defaulted[key] = Visit(schema.properties[key], references, defaulted[key]);\n }\n // return if not additional properties\n if (!HasDefaultProperty(schema.additionalProperties))\n return defaulted;\n // additional properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (knownPropertyKeys.includes(key))\n continue;\n defaulted[key] = Visit(schema.additionalProperties, references, defaulted[key]);\n }\n return defaulted;\n}\nfunction FromRecord(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n if (!IsObject(defaulted))\n return defaulted;\n const additionalPropertiesSchema = schema.additionalProperties;\n const [propertyKeyPattern, propertySchema] = Object.entries(schema.patternProperties)[0];\n const knownPropertyKey = new RegExp(propertyKeyPattern);\n // properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (!(knownPropertyKey.test(key) && HasDefaultProperty(propertySchema)))\n continue;\n defaulted[key] = Visit(propertySchema, references, defaulted[key]);\n }\n // return if not additional properties\n if (!HasDefaultProperty(additionalPropertiesSchema))\n return defaulted;\n // additional properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (knownPropertyKey.test(key))\n continue;\n defaulted[key] = Visit(additionalPropertiesSchema, references, defaulted[key]);\n }\n return defaulted;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, ValueOrDefault(schema, value));\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n if (!IsArray(defaulted) || IsUndefined(schema.items))\n return defaulted;\n const [items, max] = [schema.items, Math.max(schema.items.length, defaulted.length)];\n for (let i = 0; i < max; i++) {\n if (i < items.length)\n defaulted[i] = Visit(items[i], references, defaulted[i]);\n }\n return defaulted;\n}\nfunction FromUnion(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n for (const inner of schema.anyOf) {\n const result = Visit(inner, references, Clone(defaulted));\n if (Check(inner, references, result)) {\n return result;\n }\n }\n return defaulted;\n}\nfunction Visit(schema, references, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return ValueOrDefault(schema_, value);\n }\n}\n/** `[Mutable]` Generates missing properties on a value using default schema annotations if available. This function does not check the value and returns an unknown type. You should Check the result before use. Default is a mutable operation. To avoid mutation, Clone the value first. */\nexport function Default(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValuePointerRootSetError extends TypeBoxError {\n constructor(value, path, update) {\n super('Cannot set root value');\n this.value = value;\n this.path = path;\n this.update = update;\n }\n}\nexport class ValuePointerRootDeleteError extends TypeBoxError {\n constructor(value, path) {\n super('Cannot delete root value');\n this.value = value;\n this.path = path;\n }\n}\n// ------------------------------------------------------------------\n// ValuePointer\n// ------------------------------------------------------------------\n/** Provides functionality to update values through RFC6901 string pointers */\n// prettier-ignore\nfunction Escape(component) {\n return component.indexOf('~') === -1 ? component : component.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n/** Formats the given pointer into navigable key components */\n// prettier-ignore\nexport function* Format(pointer) {\n if (pointer === '')\n return;\n let [start, end] = [0, 0];\n for (let i = 0; i < pointer.length; i++) {\n const char = pointer.charAt(i);\n if (char === '/') {\n if (i === 0) {\n start = i + 1;\n }\n else {\n end = i;\n yield Escape(pointer.slice(start, end));\n start = i + 1;\n }\n }\n else {\n end = i;\n }\n }\n yield Escape(pointer.slice(start));\n}\n/** Sets the value at the given pointer. If the value at the pointer does not exist it is created */\n// prettier-ignore\nexport function Set(value, pointer, update) {\n if (pointer === '')\n throw new ValuePointerRootSetError(value, pointer, update);\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined)\n next[component] = {};\n owner = next;\n next = next[component];\n key = component;\n }\n owner[key] = update;\n}\n/** Deletes a value at the given pointer */\n// prettier-ignore\nexport function Delete(value, pointer) {\n if (pointer === '')\n throw new ValuePointerRootDeleteError(value, pointer);\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined || next[component] === null)\n return;\n owner = next;\n next = next[component];\n key = component;\n }\n if (Array.isArray(owner)) {\n const index = parseInt(key);\n owner.splice(index, 1);\n }\n else {\n delete owner[key];\n }\n}\n/** Returns true if a value exists at the given pointer */\n// prettier-ignore\nexport function Has(value, pointer) {\n if (pointer === '')\n return true;\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined)\n return false;\n owner = next;\n next = next[component];\n key = component;\n }\n return Object.getOwnPropertyNames(owner).includes(key);\n}\n/** Gets the value at the given pointer */\n// prettier-ignore\nexport function Get(value, pointer) {\n if (pointer === '')\n return value;\n let current = value;\n for (const component of Format(pointer)) {\n if (current[component] === undefined)\n return undefined;\n current = current[component];\n }\n return current;\n}\n", "import { IsObject, IsDate, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Equality Checks\n// ------------------------------------------------------------------\nfunction ObjectType(left, right) {\n if (!IsObject(right))\n return false;\n const leftKeys = [...Object.keys(left), ...Object.getOwnPropertySymbols(left)];\n const rightKeys = [...Object.keys(right), ...Object.getOwnPropertySymbols(right)];\n if (leftKeys.length !== rightKeys.length)\n return false;\n return leftKeys.every((key) => Equal(left[key], right[key]));\n}\nfunction DateType(left, right) {\n return IsDate(right) && left.getTime() === right.getTime();\n}\nfunction ArrayType(left, right) {\n if (!IsArray(right) || left.length !== right.length)\n return false;\n return left.every((value, index) => Equal(value, right[index]));\n}\nfunction TypedArrayType(left, right) {\n if (!IsTypedArray(right) || left.length !== right.length || Object.getPrototypeOf(left).constructor.name !== Object.getPrototypeOf(right).constructor.name)\n return false;\n return left.every((value, index) => Equal(value, right[index]));\n}\nfunction ValueType(left, right) {\n return left === right;\n}\n// ------------------------------------------------------------------\n// Equal\n// ------------------------------------------------------------------\n/** Returns true if the left value deep-equals the right */\nexport function Equal(left, right) {\n if (IsDate(left))\n return DateType(left, right);\n if (IsTypedArray(left))\n return TypedArrayType(left, right);\n if (IsArray(left))\n return ArrayType(left, right);\n if (IsObject(left))\n return ObjectType(left, right);\n if (IsValueType(left))\n return ValueType(left, right);\n throw new Error('ValueEquals: Unable to compare value');\n}\n", "import { HasPropertyKey, IsStandardObject, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Equal } from '../equal/equal.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Literal } from '../../type/literal/index.mjs';\nimport { Object as _Object_ } from '../../type/object/index.mjs';\nimport { String } from '../../type/string/index.mjs';\nimport { Unknown } from '../../type/unknown/index.mjs';\nimport { Union } from '../../type/union/index.mjs';\nexport const Insert = _Object_({\n type: Literal('insert'),\n path: String(),\n value: Unknown(),\n});\nexport const Update = _Object_({\n type: Literal('update'),\n path: String(),\n value: Unknown(),\n});\nexport const Delete = _Object_({\n type: Literal('delete'),\n path: String(),\n});\nexport const Edit = Union([Insert, Update, Delete]);\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueDiffError extends TypeBoxError {\n constructor(value, message) {\n super(message);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// Command Factory\n// ------------------------------------------------------------------\nfunction CreateUpdate(path, value) {\n return { type: 'update', path, value };\n}\nfunction CreateInsert(path, value) {\n return { type: 'insert', path, value };\n}\nfunction CreateDelete(path) {\n return { type: 'delete', path };\n}\n// ------------------------------------------------------------------\n// AssertDiffable\n// ------------------------------------------------------------------\nfunction AssertDiffable(value) {\n if (globalThis.Object.getOwnPropertySymbols(value).length > 0)\n throw new ValueDiffError(value, 'Cannot diff objects with symbols');\n}\n// ------------------------------------------------------------------\n// Diffing Generators\n// ------------------------------------------------------------------\nfunction* ObjectType(path, current, next) {\n AssertDiffable(current);\n AssertDiffable(next);\n if (!IsStandardObject(next))\n return yield CreateUpdate(path, next);\n const currentKeys = globalThis.Object.getOwnPropertyNames(current);\n const nextKeys = globalThis.Object.getOwnPropertyNames(next);\n // ----------------------------------------------------------------\n // inserts\n // ----------------------------------------------------------------\n for (const key of nextKeys) {\n if (HasPropertyKey(current, key))\n continue;\n yield CreateInsert(`${path}/${key}`, next[key]);\n }\n // ----------------------------------------------------------------\n // updates\n // ----------------------------------------------------------------\n for (const key of currentKeys) {\n if (!HasPropertyKey(next, key))\n continue;\n if (Equal(current, next))\n continue;\n yield* Visit(`${path}/${key}`, current[key], next[key]);\n }\n // ----------------------------------------------------------------\n // deletes\n // ----------------------------------------------------------------\n for (const key of currentKeys) {\n if (HasPropertyKey(next, key))\n continue;\n yield CreateDelete(`${path}/${key}`);\n }\n}\nfunction* ArrayType(path, current, next) {\n if (!IsArray(next))\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n for (let i = 0; i < next.length; i++) {\n if (i < current.length)\n continue;\n yield CreateInsert(`${path}/${i}`, next[i]);\n }\n for (let i = current.length - 1; i >= 0; i--) {\n if (i < next.length)\n continue;\n yield CreateDelete(`${path}/${i}`);\n }\n}\nfunction* TypedArrayType(path, current, next) {\n if (!IsTypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name)\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n}\nfunction* ValueType(path, current, next) {\n if (current === next)\n return;\n yield CreateUpdate(path, next);\n}\nfunction* Visit(path, current, next) {\n if (IsStandardObject(current))\n return yield* ObjectType(path, current, next);\n if (IsArray(current))\n return yield* ArrayType(path, current, next);\n if (IsTypedArray(current))\n return yield* TypedArrayType(path, current, next);\n if (IsValueType(current))\n return yield* ValueType(path, current, next);\n throw new ValueDiffError(current, 'Unable to diff value');\n}\n// ------------------------------------------------------------------\n// Diff\n// ------------------------------------------------------------------\nexport function Diff(current, next) {\n return [...Visit('', current, next)];\n}\n// ------------------------------------------------------------------\n// Patch\n// ------------------------------------------------------------------\nfunction IsRootUpdate(edits) {\n return edits.length > 0 && edits[0].path === '' && edits[0].type === 'update';\n}\nfunction IsIdentity(edits) {\n return edits.length === 0;\n}\nexport function Patch(current, edits) {\n if (IsRootUpdate(edits)) {\n return Clone(edits[0].value);\n }\n if (IsIdentity(edits)) {\n return Clone(current);\n }\n const clone = Clone(current);\n for (const edit of edits) {\n switch (edit.type) {\n case 'insert': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'update': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'delete': {\n ValuePointer.Delete(clone, edit.path);\n break;\n }\n }\n }\n return clone;\n}\n", "import { HasTransform, TransformEncode, TransformEncodeCheckError } from '../transform/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../../errors/index.mjs';\n/** Encodes a value or throws if error */\nexport function Encode(...args) {\n const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];\n const encoded = HasTransform(schema, references) ? TransformEncode(schema, references, value) : value;\n if (!Check(schema, references, encoded))\n throw new TransformEncodeCheckError(schema, encoded, Errors(schema, references, encoded).First());\n return encoded;\n}\n", "import { IsObject, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// IsStandardObject\n// ------------------------------------------------------------------\nfunction IsStandardObject(value) {\n return IsObject(value) && !IsArray(value);\n}\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueMutateError extends TypeBoxError {\n constructor(message) {\n super(message);\n }\n}\nfunction ObjectType(root, path, current, next) {\n if (!IsStandardObject(current)) {\n ValuePointer.Set(root, path, Clone(next));\n }\n else {\n const currentKeys = Object.getOwnPropertyNames(current);\n const nextKeys = Object.getOwnPropertyNames(next);\n for (const currentKey of currentKeys) {\n if (!nextKeys.includes(currentKey)) {\n delete current[currentKey];\n }\n }\n for (const nextKey of nextKeys) {\n if (!currentKeys.includes(nextKey)) {\n current[nextKey] = null;\n }\n }\n for (const nextKey of nextKeys) {\n Visit(root, `${path}/${nextKey}`, current[nextKey], next[nextKey]);\n }\n }\n}\nfunction ArrayType(root, path, current, next) {\n if (!IsArray(current)) {\n ValuePointer.Set(root, path, Clone(next));\n }\n else {\n for (let index = 0; index < next.length; index++) {\n Visit(root, `${path}/${index}`, current[index], next[index]);\n }\n current.splice(next.length);\n }\n}\nfunction TypedArrayType(root, path, current, next) {\n if (IsTypedArray(current) && current.length === next.length) {\n for (let i = 0; i < current.length; i++) {\n current[i] = next[i];\n }\n }\n else {\n ValuePointer.Set(root, path, Clone(next));\n }\n}\nfunction ValueType(root, path, current, next) {\n if (current === next)\n return;\n ValuePointer.Set(root, path, next);\n}\nfunction Visit(root, path, current, next) {\n if (IsArray(next))\n return ArrayType(root, path, current, next);\n if (IsTypedArray(next))\n return TypedArrayType(root, path, current, next);\n if (IsStandardObject(next))\n return ObjectType(root, path, current, next);\n if (IsValueType(next))\n return ValueType(root, path, current, next);\n}\n// ------------------------------------------------------------------\n// IsNonMutableValue\n// ------------------------------------------------------------------\nfunction IsNonMutableValue(value) {\n return IsTypedArray(value) || IsValueType(value);\n}\nfunction IsMismatchedValue(current, next) {\n // prettier-ignore\n return ((IsStandardObject(current) && IsArray(next)) ||\n (IsArray(current) && IsStandardObject(next)));\n}\n// ------------------------------------------------------------------\n// Mutate\n// ------------------------------------------------------------------\n/** `[Mutable]` Performs a deep mutable value assignment while retaining internal references */\nexport function Mutate(current, next) {\n if (IsNonMutableValue(current) || IsNonMutableValue(next))\n throw new ValueMutateError('Only object and array types can be mutated at the root level');\n if (IsMismatchedValue(current, next))\n throw new ValueMutateError('Cannot assign due type mismatch of assignable values');\n Visit(current, '', current, next);\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\nimport { TransformDecode, TransformEncode, HasTransform } from '../transform/index.mjs';\nimport { Assert } from '../assert/index.mjs';\nimport { Cast } from '../cast/index.mjs';\nimport { Clean } from '../clean/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Convert } from '../convert/index.mjs';\nimport { Default } from '../default/index.mjs';\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nimport { IsArray, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport class ParseError extends TypeBoxError {\n constructor(message) {\n super(message);\n }\n}\n// prettier-ignore\nexport var ParseRegistry;\n(function (ParseRegistry) {\n const registry = new Map([\n ['Assert', (type, references, value) => { Assert(type, references, value); return value; }],\n ['Cast', (type, references, value) => Cast(type, references, value)],\n ['Clean', (type, references, value) => Clean(type, references, value)],\n ['Clone', (_type, _references, value) => Clone(value)],\n ['Convert', (type, references, value) => Convert(type, references, value)],\n ['Decode', (type, references, value) => (HasTransform(type, references) ? TransformDecode(type, references, value) : value)],\n ['Default', (type, references, value) => Default(type, references, value)],\n ['Encode', (type, references, value) => (HasTransform(type, references) ? TransformEncode(type, references, value) : value)],\n ]);\n // Deletes an entry from the registry\n function Delete(key) {\n registry.delete(key);\n }\n ParseRegistry.Delete = Delete;\n // Sets an entry in the registry\n function Set(key, callback) {\n registry.set(key, callback);\n }\n ParseRegistry.Set = Set;\n // Gets an entry in the registry\n function Get(key) {\n return registry.get(key);\n }\n ParseRegistry.Get = Get;\n})(ParseRegistry || (ParseRegistry = {}));\n// ------------------------------------------------------------------\n// Default Parse Pipeline\n// ------------------------------------------------------------------\n// prettier-ignore\nexport const ParseDefault = [\n 'Clone',\n 'Clean',\n 'Default',\n 'Convert',\n 'Assert',\n 'Decode'\n];\n// ------------------------------------------------------------------\n// ParseValue\n// ------------------------------------------------------------------\nfunction ParseValue(operations, type, references, value) {\n return operations.reduce((value, operationKey) => {\n const operation = ParseRegistry.Get(operationKey);\n if (IsUndefined(operation))\n throw new ParseError(`Unable to find Parse operation '${operationKey}'`);\n return operation(type, references, value);\n }, value);\n}\n/** Parses a value */\nexport function Parse(...args) {\n // prettier-ignore\n const [operations, schema, references, value] = (args.length === 4 ? [args[0], args[1], args[2], args[3]] :\n args.length === 3 ? IsArray(args[0]) ? [args[0], args[1], [], args[2]] : [ParseDefault, args[0], args[1], args[2]] :\n args.length === 2 ? [ParseDefault, args[0], [], args[1]] :\n (() => { throw new ParseError('Invalid Arguments'); })());\n return ParseValue(operations, schema, references, value);\n}\n", "export { Errors, ValueErrorIterator } from '../../errors/index.mjs';\nexport { Assert } from '../assert/index.mjs';\nexport { Cast } from '../cast/index.mjs';\nexport { Check } from '../check/index.mjs';\nexport { Clean } from '../clean/index.mjs';\nexport { Clone } from '../clone/index.mjs';\nexport { Convert } from '../convert/index.mjs';\nexport { Create } from '../create/index.mjs';\nexport { Decode } from '../decode/index.mjs';\nexport { Default } from '../default/index.mjs';\nexport { Diff, Patch, Edit } from '../delta/index.mjs';\nexport { Encode } from '../encode/index.mjs';\nexport { Equal } from '../equal/index.mjs';\nexport { Hash } from '../hash/index.mjs';\nexport { Mutate } from '../mutate/index.mjs';\nexport { Parse } from '../parse/index.mjs';\n", "import { Clone } from './value.mjs';\n/** Clones a Rest */\nexport function CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nexport function CloneType(schema, options) {\n return options === undefined ? Clone(schema) : Clone({ ...options, ...schema });\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Argument Type. */\nexport function Argument(index) {\n return CreateType({ [Kind]: 'Argument', index });\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsPromise, IsRef, IsComputed } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Awaited', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Awaited', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromIntersect(types) {\n return Intersect(FromRest(types));\n}\n// prettier-ignore\nfunction FromUnion(types) {\n return Union(FromRest(types));\n}\n// prettier-ignore\nfunction FromPromise(type) {\n return Awaited(type);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => Awaited(type));\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nexport function Awaited(type, options) {\n return CreateType(IsComputed(type) ? FromComputed(type.target, type.parameters) : IsIntersect(type) ? FromIntersect(type.allOf) : IsUnion(type) ? FromUnion(type.anyOf) : IsPromise(type) ? FromPromise(type.item) : IsRef(type) ? FromRef(type.$ref) : type, options);\n}\n", "import { IntersectEvaluated } from '../intersect/index.mjs';\nimport { IndexFromPropertyKeys } from '../indexed/index.mjs';\nimport { KeyOfPropertyKeys } from '../keyof/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { SetDistinct } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsNever } from '../guard/kind.mjs';\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...KeyOfPropertyKeys(L));\n return SetDistinct(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexFromPropertyKeys(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = IntersectEvaluated(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nexport function Composite(T, options) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = _Object_(P, options);\n return R;\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options) {\n return CreateType({ [Kind]: 'Date', type: 'Date' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options) {\n return CreateType({ [Kind]: 'Null', type: 'null' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n return CreateType({ [Kind]: 'Symbol', type: 'symbol' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options) {\n return CreateType({ [Kind]: 'Undefined', type: 'undefined' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options) {\n return CreateType({ [Kind]: 'Uint8Array', type: 'Uint8Array' }, options);\n}\n", "import { Any } from '../any/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Date } from '../date/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Null } from '../null/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Symbol } from '../symbol/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Undefined } from '../undefined/index.mjs';\nimport { Uint8Array } from '../uint8array/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = Readonly(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : Readonly(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :\n IsIterator(value) ? ConditionalReadonly(Any(), root) :\n IsArray(value) ? Readonly(Tuple(FromArray(value))) :\n IsUint8Array(value) ? Uint8Array() :\n IsDate(value) ? Date() :\n IsObject(value) ? ConditionalReadonly(_Object_(FromProperties(value)), root) :\n IsFunction(value) ? ConditionalReadonly(FunctionType([], Unknown()), root) :\n IsUndefined(value) ? Undefined() :\n IsNull(value) ? Null() :\n IsSymbol(value) ? Symbol() :\n IsBigInt(value) ? BigInt() :\n IsNumber(value) ? Literal(value) :\n IsBoolean(value) ? Literal(value) :\n IsString(value) ? Literal(value) :\n _Object_({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nexport function Const(T, options) {\n return CreateType(FromValue(T, true), options);\n}\n", "import { Tuple } from '../tuple/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options) {\n return (KindGuard.IsConstructor(schema) ? Tuple(schema.parameters, options) : Never(options));\n}\n", "import { Literal } from '../literal/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Enum type */\nexport function Enum(item, options) {\n if (IsUndefined(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => Literal(value));\n return Union(anyOf, { ...options, [Hint]: 'Enum' });\n}\n", "import { Exclude } from './exclude.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExcludeFromTemplateLiteral(L, R) {\n return Exclude(TemplateLiteralToUnion(L), R);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';\nimport { ExcludeFromTemplateLiteral } from './exclude-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : Union(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nexport function Exclude(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CreateType(ExcludeFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CreateType(ExcludeFromMappedResult(L, R), options);\n // prettier-ignore\n return CreateType(IsUnion(L) ? ExcludeRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Exclude } from './exclude.mjs';\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Exclude(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n", "import { Extract } from './extract.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExtractFromTemplateLiteral(L, R) {\n return Extract(TemplateLiteralToUnion(L), R);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';\nimport { ExtractFromTemplateLiteral } from './extract-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : Union(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nexport function Extract(L, R, options) {\n // overloads\n if (IsTemplateLiteral(L))\n return CreateType(ExtractFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CreateType(ExtractFromMappedResult(L, R), options);\n // prettier-ignore\n return CreateType(IsUnion(L) ? ExtractRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Extract } from './extract.mjs';\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extract(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options) {\n return (KindGuard.IsConstructor(schema) ? CreateType(schema.returns, options) : Never(options));\n}\n", "import { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\n/** `[Json]` Creates a Readonly and Optional property */\nexport function ReadonlyOptional(schema) {\n return Readonly(Optional(schema));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IsTemplateLiteralFinite } from '../template-literal/index.mjs';\nimport { PatternStringExact, PatternNumberExact, PatternNeverExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsAny, IsBoolean, IsNever, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return CreateType({ [Kind]: 'Record', type: 'object', patternProperties: { [pattern]: T } }, options);\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const result = {};\n for (const K2 of K)\n result[K2] = T;\n return _Object_(result, { ...options, [Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return (IsTemplateLiteralFinite(K)\n ? RecordCreateFromKeys(IndexPropertyKeys(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(key, type, options) {\n return RecordCreateFromKeys(IndexPropertyKeys(Union(key)), type, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(key, type, options) {\n return RecordCreateFromKeys([key.toString()], type, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(key, type, options) {\n return RecordCreateFromPattern(key.source, type, options);\n}\n// prettier-ignore\nfunction FromStringKey(key, type, options) {\n const pattern = IsUndefined(key.pattern) ? PatternStringExact : key.pattern;\n return RecordCreateFromPattern(pattern, type, options);\n}\n// prettier-ignore\nfunction FromAnyKey(_, type, options) {\n return RecordCreateFromPattern(PatternStringExact, type, options);\n}\n// prettier-ignore\nfunction FromNeverKey(_key, type, options) {\n return RecordCreateFromPattern(PatternNeverExact, type, options);\n}\n// prettier-ignore\nfunction FromBooleanKey(_key, type, options) {\n return _Object_({ true: type, false: type }, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_key, type, options) {\n return RecordCreateFromPattern(PatternNumberExact, type, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, type, options) {\n return RecordCreateFromPattern(PatternNumberExact, type, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nexport function Record(key, type, options = {}) {\n // prettier-ignore\n return (IsUnion(key) ? FromUnionKey(key.anyOf, type, options) :\n IsTemplateLiteral(key) ? FromTemplateLiteralKey(key, type, options) :\n IsLiteral(key) ? FromLiteralKey(key.const, type, options) :\n IsBoolean(key) ? FromBooleanKey(key, type, options) :\n IsInteger(key) ? FromIntegerKey(key, type, options) :\n IsNumber(key) ? FromNumberKey(key, type, options) :\n IsRegExp(key) ? FromRegExpKey(key, type, options) :\n IsString(key) ? FromStringKey(key, type, options) :\n IsAny(key) ? FromAnyKey(key, type, options) :\n IsNever(key) ? FromNeverKey(key, type, options) :\n Never(options));\n}\n// ------------------------------------------------------------------\n// Record Utilities\n// ------------------------------------------------------------------\n/** Gets the Records Pattern */\nexport function RecordPattern(record) {\n return globalThis.Object.getOwnPropertyNames(record.patternProperties)[0];\n}\n/** Gets the Records Key Type */\n// prettier-ignore\nexport function RecordKey(type) {\n const pattern = RecordPattern(type);\n return (pattern === PatternStringExact ? String() :\n pattern === PatternNumberExact ? Number() :\n String({ pattern }));\n}\n/** Gets a Record Value Type */\n// prettier-ignore\nexport function RecordValue(type) {\n return type.patternProperties[RecordPattern(type)];\n}\n", "import { CloneType } from '../clone/type.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Record, RecordKey, RecordValue } from '../record/index.mjs';\nimport * as ValueGuard from '../guard/value.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromConstructor(args, type) {\n type.parameters = FromTypes(args, type.parameters);\n type.returns = FromType(args, type.returns);\n return type;\n}\n// prettier-ignore\nfunction FromFunction(args, type) {\n type.parameters = FromTypes(args, type.parameters);\n type.returns = FromType(args, type.returns);\n return type;\n}\n// prettier-ignore\nfunction FromIntersect(args, type) {\n type.allOf = FromTypes(args, type.allOf);\n return type;\n}\n// prettier-ignore\nfunction FromUnion(args, type) {\n type.anyOf = FromTypes(args, type.anyOf);\n return type;\n}\n// prettier-ignore\nfunction FromTuple(args, type) {\n if (ValueGuard.IsUndefined(type.items))\n return type;\n type.items = FromTypes(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromArray(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromAsyncIterator(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromIterator(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromPromise(args, type) {\n type.item = FromType(args, type.item);\n return type;\n}\n// prettier-ignore\nfunction FromObject(args, type) {\n const mappedProperties = FromProperties(args, type.properties);\n return { ...type, ..._Object_(mappedProperties) }; // retain options\n}\n// prettier-ignore\nfunction FromRecord(args, type) {\n const mappedKey = FromType(args, RecordKey(type));\n const mappedValue = FromType(args, RecordValue(type));\n const result = Record(mappedKey, mappedValue);\n return { ...type, ...result }; // retain options\n}\n// prettier-ignore\nfunction FromArgument(args, argument) {\n return argument.index in args ? args[argument.index] : Unknown();\n}\n// prettier-ignore\nfunction FromProperty(args, type) {\n const isReadonly = KindGuard.IsReadonly(type);\n const isOptional = KindGuard.IsOptional(type);\n const mapped = FromType(args, type);\n return (isReadonly && isOptional ? ReadonlyOptional(mapped) :\n isReadonly && !isOptional ? Readonly(mapped) :\n !isReadonly && isOptional ? Optional(mapped) :\n mapped);\n}\n// prettier-ignore\nfunction FromProperties(args, properties) {\n return globalThis.Object.getOwnPropertyNames(properties).reduce((result, key) => {\n return { ...result, [key]: FromProperty(args, properties[key]) };\n }, {});\n}\n// prettier-ignore\nexport function FromTypes(args, types) {\n return types.map(type => FromType(args, type));\n}\n// prettier-ignore\nfunction FromType(args, type) {\n return (KindGuard.IsConstructor(type) ? FromConstructor(args, type) :\n KindGuard.IsFunction(type) ? FromFunction(args, type) :\n KindGuard.IsIntersect(type) ? FromIntersect(args, type) :\n KindGuard.IsUnion(type) ? FromUnion(args, type) :\n KindGuard.IsTuple(type) ? FromTuple(args, type) :\n KindGuard.IsArray(type) ? FromArray(args, type) :\n KindGuard.IsAsyncIterator(type) ? FromAsyncIterator(args, type) :\n KindGuard.IsIterator(type) ? FromIterator(args, type) :\n KindGuard.IsPromise(type) ? FromPromise(args, type) :\n KindGuard.IsObject(type) ? FromObject(args, type) :\n KindGuard.IsRecord(type) ? FromRecord(args, type) :\n KindGuard.IsArgument(type) ? FromArgument(args, type) :\n type);\n}\n/** `[JavaScript]` Instantiates a type with the given parameters */\n// prettier-ignore\nexport function Instantiate(type, args) {\n return FromType(args, CloneType(type));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options) {\n return CreateType({ [Kind]: 'Integer', type: 'integer' }, options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: Intrinsic(Literal(K), M, Clone(options))\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n const result = K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n return result;\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nexport function IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralExpressionFinite, TemplateLiteralExpressionGenerate } from '../template-literal/index.mjs';\nimport { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsTemplateLiteral, IsUnion, IsLiteral } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = TemplateLiteralParseExact(schema.pattern);\n const finite = IsTemplateLiteralExpressionFinite(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...TemplateLiteralExpressionGenerate(expression)];\n const literals = strings.map((value) => Literal(value));\n const mapped = FromRest(literals, mode);\n const union = Union(mapped);\n return TemplateLiteral([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nexport function Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) :\n // Standard-Inference\n IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, options) :\n IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n // Default Type\n CreateType(schema, options));\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nexport function Capitalize(T, options = {}) {\n return Intrinsic(T, 'Capitalize', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nexport function Lowercase(T, options = {}) {\n return Intrinsic(T, 'Lowercase', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nexport function Uncapitalize(T, options = {}) {\n return Intrinsic(T, 'Uncapitalize', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nexport function Uppercase(T, options = {}) {\n return Intrinsic(T, 'Uppercase', options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = Omit(properties[K2], propertyKeys, Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, propertyKeys, options) {\n return FromProperties(mappedResult.properties, propertyKeys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedResult(mappedResult, propertyKeys, options) {\n const properties = FromMappedResult(mappedResult, propertyKeys, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { TransformKind } from '../symbols/symbols.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\n// ------------------------------------------------------------------\n// Mapped\n// ------------------------------------------------------------------\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, IsMappedResult, IsLiteralValue, IsRef } from '../guard/kind.mjs';\nimport { IsArray as IsArrayValue } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromIntersect(types, propertyKeys) {\n return types.map((type) => OmitResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromUnion(types, propertyKeys) {\n return types.map((type) => OmitResolve(type, propertyKeys));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(properties, key) {\n const { [key]: _, ...R } = properties;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys) {\n return propertyKeys.reduce((T, K2) => FromProperty(T, K2), properties);\n}\n// prettier-ignore\nfunction FromObject(type, propertyKeys, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties, propertyKeys);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction UnionFromPropertyKeys(propertyKeys) {\n const result = propertyKeys.reduce((result, key) => IsLiteralValue(key) ? [...result, Literal(key)] : result, []);\n return Union(result);\n}\n// prettier-ignore\nfunction OmitResolve(type, propertyKeys) {\n return (IsIntersect(type) ? Intersect(FromIntersect(type.allOf, propertyKeys)) :\n IsUnion(type) ? Union(FromUnion(type.anyOf, propertyKeys)) :\n IsObject(type) ? FromObject(type, propertyKeys, type.properties) :\n _Object_({}));\n}\n/** `[Json]` Constructs a type whose keys are picked from the given type */\n// prettier-ignore\nexport function Omit(type, key, options) {\n const typeKey = IsArrayValue(key) ? UnionFromPropertyKeys(key) : key;\n const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const isTypeRef = IsRef(type);\n const isKeyRef = IsRef(key);\n return (IsMappedResult(type) ? OmitFromMappedResult(type, propertyKeys, options) :\n IsMappedKey(key) ? OmitFromMappedKey(type, key, options) :\n (isTypeRef && isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n (!isTypeRef && isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n (isTypeRef && !isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n CreateType({ ...OmitResolve(type, propertyKeys), ...options }));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(type, key, options) {\n return { [key]: Omit(type, [key], Clone(options)) };\n}\n// prettier-ignore\nfunction FromPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(type, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(type, mappedKey, options) {\n return FromPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedKey(type, mappedKey, options) {\n const properties = FromMappedKey(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = Pick(properties[K2], propertyKeys, Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, propertyKeys, options) {\n return FromProperties(mappedResult.properties, propertyKeys, options);\n}\n// prettier-ignore\nexport function PickFromMappedResult(mappedResult, propertyKeys, options) {\n const properties = FromMappedResult(mappedResult, propertyKeys, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { TransformKind } from '../symbols/symbols.mjs';\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema, IsLiteralValue, IsRef } from '../guard/kind.mjs';\nimport { IsArray as IsArrayValue } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\nfunction FromIntersect(types, propertyKeys) {\n return types.map((type) => PickResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromUnion(types, propertyKeys) {\n return types.map((type) => PickResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys) {\n const result = {};\n for (const K2 of propertyKeys)\n if (K2 in properties)\n result[K2] = properties[K2];\n return result;\n}\n// prettier-ignore\nfunction FromObject(Type, keys, properties) {\n const options = Discard(Type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties, keys);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction UnionFromPropertyKeys(propertyKeys) {\n const result = propertyKeys.reduce((result, key) => IsLiteralValue(key) ? [...result, Literal(key)] : result, []);\n return Union(result);\n}\n// prettier-ignore\nfunction PickResolve(type, propertyKeys) {\n return (IsIntersect(type) ? Intersect(FromIntersect(type.allOf, propertyKeys)) :\n IsUnion(type) ? Union(FromUnion(type.anyOf, propertyKeys)) :\n IsObject(type) ? FromObject(type, propertyKeys, type.properties) :\n _Object_({}));\n}\n/** `[Json]` Constructs a type whose keys are picked from the given type */\n// prettier-ignore\nexport function Pick(type, key, options) {\n const typeKey = IsArrayValue(key) ? UnionFromPropertyKeys(key) : key;\n const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const isTypeRef = IsRef(type);\n const isKeyRef = IsRef(key);\n return (IsMappedResult(type) ? PickFromMappedResult(type, propertyKeys, options) :\n IsMappedKey(key) ? PickFromMappedKey(type, key, options) :\n (isTypeRef && isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n (!isTypeRef && isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n (isTypeRef && !isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n CreateType({ ...PickResolve(type, propertyKeys), ...options }));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(type, key, options) {\n return {\n [key]: Pick(type, [key], Clone(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((result, leftKey) => {\n return { ...result, ...FromPropertyKey(type, leftKey, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(type, mappedKey, options) {\n return FromPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function PickFromMappedKey(type, mappedKey, options) {\n const properties = FromMappedKey(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { PartialFromMappedResult } from './partial-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Partial', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Partial', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromProperties(properties) {\n const partialProperties = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties))\n partialProperties[K] = Optional(properties[K]);\n return partialProperties;\n}\n// prettier-ignore\nfunction FromObject(type, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => PartialResolve(type));\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(type) {\n return (\n // Mappable\n KindGuard.IsComputed(type) ? FromComputed(type.target, type.parameters) :\n KindGuard.IsRef(type) ? FromRef(type.$ref) :\n KindGuard.IsIntersect(type) ? Intersect(FromRest(type.allOf)) :\n KindGuard.IsUnion(type) ? Union(FromRest(type.anyOf)) :\n KindGuard.IsObject(type) ? FromObject(type, type.properties) :\n // Intrinsic\n KindGuard.IsBigInt(type) ? type :\n KindGuard.IsBoolean(type) ? type :\n KindGuard.IsInteger(type) ? type :\n KindGuard.IsLiteral(type) ? type :\n KindGuard.IsNull(type) ? type :\n KindGuard.IsNumber(type) ? type :\n KindGuard.IsString(type) ? type :\n KindGuard.IsSymbol(type) ? type :\n KindGuard.IsUndefined(type) ? type :\n // Passthrough\n _Object_({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nexport function Partial(type, options) {\n if (KindGuard.IsMappedResult(type)) {\n return PartialFromMappedResult(type, options);\n }\n else {\n // special: mapping types require overridable options\n return CreateType({ ...PartialResolve(type), ...options });\n }\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Partial(K[K2], Clone(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { OptionalKind, TransformKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { RequiredFromMappedResult } from './required-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Required', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Required', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromProperties(properties) {\n const requiredProperties = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties))\n requiredProperties[K] = Discard(properties[K], [OptionalKind]);\n return requiredProperties;\n}\n// prettier-ignore\nfunction FromObject(type, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => RequiredResolve(type));\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(type) {\n return (\n // Mappable\n KindGuard.IsComputed(type) ? FromComputed(type.target, type.parameters) :\n KindGuard.IsRef(type) ? FromRef(type.$ref) :\n KindGuard.IsIntersect(type) ? Intersect(FromRest(type.allOf)) :\n KindGuard.IsUnion(type) ? Union(FromRest(type.anyOf)) :\n KindGuard.IsObject(type) ? FromObject(type, type.properties) :\n // Intrinsic\n KindGuard.IsBigInt(type) ? type :\n KindGuard.IsBoolean(type) ? type :\n KindGuard.IsInteger(type) ? type :\n KindGuard.IsLiteral(type) ? type :\n KindGuard.IsNull(type) ? type :\n KindGuard.IsNumber(type) ? type :\n KindGuard.IsString(type) ? type :\n KindGuard.IsSymbol(type) ? type :\n KindGuard.IsUndefined(type) ? type :\n // Passthrough\n _Object_({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nexport function Required(type, options) {\n if (KindGuard.IsMappedResult(type)) {\n return RequiredFromMappedResult(type, options);\n }\n else {\n // special: mapping types require overridable options\n return CreateType({ ...RequiredResolve(type), ...options });\n }\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Required } from './required.mjs';\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Required(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { CloneType } from '../clone/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Array } from '../array/index.mjs';\nimport { Awaited } from '../awaited/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Index } from '../indexed/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { KeyOf } from '../keyof/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Omit } from '../omit/index.mjs';\nimport { Pick } from '../pick/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Partial } from '../partial/index.mjs';\nimport { RecordValue, RecordPattern } from '../record/index.mjs';\nimport { Required } from '../required/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// Symbols\n// ------------------------------------------------------------------\nimport { TransformKind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction DereferenceParameters(moduleProperties, types) {\n return types.map((type) => {\n return KindGuard.IsRef(type)\n ? Dereference(moduleProperties, type.$ref)\n : FromType(moduleProperties, type);\n });\n}\n// prettier-ignore\nfunction Dereference(moduleProperties, ref) {\n return (ref in moduleProperties\n ? KindGuard.IsRef(moduleProperties[ref])\n ? Dereference(moduleProperties, moduleProperties[ref].$ref)\n : FromType(moduleProperties, moduleProperties[ref])\n : Never());\n}\n// prettier-ignore\nfunction FromAwaited(parameters) {\n return Awaited(parameters[0]);\n}\n// prettier-ignore\nfunction FromIndex(parameters) {\n return Index(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromKeyOf(parameters) {\n return KeyOf(parameters[0]);\n}\n// prettier-ignore\nfunction FromPartial(parameters) {\n return Partial(parameters[0]);\n}\n// prettier-ignore\nfunction FromOmit(parameters) {\n return Omit(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromPick(parameters) {\n return Pick(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromRequired(parameters) {\n return Required(parameters[0]);\n}\n// prettier-ignore\nfunction FromComputed(moduleProperties, target, parameters) {\n const dereferenced = DereferenceParameters(moduleProperties, parameters);\n return (target === 'Awaited' ? FromAwaited(dereferenced) :\n target === 'Index' ? FromIndex(dereferenced) :\n target === 'KeyOf' ? FromKeyOf(dereferenced) :\n target === 'Partial' ? FromPartial(dereferenced) :\n target === 'Omit' ? FromOmit(dereferenced) :\n target === 'Pick' ? FromPick(dereferenced) :\n target === 'Required' ? FromRequired(dereferenced) :\n Never());\n}\nfunction FromArray(moduleProperties, type) {\n return Array(FromType(moduleProperties, type));\n}\nfunction FromAsyncIterator(moduleProperties, type) {\n return AsyncIterator(FromType(moduleProperties, type));\n}\n// prettier-ignore\nfunction FromConstructor(moduleProperties, parameters, instanceType) {\n return Constructor(FromTypes(moduleProperties, parameters), FromType(moduleProperties, instanceType));\n}\n// prettier-ignore\nfunction FromFunction(moduleProperties, parameters, returnType) {\n return FunctionType(FromTypes(moduleProperties, parameters), FromType(moduleProperties, returnType));\n}\nfunction FromIntersect(moduleProperties, types) {\n return Intersect(FromTypes(moduleProperties, types));\n}\nfunction FromIterator(moduleProperties, type) {\n return Iterator(FromType(moduleProperties, type));\n}\nfunction FromObject(moduleProperties, properties) {\n return _Object_(globalThis.Object.keys(properties).reduce((result, key) => {\n return { ...result, [key]: FromType(moduleProperties, properties[key]) };\n }, {}));\n}\n// prettier-ignore\nfunction FromRecord(moduleProperties, type) {\n const [value, pattern] = [FromType(moduleProperties, RecordValue(type)), RecordPattern(type)];\n const result = CloneType(type);\n result.patternProperties[pattern] = value;\n return result;\n}\n// prettier-ignore\nfunction FromTransform(moduleProperties, transform) {\n return (KindGuard.IsRef(transform))\n ? { ...Dereference(moduleProperties, transform.$ref), [TransformKind]: transform[TransformKind] }\n : transform;\n}\nfunction FromTuple(moduleProperties, types) {\n return Tuple(FromTypes(moduleProperties, types));\n}\nfunction FromUnion(moduleProperties, types) {\n return Union(FromTypes(moduleProperties, types));\n}\nfunction FromTypes(moduleProperties, types) {\n return types.map((type) => FromType(moduleProperties, type));\n}\n// prettier-ignore\nexport function FromType(moduleProperties, type) {\n return (\n // Modifiers\n KindGuard.IsOptional(type) ? CreateType(FromType(moduleProperties, Discard(type, [OptionalKind])), type) :\n KindGuard.IsReadonly(type) ? CreateType(FromType(moduleProperties, Discard(type, [ReadonlyKind])), type) :\n // Transform\n KindGuard.IsTransform(type) ? CreateType(FromTransform(moduleProperties, type), type) :\n // Types\n KindGuard.IsArray(type) ? CreateType(FromArray(moduleProperties, type.items), type) :\n KindGuard.IsAsyncIterator(type) ? CreateType(FromAsyncIterator(moduleProperties, type.items), type) :\n KindGuard.IsComputed(type) ? CreateType(FromComputed(moduleProperties, type.target, type.parameters)) :\n KindGuard.IsConstructor(type) ? CreateType(FromConstructor(moduleProperties, type.parameters, type.returns), type) :\n KindGuard.IsFunction(type) ? CreateType(FromFunction(moduleProperties, type.parameters, type.returns), type) :\n KindGuard.IsIntersect(type) ? CreateType(FromIntersect(moduleProperties, type.allOf), type) :\n KindGuard.IsIterator(type) ? CreateType(FromIterator(moduleProperties, type.items), type) :\n KindGuard.IsObject(type) ? CreateType(FromObject(moduleProperties, type.properties), type) :\n KindGuard.IsRecord(type) ? CreateType(FromRecord(moduleProperties, type)) :\n KindGuard.IsTuple(type) ? CreateType(FromTuple(moduleProperties, type.items || []), type) :\n KindGuard.IsUnion(type) ? CreateType(FromUnion(moduleProperties, type.anyOf), type) :\n type);\n}\n// prettier-ignore\nexport function ComputeType(moduleProperties, key) {\n return (key in moduleProperties\n ? FromType(moduleProperties, moduleProperties[key])\n : Never());\n}\n// prettier-ignore\nexport function ComputeModuleProperties(moduleProperties) {\n return globalThis.Object.getOwnPropertyNames(moduleProperties).reduce((result, key) => {\n return { ...result, [key]: ComputeType(moduleProperties, key) };\n }, {});\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// Module Infrastructure Types\n// ------------------------------------------------------------------\nimport { ComputeModuleProperties } from './compute.mjs';\n// ------------------------------------------------------------------\n// Module\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TModule {\n constructor($defs) {\n const computed = ComputeModuleProperties($defs);\n const identified = this.WithIdentifiers(computed);\n this.$defs = identified;\n }\n /** `[Json]` Imports a Type by Key. */\n Import(key, options) {\n const $defs = { ...this.$defs, [key]: CreateType(this.$defs[key], options) };\n return CreateType({ [Kind]: 'Import', $defs, $ref: key });\n }\n // prettier-ignore\n WithIdentifiers($defs) {\n return globalThis.Object.getOwnPropertyNames($defs).reduce((result, key) => {\n return { ...result, [key]: { ...$defs[key], $id: key } };\n }, {});\n }\n}\n/** `[Json]` Creates a Type Definition Module. */\nexport function Module(properties) {\n return new TModule(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(type, options) {\n return CreateType({ [Kind]: 'Not', not: type }, options);\n}\n", "import { Tuple } from '../tuple/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options) {\n return (KindGuard.IsFunction(schema) ? Tuple(schema.parameters, options) : Never());\n}\n", "import { CloneType } from '../clone/type.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nexport function Recursive(callback, options = {}) {\n if (IsUndefined(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = CloneType(callback({ [Kind]: 'This', $ref: `${options.$id}` }));\n thisType.$id = options.$id;\n // prettier-ignore\n return CreateType({ [Hint]: 'Recursive', ...thisType }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a RegExp type */\nexport function RegExp(unresolved, options) {\n const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return CreateType({ [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags }, options);\n}\n", "// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n return (IsIntersect(T) ? T.allOf :\n IsUnion(T) ? T.anyOf :\n IsTuple(T) ? T.items ?? [] :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n return RestResolve(T);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options) {\n return (KindGuard.IsFunction(schema) ? CreateType(schema.returns, options) : Never(options));\n}\n", "import { TransformKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\n// prettier-ignore\nexport class TransformEncodeBuilder {\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [TransformKind]: Codec };\n }\n Encode(encode) {\n return (IsTransform(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema));\n }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options) {\n return CreateType({ [Kind]: 'Void', type: 'void' }, options);\n}\n", "// ------------------------------------------------------------------\n// Type: Module\n// ------------------------------------------------------------------\nexport { Any } from '../any/index.mjs';\nexport { Argument } from '../argument/index.mjs';\nexport { Array } from '../array/index.mjs';\nexport { AsyncIterator } from '../async-iterator/index.mjs';\nexport { Awaited } from '../awaited/index.mjs';\nexport { BigInt } from '../bigint/index.mjs';\nexport { Boolean } from '../boolean/index.mjs';\nexport { Composite } from '../composite/index.mjs';\nexport { Const } from '../const/index.mjs';\nexport { Constructor } from '../constructor/index.mjs';\nexport { ConstructorParameters } from '../constructor-parameters/index.mjs';\nexport { Date } from '../date/index.mjs';\nexport { Enum } from '../enum/index.mjs';\nexport { Exclude } from '../exclude/index.mjs';\nexport { Extends } from '../extends/index.mjs';\nexport { Extract } from '../extract/index.mjs';\nexport { Function } from '../function/index.mjs';\nexport { Index } from '../indexed/index.mjs';\nexport { InstanceType } from '../instance-type/index.mjs';\nexport { Instantiate } from '../instantiate/index.mjs';\nexport { Integer } from '../integer/index.mjs';\nexport { Intersect } from '../intersect/index.mjs';\nexport { Capitalize, Uncapitalize, Lowercase, Uppercase } from '../intrinsic/index.mjs';\nexport { Iterator } from '../iterator/index.mjs';\nexport { KeyOf } from '../keyof/index.mjs';\nexport { Literal } from '../literal/index.mjs';\nexport { Mapped } from '../mapped/index.mjs';\nexport { Module } from '../module/index.mjs';\nexport { Never } from '../never/index.mjs';\nexport { Not } from '../not/index.mjs';\nexport { Null } from '../null/index.mjs';\nexport { Number } from '../number/index.mjs';\nexport { Object } from '../object/index.mjs';\nexport { Omit } from '../omit/index.mjs';\nexport { Optional } from '../optional/index.mjs';\nexport { Parameters } from '../parameters/index.mjs';\nexport { Partial } from '../partial/index.mjs';\nexport { Pick } from '../pick/index.mjs';\nexport { Promise } from '../promise/index.mjs';\nexport { Readonly } from '../readonly/index.mjs';\nexport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nexport { Record } from '../record/index.mjs';\nexport { Recursive } from '../recursive/index.mjs';\nexport { Ref } from '../ref/index.mjs';\nexport { RegExp } from '../regexp/index.mjs';\nexport { Required } from '../required/index.mjs';\nexport { Rest } from '../rest/index.mjs';\nexport { ReturnType } from '../return-type/index.mjs';\nexport { String } from '../string/index.mjs';\nexport { Symbol } from '../symbol/index.mjs';\nexport { TemplateLiteral } from '../template-literal/index.mjs';\nexport { Transform } from '../transform/index.mjs';\nexport { Tuple } from '../tuple/index.mjs';\nexport { Uint8Array } from '../uint8array/index.mjs';\nexport { Undefined } from '../undefined/index.mjs';\nexport { Union } from '../union/index.mjs';\nexport { Unknown } from '../unknown/index.mjs';\nexport { Unsafe } from '../unsafe/index.mjs';\nexport { Void } from '../void/index.mjs';\n", "// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nexport { JsonTypeBuilder } from './json.mjs';\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nimport * as TypeBuilder from './type.mjs';\nimport { JavaScriptTypeBuilder } from './javascript.mjs';\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexport { JavaScriptTypeBuilder };\nexport { Type };\n", "import { type Static, Type } from '@sinclair/typebox';\n\nexport const SafeNonNegativeInteger = Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER });\n\nexport const TimelineCursor = Type.Object({\n epoch: Type.String({ minLength: 1 }),\n seq: SafeNonNegativeInteger,\n}, { additionalProperties: false });\nexport type TimelineCursor = Static<typeof TimelineCursor>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nexport const BORGEE_AGENT_REMOTE_PROTOCOL_VERSION = '1.7.0';\nexport const PROTOCOL_VERSION = BORGEE_AGENT_REMOTE_PROTOCOL_VERSION;\n\nexport const ProtocolVersionSchema = Type.Literal(BORGEE_AGENT_REMOTE_PROTOCOL_VERSION);\nexport type ProtocolVersionSchema = Static<typeof ProtocolVersionSchema>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger } from './cursor.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst NonNegativeInteger = Type.Integer({ minimum: 0 });\nconst CanonicalBase64 = Type.String({\n minLength: 4,\n pattern: '^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$',\n});\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const ResourceStatus = Type.Union([\n Type.Literal('pending'),\n Type.Literal('available'),\n Type.Literal('failed'),\n Type.Literal('unavailable'),\n]);\nexport type ResourceStatus = Static<typeof ResourceStatus>;\n\nexport const ResourceBinding = Strict({\n locator: NonEmptyString,\n resourceId: NonEmptyString,\n status: ResourceStatus,\n});\nexport type ResourceBinding = Static<typeof ResourceBinding>;\n\nexport const ResourceRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resource_request'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, resourceId: NonEmptyString }),\n});\nexport type ResourceRequest = Static<typeof ResourceRequest>;\n\nexport const ResourceState = Type.Union([\n Strict({ status: Type.Literal('pending'), retryAfterMs: Type.Integer({ minimum: 1 }) }),\n Strict({\n status: Type.Literal('available'),\n mediaType: NonEmptyString,\n byteLength: NonNegativeInteger,\n sha256: NonEmptyString,\n }),\n Strict({ status: Type.Literal('failed'), message: NonEmptyString, retryable: Type.Boolean() }),\n Strict({ status: Type.Literal('unavailable'), reason: NonEmptyString }),\n]);\nexport type ResourceState = Static<typeof ResourceState>;\n\nexport const ResourceResponseState = Type.Union([\n Strict({ status: Type.Literal('pending'), retryAfterMs: Type.Integer({ minimum: 1 }) }),\n Strict({\n status: Type.Literal('available'),\n mediaType: NonEmptyString,\n byteLength: NonNegativeInteger,\n sha256: NonEmptyString,\n contentBase64: CanonicalBase64,\n }),\n Strict({ status: Type.Literal('failed'), message: NonEmptyString, retryable: Type.Boolean() }),\n Strict({ status: Type.Literal('unavailable'), reason: NonEmptyString }),\n]);\nexport type ResourceResponseState = Static<typeof ResourceResponseState>;\n\nexport const ResourceResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resource_response'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n resourceId: NonEmptyString,\n state: ResourceResponseState,\n }),\n});\nexport type ResourceResponse = Static<typeof ResourceResponse>;\n\nexport const ResourceUpdate = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resource_update'),\n payload: Strict({\n agentId: NonEmptyString,\n resourceId: NonEmptyString,\n state: ResourceState,\n }),\n});\nexport type ResourceUpdate = Static<typeof ResourceUpdate>;\n\nexport const TimelineResourceBindingReplacement = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_resource_binding_replaced'),\n payload: Strict({\n agentId: NonEmptyString,\n epoch: NonEmptyString,\n seq: SafeNonNegativeInteger,\n previous: ResourceBinding,\n replacement: ResourceBinding,\n }),\n});\nexport type TimelineResourceBindingReplacement = Static<typeof TimelineResourceBindingReplacement>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const AgentToolDetail = Type.Union([\n Strict({ type: Type.Literal('shell'), command: NonEmptyString, cwd: Type.Optional(NonEmptyString) }),\n Strict({ type: Type.Literal('read'), filePath: NonEmptyString }),\n Strict({ type: Type.Literal('edit'), filePath: NonEmptyString }),\n Strict({ type: Type.Literal('write'), filePath: NonEmptyString }),\n Strict({ type: Type.Literal('search'), query: NonEmptyString }),\n Strict({ type: Type.Literal('fetch'), url: NonEmptyString }),\n Strict({ type: Type.Literal('other'), description: NonEmptyString }),\n]);\nexport type AgentToolDetail = Static<typeof AgentToolDetail>;\n\nexport const AgentQuestionOption = Strict({\n value: NonEmptyString,\n label: NonEmptyString,\n description: Type.Optional(Type.String()),\n});\nexport type AgentQuestionOption = Static<typeof AgentQuestionOption>;\n\nexport const AgentQuestion = Strict({\n questionId: NonEmptyString,\n header: NonEmptyString,\n prompt: NonEmptyString,\n description: Type.Optional(Type.String()),\n required: Type.Boolean(),\n selection: Type.Union([Type.Literal('single'), Type.Literal('multiple')]),\n options: Type.Array(AgentQuestionOption),\n allowCustomText: Type.Boolean(),\n allowDismiss: Type.Boolean(),\n sensitive: Type.Optional(Type.Boolean()),\n});\nexport type AgentQuestion = Static<typeof AgentQuestion>;\n\nexport const AgentPlanAction = Type.Union([\n Type.Literal('approve'),\n Type.Literal('approve_and_resume'),\n Type.Literal('reject'),\n]);\nexport type AgentPlanAction = Static<typeof AgentPlanAction>;\n\nexport const AgentToolDecision = Type.Union([Type.Literal('allow'), Type.Literal('deny'), Type.Literal('cancel')]);\nexport type AgentToolDecision = Static<typeof AgentToolDecision>;\n\nexport const AgentToolApprovalScope = Type.Union([Type.Literal('once'), Type.Literal('session'), Type.Literal('policy')]);\nexport type AgentToolApprovalScope = Static<typeof AgentToolApprovalScope>;\n\nexport const AgentFormOption = Strict({ value: NonEmptyString, label: NonEmptyString });\nexport type AgentFormOption = Static<typeof AgentFormOption>;\nconst FormFieldBase = {\n fieldId: NonEmptyString, label: NonEmptyString, required: Type.Boolean(),\n description: Type.Optional(Type.String()), sensitive: Type.Optional(Type.Boolean()),\n};\nconst NonNegativeInteger = Type.Integer({ minimum: 0 });\nexport const AgentFormField = Type.Union([\n Strict({ ...FormFieldBase, type: Type.Literal('text'), minLength: Type.Optional(NonNegativeInteger), maxLength: Type.Optional(NonNegativeInteger), format: Type.Optional(Type.Union([Type.Literal('email'), Type.Literal('uri'), Type.Literal('date'), Type.Literal('date-time')])), defaultValue: Type.Optional(Type.String()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('number'), integer: Type.Optional(Type.Boolean()), minimum: Type.Optional(Type.Number()), maximum: Type.Optional(Type.Number()), defaultValue: Type.Optional(Type.Number()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('boolean'), defaultValue: Type.Optional(Type.Boolean()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('select'), options: Type.Array(AgentFormOption, { minItems: 1 }), defaultValue: Type.Optional(Type.String()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('multiselect'), options: Type.Array(AgentFormOption, { minItems: 1 }), minItems: Type.Optional(NonNegativeInteger), maxItems: Type.Optional(NonNegativeInteger), defaultValue: Type.Optional(Type.Array(Type.String(), { uniqueItems: true })) }),\n]);\nexport type AgentFormField = Static<typeof AgentFormField>;\nexport const AgentFormValue = Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Array(Type.String(), { uniqueItems: true })]);\nexport type AgentFormValue = Static<typeof AgentFormValue>;\nexport const AgentFormValues = Type.Record(Type.String(), AgentFormValue);\nexport type AgentFormValues = Static<typeof AgentFormValues>;\nexport const AgentPermissionScope = Type.Union([Type.Literal('turn'), Type.Literal('session')]);\nexport type AgentPermissionScope = Static<typeof AgentPermissionScope>;\nexport const AgentPermission = Strict({\n resource: Type.Union([Type.Literal('filesystem'), Type.Literal('network')]),\n access: Type.Union([Type.Literal('read'), Type.Literal('write'), Type.Literal('deny'), Type.Literal('connect')]),\n target: NonEmptyString,\n});\nexport type AgentPermission = Static<typeof AgentPermission>;\n\nexport const AgentInteractionRequest = Type.Union([\n Strict({\n kind: Type.Literal('question'),\n requestId: NonEmptyString,\n questions: Type.Array(AgentQuestion, { minItems: 1 }),\n }),\n Strict({\n kind: Type.Literal('plan_approval'),\n requestId: NonEmptyString,\n plan: Type.String(),\n allowedActions: Type.Array(AgentPlanAction, { minItems: 1, uniqueItems: true }),\n }),\n Strict({\n kind: Type.Literal('tool_approval'),\n requestId: NonEmptyString,\n toolCallId: NonEmptyString,\n toolName: NonEmptyString,\n summary: Type.String(),\n detail: AgentToolDetail,\n allowedDecisions: Type.Array(AgentToolDecision, { minItems: 1, uniqueItems: true }),\n allowScopes: Type.Array(AgentToolApprovalScope, { uniqueItems: true }),\n policies: Type.Optional(Type.Array(Strict({ policyId: NonEmptyString, description: Type.String() }))),\n context: Type.Optional(Type.Array(Strict({ label: NonEmptyString, value: Type.String() }))),\n }),\n Strict({ kind: Type.Literal('form'), requestId: NonEmptyString, title: NonEmptyString, message: Type.String(), fields: Type.Array(AgentFormField) }),\n Strict({ kind: Type.Literal('permission_approval'), requestId: NonEmptyString, summary: Type.String(), permissions: Type.Array(AgentPermission, { minItems: 1 }), allowScopes: Type.Array(AgentPermissionScope, { minItems: 1, uniqueItems: true }) }),\n Strict({ kind: Type.Literal('external_action'), requestId: NonEmptyString, title: NonEmptyString, message: Type.String(), url: Type.String({ pattern: '^[Hh][Tt][Tt][Pp][Ss]?://[^\\\\s/?#]+[^\\\\s]*$' }) }),\n]);\nexport type AgentInteractionRequest = Static<typeof AgentInteractionRequest>;\n\nexport const AgentQuestionAnswer = Strict({\n questionId: NonEmptyString,\n selectedValues: Type.Array(NonEmptyString, { uniqueItems: true }),\n customText: Type.Optional(Type.String()),\n redacted: Type.Optional(Type.Boolean()),\n});\nexport type AgentQuestionAnswer = Static<typeof AgentQuestionAnswer>;\n\nexport const AgentQuestionnaireQuestion = Strict({ ...AgentQuestion.properties, sensitive: Type.Optional(Type.Literal(false)) });\nexport type AgentQuestionnaireQuestion = Static<typeof AgentQuestionnaireQuestion>;\n\nexport const AgentQuestionnaireResponse = Strict({ messageId: NonEmptyString, answers: Type.Array(AgentQuestionAnswer, { minItems: 1 }) });\nexport type AgentQuestionnaireResponse = Static<typeof AgentQuestionnaireResponse>;\n\nexport const AgentInteractionResponse = Type.Union([\n Strict({\n kind: Type.Literal('question'),\n answers: Type.Array(AgentQuestionAnswer),\n dismissed: Type.Optional(Type.Boolean()),\n }),\n Strict({\n kind: Type.Literal('plan_approval'),\n action: Type.Union([Type.Literal('approve'), Type.Literal('approve_and_resume')]),\n }),\n Strict({ kind: Type.Literal('plan_approval'), action: Type.Literal('reject'), feedback: Type.Optional(Type.String()) }),\n Strict({\n kind: Type.Literal('tool_approval'),\n decision: Type.Literal('allow'),\n scope: Type.Union([Type.Literal('once'), Type.Literal('session')]),\n }),\n Strict({ kind: Type.Literal('tool_approval'), decision: Type.Literal('allow'), scope: Type.Literal('policy'), policyId: NonEmptyString }),\n Strict({\n kind: Type.Literal('tool_approval'),\n decision: Type.Union([Type.Literal('deny'), Type.Literal('cancel')]),\n message: Type.Optional(Type.String()),\n }),\n Strict({ kind: Type.Literal('form'), action: Type.Literal('submit'), values: AgentFormValues, redactedFields: Type.Optional(Type.Array(NonEmptyString, { uniqueItems: true })) }),\n Strict({ kind: Type.Literal('form'), action: Type.Union([Type.Literal('decline'), Type.Literal('cancel')]) }),\n Strict({ kind: Type.Literal('permission_approval'), decision: Type.Literal('allow'), scope: AgentPermissionScope }),\n Strict({ kind: Type.Literal('permission_approval'), decision: Type.Literal('deny') }),\n Strict({ kind: Type.Literal('external_action'), action: Type.Union([Type.Literal('completed'), Type.Literal('decline'), Type.Literal('cancel')]) }),\n]);\nexport type AgentInteractionResponse = Static<typeof AgentInteractionResponse>;\n\nexport const InteractionResponseMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('interaction_response'),\n payload: Strict({\n agentId: NonEmptyString,\n requestId: NonEmptyString,\n response: AgentInteractionResponse,\n }),\n});\nexport type InteractionResponseMessage = Static<typeof InteractionResponseMessage>;\n\nexport const InteractionRequestedMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('interaction_requested'),\n payload: Strict({ agentId: NonEmptyString, request: AgentInteractionRequest }),\n});\nexport type InteractionRequestedMessage = Static<typeof InteractionRequestedMessage>;\n\nexport const InteractionResolvedMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('interaction_resolved'),\n payload: Strict({\n agentId: NonEmptyString,\n requestId: NonEmptyString,\n response: AgentInteractionResponse,\n }),\n});\nexport type InteractionResolvedMessage = Static<typeof InteractionResolvedMessage>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(properties, { additionalProperties: false });\n\nexport const AgentSessionSettingOption = Strict({\n value: NonEmptyString,\n label: NonEmptyString,\n description: Type.Optional(Type.String()),\n});\nexport type AgentSessionSettingOption = Static<typeof AgentSessionSettingOption>;\n\nexport const AgentSessionSetting = Strict({\n id: NonEmptyString,\n category: Type.Union([Type.Literal('model'), Type.Literal('permissions')]),\n label: NonEmptyString,\n value: Type.Union([NonEmptyString, Type.Null()]),\n options: Type.Array(AgentSessionSettingOption),\n mutable: Type.Boolean(),\n scope: Type.Union([Type.Literal('session'), Type.Literal('session_and_default')]),\n description: Type.Optional(Type.String()),\n});\nexport type AgentSessionSetting = Static<typeof AgentSessionSetting>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nconst strict = { additionalProperties: false } as const;\nexport const AgentToolResultJson = Type.Recursive((value) => Type.Union([\n Type.Null(), Type.Boolean(), Type.Number(), Type.String(), Type.Array(value), Type.Record(Type.String(), value),\n]));\nexport type AgentToolResultJson = Static<typeof AgentToolResultJson>;\nexport const AgentToolResultContent = Type.Union([\n Type.Object({ type: Type.Literal('text'), text: Type.String(), stream: Type.Optional(Type.Union([\n Type.Literal('stdout'), Type.Literal('stderr'), Type.Literal('combined'),\n ])) }, strict),\n Type.Object({ type: Type.Literal('json'), value: AgentToolResultJson }, strict),\n]);\nexport type AgentToolResultContent = Static<typeof AgentToolResultContent>;\nexport const AgentToolResult = Type.Object({\n content: Type.Array(AgentToolResultContent),\n exitCode: Type.Optional(Type.Integer({ minimum: Number.MIN_SAFE_INTEGER, maximum: Number.MAX_SAFE_INTEGER })),\n durationMs: Type.Optional(Type.Number({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER })),\n truncated: Type.Optional(Type.Boolean()),\n}, strict);\nexport type AgentToolResult = Static<typeof AgentToolResult>;\n", "import { AgentToolResult } from './tool-result.js';\nimport { type Static, type TSchema, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger } from './cursor.js';\nimport { AgentInteractionRequest, AgentInteractionResponse, AgentQuestionnaireQuestion, AgentQuestionnaireResponse, AgentToolDetail } from './interactions.js';\nimport { ResourceBinding } from './resources.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const AgentTaskItem = Strict({\n text: Type.String(),\n completed: Type.Boolean(),\n id: Type.Optional(NonEmptyString),\n status: Type.Optional(Type.Union([\n Type.Literal('pending'), Type.Literal('in_progress'), Type.Literal('completed'),\n ])),\n activeForm: Type.Optional(Type.String()),\n});\nexport type AgentTaskItem = Static<typeof AgentTaskItem>;\n\nconst ToolCallBase = {\n type: Type.Literal('tool_call'),\n callId: NonEmptyString,\n name: NonEmptyString,\n detail: AgentToolDetail,\n result: Type.Optional(AgentToolResult),\n};\n\nexport const AgentToolCallTimelineItem = Type.Union([\n Strict({ ...ToolCallBase, status: Type.Literal('running'), error: Type.Null() }),\n Strict({ ...ToolCallBase, status: Type.Literal('completed'), error: Type.Null() }),\n Strict({ ...ToolCallBase, status: Type.Literal('failed'), error: NonEmptyString }),\n Strict({ ...ToolCallBase, status: Type.Literal('canceled'), error: Type.Null() }),\n]);\nexport type AgentToolCallTimelineItem = Static<typeof AgentToolCallTimelineItem>;\n\nexport const UserMessageWithoutOrigin = Strict({\n type: Type.Literal('user_message'),\n text: Type.String(),\n messageId: Type.Optional(NonEmptyString),\n clientMessageId: Type.Optional(NonEmptyString),\n});\nexport const AgentUserMessageOrigin = Strict({ kind: Type.Union([\n Type.Literal('borgee'), Type.Literal('native'), Type.Literal('agent'), Type.Literal('unknown'),\n]) });\nexport const UserMessageWithOrigin = Strict({ ...UserMessageWithoutOrigin.properties, origin: Type.Optional(AgentUserMessageOrigin) });\nconst UserMessage = Strict({ ...UserMessageWithOrigin.properties, questionnaireResponse: Type.Optional(AgentQuestionnaireResponse) });\n\nexport const timelineItemsWithUser = <T extends TSchema>(user: T, includeQuestionnaire = true) => Type.Union([\n user,\n Strict({\n type: Type.Literal('assistant_message'),\n text: Type.String(),\n messageId: Type.Optional(NonEmptyString),\n }),\n ...(includeQuestionnaire ? [Strict({ type: Type.Literal('questionnaire'), messageId: NonEmptyString, text: Type.String(), questions: Type.Array(AgentQuestionnaireQuestion, { minItems: 1 }) })] : []),\n Strict({ type: Type.Literal('reasoning'), text: Type.String() }),\n AgentToolCallTimelineItem,\n Strict({ type: Type.Literal('todo'), items: Type.Array(AgentTaskItem) }),\n Strict({ type: Type.Literal('interaction'), request: AgentInteractionRequest, response: AgentInteractionResponse }),\n Strict({ type: Type.Literal('error'), message: Type.String() }),\n Strict({\n type: Type.Literal('compaction'),\n status: Type.Union([Type.Literal('loading'), Type.Literal('completed')]),\n trigger: Type.Optional(Type.Union([Type.Literal('auto'), Type.Literal('manual')])),\n preTokens: Type.Optional(SafeNonNegativeInteger),\n }),\n]);\nexport const AgentTimelineItem = timelineItemsWithUser(UserMessage);\nexport type AgentTimelineItem = Static<typeof AgentTimelineItem>;\n\n/** Settled disjoint token deltas; inputTokens excludes cache reads and writes. */\nexport const AgentUsageAccounting = Strict({\n measurementId: NonEmptyString,\n scope: Type.Union([Type.Literal('turn'), Type.Literal('llm_call')]),\n provider: NonEmptyString,\n model: NonEmptyString,\n inputTokens: SafeNonNegativeInteger,\n outputTokens: SafeNonNegativeInteger,\n cacheReadTokens: SafeNonNegativeInteger,\n cacheWriteTokens: SafeNonNegativeInteger,\n});\nexport type AgentUsageAccounting = Static<typeof AgentUsageAccounting>;\n\nexport const AgentUsage = Strict({\n accounting: Type.Optional(Type.Array(AgentUsageAccounting)),\n inputTokens: Type.Optional(SafeNonNegativeInteger),\n cachedInputTokens: Type.Optional(SafeNonNegativeInteger),\n outputTokens: Type.Optional(SafeNonNegativeInteger),\n totalCostUsd: Type.Optional(Type.Number({ minimum: 0 })),\n contextWindowMaxTokens: Type.Optional(SafeNonNegativeInteger),\n contextWindowUsedTokens: Type.Optional(SafeNonNegativeInteger),\n});\nexport type AgentUsage = Static<typeof AgentUsage>;\n\nexport const TimelineSeqRange = Strict({\n startSeq: SafeNonNegativeInteger,\n endSeq: SafeNonNegativeInteger,\n});\nexport type TimelineSeqRange = Static<typeof TimelineSeqRange>;\n\nexport const TimelineCollapse = Type.Union([\n Type.Literal('assistant_merge'),\n Type.Literal('reasoning_merge'),\n Type.Literal('tool_lifecycle'),\n]);\nexport type TimelineCollapse = Static<typeof TimelineCollapse>;\n\nexport const ProjectedTimelineEntry = Strict({\n providerId: NonEmptyString,\n item: AgentTimelineItem,\n turnId: Type.Optional(NonEmptyString),\n timestamp: NonEmptyString,\n seqStart: SafeNonNegativeInteger,\n seqEnd: SafeNonNegativeInteger,\n sourceSeqRanges: Type.Array(TimelineSeqRange),\n collapsed: Type.Array(TimelineCollapse),\n resources: Type.Array(ResourceBinding),\n});\nexport type ProjectedTimelineEntry = Static<typeof ProjectedTimelineEntry>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { AgentInteractionRequest } from './interactions.js';\nimport { AgentSessionSetting } from './session-settings.js';\nimport { AgentUsage } from './timeline.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const AgentStatus = Type.Union([\n Type.Literal('starting'), Type.Literal('idle'), Type.Literal('running'), Type.Literal('waiting'),\n Type.Literal('failed'), Type.Literal('closed'),\n]);\nexport type AgentStatus = Static<typeof AgentStatus>;\n\nexport const AgentCapabilities = Strict({\n history: Type.Boolean(),\n sendMessage: Type.Boolean(),\n queueMessage: Type.Optional(Type.Boolean()),\n steer: Type.Boolean(),\n cancel: Type.Boolean(),\n readResource: Type.Boolean(),\n planning: Type.Optional(Type.Boolean()),\n sessionSettings: Type.Optional(Type.Boolean()),\n commands: Type.Optional(Type.Boolean()),\n interactions: Strict({\n question: Type.Boolean(),\n planApproval: Type.Boolean(),\n toolApproval: Type.Boolean(),\n form: Type.Optional(Type.Boolean()),\n permissionApproval: Type.Optional(Type.Boolean()),\n externalAction: Type.Optional(Type.Boolean()),\n }),\n});\nexport type AgentCapabilities = Static<typeof AgentCapabilities>;\n\nexport const AgentPersistenceHandle = Strict({\n providerId: NonEmptyString,\n sessionId: NonEmptyString,\n opaque: NonEmptyString,\n});\nexport type AgentPersistenceHandle = Static<typeof AgentPersistenceHandle>;\n\nexport const AgentPlanningState = Strict({\n active: Type.Boolean(),\n requested: Type.Optional(Type.Boolean()),\n});\nexport type AgentPlanningState = Static<typeof AgentPlanningState>;\n\nexport const AgentChildSession = Strict({\n nativeSessionId: NonEmptyString,\n title: Type.String(),\n role: Type.Optional(Type.String()),\n description: Type.Optional(Type.String()),\n createdAt: NonEmptyString,\n parentTurnId: Type.Optional(NonEmptyString),\n parentCallId: Type.Optional(NonEmptyString),\n status: AgentStatus,\n observation: Type.Union([Type.Literal('live'), Type.Literal('saved_history')]),\n});\nexport type AgentChildSession = Static<typeof AgentChildSession>;\n\nexport const AgentRuntimeInfo = Strict({\n providerId: NonEmptyString,\n sessionId: Type.Union([NonEmptyString, Type.Null()]),\n status: AgentStatus,\n cwd: Type.Optional(NonEmptyString),\n model: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),\n mode: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),\n planning: Type.Optional(AgentPlanningState),\n settings: Type.Optional(Type.Array(AgentSessionSetting)),\n childSessions: Type.Optional(Type.Array(AgentChildSession)),\n persistence: Type.Optional(AgentPersistenceHandle),\n});\nexport type AgentRuntimeInfo = Static<typeof AgentRuntimeInfo>;\n\nexport const AgentSnapshotPayload = Strict({\n id: NonEmptyString,\n providerId: NonEmptyString,\n cwd: Type.Optional(NonEmptyString),\n model: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),\n createdAt: NonEmptyString,\n updatedAt: NonEmptyString,\n status: AgentStatus,\n activeTurn: Type.Union([\n Strict({ turnId: NonEmptyString, startedAt: Type.Optional(Type.Union([NonEmptyString, Type.Null()])) }),\n Type.Null(),\n ]),\n capabilities: AgentCapabilities,\n pendingInteractions: Type.Array(AgentInteractionRequest),\n runtimeInfo: AgentRuntimeInfo,\n persistence: Type.Optional(AgentPersistenceHandle),\n lastUsage: Type.Optional(AgentUsage),\n lastError: Type.Optional(Type.String()),\n});\nexport type AgentSnapshotPayload = Static<typeof AgentSnapshotPayload>;\n\nexport const AgentSnapshot = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_snapshot'),\n payload: AgentSnapshotPayload,\n});\nexport type AgentSnapshot = Static<typeof AgentSnapshot>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger } from './cursor.js';\nimport { ResourceBinding } from './resources.js';\nimport { AgentRuntimeInfo } from './snapshot.js';\nimport { AgentTimelineItem, AgentUsage } from './timeline.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nconst ProviderEvent = { providerId: NonEmptyString };\nconst TurnId = { turnId: Type.Optional(NonEmptyString) };\n\nexport const PublicAgentTimelineEvent = Strict({\n type: Type.Literal('timeline'),\n ...ProviderEvent,\n item: AgentTimelineItem,\n ...TurnId,\n resources: Type.Array(ResourceBinding),\n});\nexport type PublicAgentTimelineEvent = Static<typeof PublicAgentTimelineEvent>;\n\nexport const PublicAgentNonTimelineEvent = Type.Union([\n Strict({ type: Type.Literal('thread_started'), ...ProviderEvent, sessionId: NonEmptyString }),\n Strict({ type: Type.Literal('turn_started'), ...ProviderEvent, ...TurnId }),\n Strict({ type: Type.Literal('turn_completed'), ...ProviderEvent, ...TurnId, usage: Type.Optional(AgentUsage) }),\n Strict({\n type: Type.Literal('turn_failed'), ...ProviderEvent, ...TurnId, error: Type.String(),\n code: Type.Optional(NonEmptyString), diagnostic: Type.Optional(Type.String()),\n }),\n Strict({ type: Type.Literal('turn_canceled'), ...ProviderEvent, ...TurnId, reason: Type.String() }),\n Strict({ type: Type.Literal('usage_updated'), ...ProviderEvent, ...TurnId, usage: AgentUsage }),\n Strict({ type: Type.Literal('runtime_updated'), ...ProviderEvent, runtimeInfo: AgentRuntimeInfo }),\n]);\nexport type PublicAgentNonTimelineEvent = Static<typeof PublicAgentNonTimelineEvent>;\n\nexport const AgentStreamMessage = Type.Union([\n Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_stream'),\n payload: Strict({\n agentId: NonEmptyString,\n event: PublicAgentTimelineEvent,\n timestamp: NonEmptyString,\n seq: SafeNonNegativeInteger,\n epoch: NonEmptyString,\n }),\n }),\n Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_stream'),\n payload: Strict({\n agentId: NonEmptyString,\n event: PublicAgentNonTimelineEvent,\n timestamp: NonEmptyString,\n }),\n }),\n]);\nexport type AgentStreamMessage = Static<typeof AgentStreamMessage>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger, TimelineCursor } from './cursor.js';\nimport { ProjectedTimelineEntry } from './timeline.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const TimelineDirection = Type.Union([\n Type.Literal('tail'), Type.Literal('before'), Type.Literal('after'),\n]);\nexport type TimelineDirection = Static<typeof TimelineDirection>;\n\nexport const TimelineRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_request'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n direction: TimelineDirection,\n cursor: Type.Optional(TimelineCursor),\n limit: Type.Optional(Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER })),\n }),\n});\nexport type TimelineRequest = Static<typeof TimelineRequest>;\n\nexport const HistoryPage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_page'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n direction: TimelineDirection,\n epoch: NonEmptyString,\n reset: Type.Boolean(),\n staleCursor: Type.Boolean(),\n gap: Type.Boolean(),\n window: Strict({ minSeq: SafeNonNegativeInteger, maxSeq: SafeNonNegativeInteger, nextSeq: SafeNonNegativeInteger }),\n startCursor: Type.Union([TimelineCursor, Type.Null()]),\n endCursor: Type.Union([TimelineCursor, Type.Null()]),\n hasOlder: Type.Boolean(),\n hasNewer: Type.Boolean(),\n entries: Type.Array(ProjectedTimelineEntry),\n error: Type.Union([Type.String(), Type.Null()]),\n }),\n});\nexport type HistoryPage = Static<typeof HistoryPage>;\n", "import { type Static, Type } from '@sinclair/typebox';\nimport { ProtocolVersionSchema } from './version.js';\nimport { ResourceBinding } from './resources.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(properties, { additionalProperties: false });\nexport const AgentCommand = Strict({\n id: NonEmptyString,\n name: Type.String({ minLength: 1, pattern: '^[^\\\\s/]+$' }),\n description: Type.String(),\n kind: Type.Union([Type.Literal('command'), Type.Literal('skill'), Type.Literal('prompt')]),\n inputHint: Type.Optional(Type.String()),\n shortDescription: Type.Optional(Type.String()),\n documentation: Type.Optional(ResourceBinding),\n});\nexport type AgentCommand = Static<typeof AgentCommand>;\nexport const AgentCommandResult = Strict({ text: Type.Optional(Type.String()) });\nexport type AgentCommandResult = Static<typeof AgentCommandResult>;\nconst Identity = { requestId: NonEmptyString, agentId: NonEmptyString };\nexport const ListCommandsRequest = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('list_commands'), payload: Strict(Identity) });\nexport const CommandListResponse = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('command_list'), payload: Strict({ ...Identity, commands: Type.Array(AgentCommand) }) });\nexport type CommandListResponse = Static<typeof CommandListResponse>;\nexport const ExecuteCommandRequest = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('execute_command'), payload: Strict({ ...Identity, commandId: NonEmptyString, args: Type.String() }) });\nexport const CommandResultResponse = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('command_result'), payload: Strict({ ...Identity, result: AgentCommandResult }) });\nexport type CommandResultResponse = Static<typeof CommandResultResponse>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { AgentStreamMessage } from './envelope.js';\nimport { HistoryPage, TimelineRequest } from './history.js';\nimport {\n InteractionRequestedMessage,\n InteractionResolvedMessage,\n InteractionResponseMessage,\n} from './interactions.js';\nimport {\n ResourceRequest,\n ResourceResponse,\n ResourceUpdate,\n TimelineResourceBindingReplacement,\n} from './resources.js';\nimport { AgentPersistenceHandle, AgentSnapshot } from './snapshot.js';\nimport { ProtocolVersionSchema } from './version.js';\nimport { ListCommandsRequest, ExecuteCommandRequest, CommandListResponse, CommandResultResponse } from './commands.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const NegotiateRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('negotiate'),\n});\nexport type NegotiateRequest = Static<typeof NegotiateRequest>;\n\nexport const NegotiateResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('negotiated'),\n});\nexport type NegotiateResponse = Static<typeof NegotiateResponse>;\n\nexport const AgentProviderDescriptor = Strict({\n providerId: NonEmptyString,\n displayName: NonEmptyString,\n});\nexport type AgentProviderDescriptor = Static<typeof AgentProviderDescriptor>;\n\nexport const ProviderListResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('provider_list'),\n payload: Strict({ providers: Type.Array(AgentProviderDescriptor) }),\n});\nexport type ProviderListResponse = Static<typeof ProviderListResponse>;\n\nexport const SendMessageRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('send_message'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, text: Type.String(), delivery: Type.Optional(Type.Union([Type.Literal('immediate'), Type.Literal('next_turn')])) }),\n});\nexport type SendMessageRequest = Static<typeof SendMessageRequest>;\nexport type AgentMessageOptions = Pick<SendMessageRequest['payload'], 'delivery'>;\n\nexport const SteerRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('steer'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, text: Type.String() }),\n});\nexport type SteerRequest = Static<typeof SteerRequest>;\n\nexport const CancelRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('cancel'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString }),\n});\nexport type CancelRequest = Static<typeof CancelRequest>;\n\nexport const SetPlanningRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('set_planning'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, active: Type.Boolean() }),\n});\nexport type SetPlanningRequest = Static<typeof SetPlanningRequest>;\n\nexport const SetSessionSettingRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('set_session_setting'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, settingId: NonEmptyString, value: NonEmptyString }),\n});\nexport type SetSessionSettingRequest = Static<typeof SetSessionSettingRequest>;\n\nexport const AgentSessionConfig = Strict({\n sessionId: NonEmptyString,\n cwd: Type.Optional(NonEmptyString),\n model: Type.Optional(NonEmptyString),\n reasoningEffort: Type.Optional(NonEmptyString),\n systemPrompt: Type.Optional(Type.String()),\n planning: Type.Optional(Type.Boolean()),\n});\nexport type AgentSessionConfig = Static<typeof AgentSessionConfig>;\n\nexport const CreateAgentRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('create_agent'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n providerId: NonEmptyString,\n config: AgentSessionConfig,\n }),\n});\nexport type CreateAgentRequest = Static<typeof CreateAgentRequest>;\n\nexport const ResumeAgentRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resume_agent'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n persistence: AgentPersistenceHandle,\n }),\n});\nexport type ResumeAgentRequest = Static<typeof ResumeAgentRequest>;\n\nexport const AgentSessionResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_session'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n providerId: NonEmptyString,\n sessionId: NonEmptyString,\n persistence: Type.Optional(AgentPersistenceHandle),\n }),\n});\nexport type AgentSessionResponse = Static<typeof AgentSessionResponse>;\n\nexport const CommandAcknowledgementMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('command_acknowledged'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n command: Type.Union([\n Type.Literal('send_message'), Type.Literal('steer'), Type.Literal('cancel'), Type.Literal('set_planning'), Type.Literal('set_session_setting'),\n ]),\n }),\n});\nexport type CommandAcknowledgementMessage = Static<typeof CommandAcknowledgementMessage>;\n\nexport const TimelineSubscriptionRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_subscription'),\n payload: Strict({ requestId: NonEmptyString, agentIds: Type.Array(NonEmptyString, { uniqueItems: true }) }),\n});\nexport type TimelineSubscriptionRequest = Static<typeof TimelineSubscriptionRequest>;\n\nexport const TimelineSubscriptionResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_subscribed'),\n payload: Strict({ requestId: NonEmptyString, agentIds: Type.Array(NonEmptyString, { uniqueItems: true }) }),\n});\nexport type TimelineSubscriptionResponse = Static<typeof TimelineSubscriptionResponse>;\n\nexport const TimelineReplacementMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_replacement'),\n payload: Strict({ agentId: NonEmptyString, epoch: NonEmptyString }),\n});\nexport type TimelineReplacementMessage = Static<typeof TimelineReplacementMessage>;\n\nexport const AgentUpdateMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_update'),\n payload: AgentSnapshot.properties.payload,\n});\nexport type AgentUpdateMessage = Static<typeof AgentUpdateMessage>;\n\nexport const ProtocolErrorMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('protocol_error'),\n payload: Strict({\n requestId: Type.Optional(NonEmptyString),\n code: NonEmptyString,\n message: Type.String(),\n recoverable: Type.Boolean(),\n }),\n});\nexport type ProtocolErrorMessage = Static<typeof ProtocolErrorMessage>;\n\nexport const IncompatibleProtocolVersionErrorMessage = Strict({\n protocolVersion: NonEmptyString,\n type: Type.Literal('protocol_error'),\n payload: Strict({\n requestId: Type.Optional(NonEmptyString),\n code: Type.Literal('incompatible_protocol_version'),\n message: Type.String(),\n recoverable: Type.Literal(false),\n }),\n});\nexport type IncompatibleProtocolVersionErrorMessage = Static<typeof IncompatibleProtocolVersionErrorMessage>;\n\nexport const ClientMessage = Type.Union([\n ListCommandsRequest,\n ExecuteCommandRequest,\n NegotiateRequest,\n CreateAgentRequest,\n ResumeAgentRequest,\n SendMessageRequest,\n SteerRequest,\n CancelRequest,\n SetPlanningRequest,\n SetSessionSettingRequest,\n TimelineSubscriptionRequest,\n TimelineRequest,\n InteractionResponseMessage,\n ResourceRequest,\n]);\nexport type ClientMessage = Static<typeof ClientMessage>;\n\nexport const ServerMessage = Type.Union([\n CommandListResponse,\n CommandResultResponse,\n NegotiateResponse,\n ProviderListResponse,\n AgentSessionResponse,\n CommandAcknowledgementMessage,\n AgentSnapshot,\n AgentUpdateMessage,\n TimelineSubscriptionResponse,\n HistoryPage,\n TimelineReplacementMessage,\n AgentStreamMessage,\n InteractionRequestedMessage,\n InteractionResolvedMessage,\n ResourceResponse,\n ResourceUpdate,\n TimelineResourceBindingReplacement,\n ProtocolErrorMessage,\n]);\nexport type ServerMessage = Static<typeof ServerMessage>;\n", "import type { TSchema } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\n\nimport { AgentStreamMessage, type AgentStreamMessage as AgentStreamMessageValue } from './envelope.js';\nimport { HistoryPage, type HistoryPage as HistoryPageValue } from './history.js';\nimport {\n AgentSessionResponse,\n ClientMessage,\n CommandAcknowledgementMessage,\n CreateAgentRequest,\n IncompatibleProtocolVersionErrorMessage,\n ProviderListResponse,\n ResumeAgentRequest,\n ServerMessage,\n type AgentSessionResponse as AgentSessionResponseValue,\n type ClientMessage as ClientMessageValue,\n type CommandAcknowledgementMessage as CommandAcknowledgementMessageValue,\n type CreateAgentRequest as CreateAgentRequestValue,\n type IncompatibleProtocolVersionErrorMessage as IncompatibleProtocolVersionErrorMessageValue,\n type ProviderListResponse as ProviderListResponseValue,\n type ResumeAgentRequest as ResumeAgentRequestValue,\n type ServerMessage as ServerMessageValue,\n} from './messages.js';\nimport {\n ResourceResponse,\n ResourceUpdate,\n type ResourceResponse as ResourceResponseValue,\n type ResourceUpdate as ResourceUpdateValue,\n} from './resources.js';\nimport { AgentSnapshot, type AgentSnapshot as AgentSnapshotValue } from './snapshot.js';\nimport { BORGEE_AGENT_REMOTE_PROTOCOL_VERSION } from './version.js';\n\nexport interface WireIssue {\n code: 'invalid_json' | 'invalid_shape' | 'incompatible_protocol_version' | 'not_json_serializable';\n path: string;\n message: string;\n}\n\nexport type WireDecodeResult<T> =\n | { status: 'ok'; value: T }\n | { status: 'rejected'; issues: WireIssue[] };\n\nexport type WireEncodeResult =\n | { status: 'ok'; json: string }\n | { status: 'rejected'; issues: WireIssue[] };\n\nfunction shapeIssues(schema: TSchema, value: unknown): WireIssue[] {\n return [...Value.Errors(schema, value)].map((error) => ({\n code: 'invalid_shape',\n path: error.path,\n message: error.message,\n }));\n}\n\nfunction versionIssues(value: { protocolVersion: string }): WireIssue[] {\n if (value.protocolVersion === BORGEE_AGENT_REMOTE_PROTOCOL_VERSION) return [];\n return [{\n code: 'incompatible_protocol_version',\n path: '/protocolVersion',\n message: `Protocol version ${value.protocolVersion} is incompatible with ${BORGEE_AGENT_REMOTE_PROTOCOL_VERSION}.`,\n }];\n}\n\nfunction decode<T extends { protocolVersion: string }>(json: string, schema: TSchema): WireDecodeResult<T> {\n let value: unknown;\n try {\n value = JSON.parse(json);\n } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid JSON.' }] };\n }\n if (\n typeof value === 'object'\n && value !== null\n && 'protocolVersion' in value\n && typeof value.protocolVersion === 'string'\n ) {\n const issues = versionIssues(value as { protocolVersion: string });\n if (issues.length > 0) return { status: 'rejected', issues };\n }\n if (!Value.Check(schema, value)) return { status: 'rejected', issues: shapeIssues(schema, value) };\n const typed = value as T;\n const issues = versionIssues(typed);\n return issues.length > 0 ? { status: 'rejected', issues } : { status: 'ok', value: typed };\n}\n\nfunction decodeShape<T>(json: string, schema: TSchema): WireDecodeResult<T> {\n let value: unknown;\n try {\n value = JSON.parse(json);\n } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid JSON.' }] };\n }\n if (!Value.Check(schema, value)) return { status: 'rejected', issues: shapeIssues(schema, value) };\n return { status: 'ok', value: value as T };\n}\n\nfunction encode<T extends { protocolVersion: string }>(value: T, schema: TSchema): WireEncodeResult {\n const issues = versionIssues(value);\n if (issues.length > 0) return { status: 'rejected', issues };\n if (!Value.Check(schema, value)) return { status: 'rejected', issues: shapeIssues(schema, value) };\n try {\n return { status: 'ok', json: JSON.stringify(value) };\n } catch {\n return {\n status: 'rejected',\n issues: [{ code: 'not_json_serializable', path: '', message: 'Value cannot be serialized as JSON.' }],\n };\n }\n}\n\nexport function decodeAgentSnapshot(json: string): WireDecodeResult<AgentSnapshotValue> {\n return decode(json, AgentSnapshot);\n}\n\nexport function encodeAgentSnapshot(value: AgentSnapshotValue): WireEncodeResult {\n return encode(value, AgentSnapshot);\n}\n\nexport function decodeHistoryPage(json: string): WireDecodeResult<HistoryPageValue> {\n return decode(json, HistoryPage);\n}\n\nexport function encodeHistoryPage(value: HistoryPageValue): WireEncodeResult {\n return encode(value, HistoryPage);\n}\n\nexport function decodeAgentStreamMessage(json: string): WireDecodeResult<AgentStreamMessageValue> {\n return decode(json, AgentStreamMessage);\n}\n\nexport function encodeAgentStreamMessage(value: AgentStreamMessageValue): WireEncodeResult {\n return encode(value, AgentStreamMessage);\n}\n\nexport function decodeResourceResponse(json: string): WireDecodeResult<ResourceResponseValue> {\n return decode(json, ResourceResponse);\n}\n\nexport function encodeResourceResponse(value: ResourceResponseValue): WireEncodeResult {\n return encode(value, ResourceResponse);\n}\n\nexport function decodeResourceUpdate(json: string): WireDecodeResult<ResourceUpdateValue> {\n return decode(json, ResourceUpdate);\n}\n\nexport function encodeResourceUpdate(value: ResourceUpdateValue): WireEncodeResult {\n return encode(value, ResourceUpdate);\n}\n\nexport function decodeCreateAgentRequest(json: string): WireDecodeResult<CreateAgentRequestValue> {\n return decode(json, CreateAgentRequest);\n}\n\nexport function encodeCreateAgentRequest(value: CreateAgentRequestValue): WireEncodeResult {\n return encode(value, CreateAgentRequest);\n}\n\nexport function decodeResumeAgentRequest(json: string): WireDecodeResult<ResumeAgentRequestValue> {\n return decode(json, ResumeAgentRequest);\n}\n\nexport function encodeResumeAgentRequest(value: ResumeAgentRequestValue): WireEncodeResult {\n return encode(value, ResumeAgentRequest);\n}\n\nexport function decodeAgentSessionResponse(json: string): WireDecodeResult<AgentSessionResponseValue> {\n return decode(json, AgentSessionResponse);\n}\n\nexport function encodeAgentSessionResponse(value: AgentSessionResponseValue): WireEncodeResult {\n return encode(value, AgentSessionResponse);\n}\n\nexport function decodeProviderListResponse(json: string): WireDecodeResult<ProviderListResponseValue> {\n return decode(json, ProviderListResponse);\n}\n\nexport function encodeProviderListResponse(value: ProviderListResponseValue): WireEncodeResult {\n return encode(value, ProviderListResponse);\n}\n\nexport function decodeCommandAcknowledgementMessage(\n json: string,\n): WireDecodeResult<CommandAcknowledgementMessageValue> {\n return decode(json, CommandAcknowledgementMessage);\n}\n\nexport function encodeCommandAcknowledgementMessage(\n value: CommandAcknowledgementMessageValue,\n): WireEncodeResult {\n return encode(value, CommandAcknowledgementMessage);\n}\n\nexport function decodeClientMessage(json: string): WireDecodeResult<ClientMessageValue> {\n return decode(json, ClientMessage);\n}\n\nexport function encodeClientMessage(value: ClientMessageValue): WireEncodeResult {\n return encode(value, ClientMessage);\n}\n\nexport function decodeServerMessage(json: string): WireDecodeResult<ServerMessageValue> {\n return decode(json, ServerMessage);\n}\n\nexport function decodeIncompatibleProtocolVersionError(\n json: string,\n): WireDecodeResult<IncompatibleProtocolVersionErrorMessageValue> {\n return decodeShape(json, IncompatibleProtocolVersionErrorMessage);\n}\n\nexport function encodeServerMessage(value: ServerMessageValue): WireEncodeResult {\n return encode(value, ServerMessage);\n}\n", "import { Type, type Static } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\nimport type { WireDecodeResult, WireEncodeResult } from './codec.js';\n\nexport const UPLINK_VERSION = 1;\nexport const UPLINK_MAX_FRAME_BYTES = 32 * 1024 * 1024;\nexport const UPLINK_MAX_PUBLIC_REQUEST_BYTES = 1024 * 1024;\n\nconst identity = Type.String({ minLength: 1, maxLength: 512 });\nconst version = Type.Literal(UPLINK_VERSION);\nconst stream = { uplinkVersion: version, streamId: identity };\nconst rpc = { uplinkVersion: version, requestId: identity };\nconst object = { additionalProperties: false } as const;\nconst closeCode = Type.Union([\n ...[1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014].map((code) => Type.Literal(code)),\n Type.Integer({ minimum: 3000, maximum: 4999 }),\n]);\n\nexport const UplinkMessage = Type.Union([\n Type.Object({ uplinkVersion: version, type: Type.Literal('register'), agentId: identity }, object),\n Type.Object({ uplinkVersion: version, type: Type.Literal('registered'), agentId: identity }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_request'),\n method: Type.Union([Type.Literal('GET'), Type.Literal('POST')]),\n path: Type.String({ maxLength: 8192, pattern: '^/v1/(providers|sessions)([/?][^#]*)?$' }),\n body: Type.Optional(Type.String()),\n }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_response'),\n status: Type.Integer({ minimum: 200, maximum: 599 }), body: Type.String(),\n }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_cancel') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_open') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_opened') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_message'), message: Type.String() }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_close'),\n code: closeCode, reason: Type.String({ maxLength: 123 }),\n }, object),\n]);\nexport type UplinkMessage = Static<typeof UplinkMessage>;\nexport type UplinkBrokerMessage = Extract<UplinkMessage,\n { type: 'registered' | 'rpc_request' | 'rpc_cancel' | 'stream_open' | 'stream_message' | 'stream_close' }>;\n\nexport function decodeUplinkMessage(json: string): WireDecodeResult<UplinkMessage> {\n let value: unknown;\n try { value = JSON.parse(json); } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid uplink JSON.' }] };\n }\n if (!validMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid uplink envelope.' }] };\n }\n return { status: 'ok', value };\n}\n\nexport function encodeUplinkMessage(value: UplinkMessage): WireEncodeResult {\n if (!validMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid uplink envelope.' }] };\n }\n return { status: 'ok', json: JSON.stringify(value) };\n}\n\nfunction validMessage(value: unknown): value is UplinkMessage {\n if (!Value.Check(UplinkMessage, value)) return false;\n if (value.type !== 'stream_close') return true;\n let bytes = 0;\n for (const character of value.reason) {\n const code = character.codePointAt(0)!;\n bytes += code <= 0x7f ? 1 : code <= 0x7ff ? 2 : code <= 0xffff ? 3 : 4;\n }\n return bytes <= 123;\n}\n", "import { Type, type Static } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\n\nimport type { WireDecodeResult, WireEncodeResult } from './codec.js';\n\nexport const REMOTE_HOST_UPLINK_VERSION = 2;\n\nconst identity = Type.String({ minLength: 1, maxLength: 512 });\nconst version = Type.Literal(REMOTE_HOST_UPLINK_VERSION);\nconst object = { additionalProperties: false } as const;\nconst rpc = { uplinkVersion: version, requestId: identity };\nconst stream = { uplinkVersion: version, streamId: identity };\nconst provider = Type.Object({ providerId: identity, displayName: identity }, object);\nconst closeCode = Type.Union([\n ...[1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014].map((code) => Type.Literal(code)),\n Type.Integer({ minimum: 3000, maximum: 4999 }),\n]);\n\nconst requestPath = Type.String({\n maxLength: 8192,\n pattern: '^/(remote/(catalog(?:/(?:revision|session))?|workspaces|models|child/attach|attach|create)|v1/(providers|sessions))(?:[/?][^#]*)?$',\n});\n\nexport const RemoteHostUplinkMessage = Type.Union([\n Type.Union([\n Type.Object({ uplinkVersion: version, type: Type.Literal('register'), installationId: identity, name: identity,\n providerId: Type.Literal('dsh') }, object),\n Type.Object({ uplinkVersion: version, type: Type.Literal('register'), installationId: identity, name: identity,\n providers: Type.Array(provider, { minItems: 1, maxItems: 64 }) }, object),\n ]),\n Type.Object({ uplinkVersion: version, type: Type.Literal('registered'), hostId: identity }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_request'), method: Type.Union([Type.Literal('GET'), Type.Literal('POST')]),\n path: requestPath, sessionId: Type.Optional(identity), body: Type.Optional(Type.String()) }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_response'), status: Type.Integer({ minimum: 200, maximum: 599 }),\n body: Type.String() }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_cancel') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_open'), sessionId: identity }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_opened') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_message'), message: Type.String() }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_close'), code: closeCode, reason: Type.String({ maxLength: 123 }) }, object),\n]);\n\nexport type RemoteHostUplinkMessage = Static<typeof RemoteHostUplinkMessage>;\nexport type RemoteHostUplinkBrokerMessage = Extract<RemoteHostUplinkMessage,\n { type: 'registered' | 'rpc_request' | 'rpc_cancel' | 'stream_open' | 'stream_message' | 'stream_close' }>;\n\nexport function decodeRemoteHostUplinkMessage(json: string): WireDecodeResult<RemoteHostUplinkMessage> {\n let value: unknown;\n try { value = JSON.parse(json); } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid Remote Host uplink JSON.' }] };\n }\n if (!validRemoteHostUplinkMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid Remote Host uplink envelope.' }] };\n }\n return { status: 'ok', value };\n}\n\nexport function encodeRemoteHostUplinkMessage(value: RemoteHostUplinkMessage): WireEncodeResult {\n if (!validRemoteHostUplinkMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid Remote Host uplink envelope.' }] };\n }\n return { status: 'ok', json: JSON.stringify(value) };\n}\n\nfunction validRemoteHostUplinkMessage(value: unknown): value is RemoteHostUplinkMessage {\n if (!Value.Check(RemoteHostUplinkMessage, value)) return false;\n if (value.type === 'register' && 'providers' in value\n && new Set(value.providers.map((provider) => provider.providerId)).size !== value.providers.length) return false;\n if (value.type === 'rpc_request') {\n const pathname = value.path.split('?', 1)[0]!;\n const sessionScoped = pathname === '/remote/attach' || pathname === '/remote/child/attach' || pathname === '/remote/create' || pathname === '/v1/providers'\n || /^\\/v1\\/sessions\\/[^/]+\\/(snapshot|timeline)$/.test(pathname);\n if (sessionScoped !== (value.sessionId !== undefined)) return false;\n if (pathname.startsWith('/remote/')) {\n const isRead = pathname === '/remote/catalog' || pathname === '/remote/catalog/revision'\n || pathname === '/remote/catalog/session' || pathname === '/remote/workspaces' || pathname === '/remote/models';\n if ((isRead && (value.method !== 'GET' || value.body !== undefined))\n || (!isRead && (value.method !== 'POST' || value.body === undefined))) return false;\n }\n }\n if (value.type !== 'stream_close') return true;\n let bytes = 0;\n for (const character of value.reason) {\n const code = character.codePointAt(0)!;\n bytes += code <= 0x7f ? 1 : code <= 0x7ff ? 2 : code <= 0xffff ? 3 : 4;\n }\n return bytes <= 123;\n}\n", "import { type Static, Type } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\n\nconst strict = { additionalProperties: false } as const;\nexport const AgentFileChange = Type.Object({\n path: Type.String({ minLength: 1 }),\n kind: Type.Union([Type.Literal('added'), Type.Literal('modified'), Type.Literal('deleted'), Type.Literal('renamed'), Type.Literal('unknown')]),\n previousPath: Type.Optional(Type.String({ minLength: 1 })),\n diff: Type.String(),\n}, strict);\nexport type AgentFileChange = Static<typeof AgentFileChange>;\n\nexport const AgentFileChangesResult = Type.Object({\n format: Type.Literal('file_changes'), version: Type.Literal(1), files: Type.Array(AgentFileChange),\n}, strict);\nexport type AgentFileChangesResult = Static<typeof AgentFileChangesResult>;\n\nexport function isAgentFileChangesResult(value: unknown): value is AgentFileChangesResult {\n return Value.Check(AgentFileChangesResult, value);\n}\n", "import { Value } from '@sinclair/typebox/value';\nimport { AgentCapabilities } from './snapshot.js';\n\nimport { PublicAgentNonTimelineEvent, PublicAgentTimelineEvent } from './envelope.js';\nimport { AgentQuestionnaireResponse, InteractionRequestedMessage, InteractionResolvedMessage, InteractionResponseMessage } from './interactions.js';\n\nexport function isPublicAgentTimelineEvent(value: unknown): value is PublicAgentTimelineEvent {\n return Value.Check(PublicAgentTimelineEvent, value);\n}\n\nexport function isPublicAgentNonTimelineEvent(value: unknown): value is PublicAgentNonTimelineEvent {\n return Value.Check(PublicAgentNonTimelineEvent, value);\n}\n\nexport function isInteractionRequestedMessage(value: unknown): value is InteractionRequestedMessage {\n return Value.Check(InteractionRequestedMessage, value);\n}\n\nexport function isInteractionResolvedMessage(value: unknown): value is InteractionResolvedMessage {\n return Value.Check(InteractionResolvedMessage, value);\n}\n\nexport function isInteractionResponseMessage(value: unknown): value is InteractionResponseMessage {\n return Value.Check(InteractionResponseMessage, value);\n}\n\nexport function isAgentCapabilities(value: unknown): value is AgentCapabilities {\n return Value.Check(AgentCapabilities, value);\n}\n\nexport function isAgentQuestionnaireResponse(value: unknown): value is AgentQuestionnaireResponse {\n return Value.Check(AgentQuestionnaireResponse, value);\n}\n", "import { Type } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\nimport { PublicAgentTimelineEvent, PublicAgentNonTimelineEvent } from './envelope.js';\nimport { AgentSnapshot } from './snapshot.js';\nimport { InteractionRequestedMessage, InteractionResolvedMessage, InteractionResponseMessage } from './interactions.js';\nimport { timelineItemsWithUser, UserMessageWithOrigin, UserMessageWithoutOrigin } from './timeline.js';\nimport { PROTOCOL_VERSION } from './version.js';\n\nexport type NormalizedProtocolVersion = typeof PROTOCOL_VERSION | '1.6.0' | '1.5.0' | '1.4.0' | '1.1.0';\nexport function isSupportedNormalizedVersion(version: unknown): version is NormalizedProtocolVersion {\n return version === PROTOCOL_VERSION || version === '1.6.0' || version === '1.5.0' || version === '1.4.0' || version === '1.1.0';\n}\nconst TimelineWithoutOrigin = Type.Object({ ...PublicAgentTimelineEvent.properties, item: timelineItemsWithUser(UserMessageWithoutOrigin, false) }, { additionalProperties: false });\nconst Timeline160 = Type.Object({ ...PublicAgentTimelineEvent.properties, item: timelineItemsWithUser(UserMessageWithOrigin, false) }, { additionalProperties: false });\nconst Snapshot150 = Type.Object({ ...AgentSnapshot.properties, protocolVersion: Type.Literal('1.5.0') }, { additionalProperties: false });\nconst Snapshot160 = Type.Object({ ...AgentSnapshot.properties, protocolVersion: Type.Literal('1.6.0') }, { additionalProperties: false });\nconst interactionSchemas = (version: NormalizedProtocolVersion) => Type.Union([\n Type.Object({ ...InteractionRequestedMessage.properties, protocolVersion: Type.Literal(version) }, { additionalProperties: false }),\n Type.Object({ ...InteractionResolvedMessage.properties, protocolVersion: Type.Literal(version) }, { additionalProperties: false }),\n Type.Object({ ...InteractionResponseMessage.properties, protocolVersion: Type.Literal(version) }, { additionalProperties: false }),\n]);\nconst Interactions150 = interactionSchemas('1.5.0');\nconst Interactions160 = interactionSchemas('1.6.0');\nconst Interactions140 = interactionSchemas('1.4.0');\nconst Interactions110 = interactionSchemas('1.1.0');\nconst legacyTypes = new Set(['thread_started', 'turn_started', 'turn_completed', 'turn_failed', 'turn_canceled', 'timeline', 'usage_updated', 'runtime_updated', 'interaction_requested', 'interaction_resolved', 'interaction_response']);\nfunction legacyCore(value: unknown): boolean {\n if (Array.isArray(value)) return value.every(legacyCore);\n if (!value || typeof value !== 'object') return true;\n return Object.entries(value).every(([key, child]) => !['result', 'settings', 'childSessions', 'redactedFields', 'redacted', 'sensitive', 'clientMessageId', 'origin'].includes(key)\n && !(key === 'kind' && ['form', 'permission_approval', 'external_action'].includes(String(child))) && legacyCore(child));\n}\n\n/** Validate committed bytes in their declared schema before adapting a projection copy. */\nexport function validateNormalizedEventVersion(version: string, event: unknown): boolean {\n if (!isSupportedNormalizedVersion(version) || !event || typeof event !== 'object' || Array.isArray(event)) return false;\n const value = event as Record<string, unknown>;\n if ('protocolVersion' in value && value.protocolVersion !== version) return false;\n if (version === PROTOCOL_VERSION) return Value.Check(PublicAgentTimelineEvent, event) || Value.Check(PublicAgentNonTimelineEvent, event)\n || Value.Check(AgentSnapshot, event) || Value.Check(InteractionRequestedMessage, event) || Value.Check(InteractionResolvedMessage, event) || Value.Check(InteractionResponseMessage, event);\n if (version !== '1.5.0' && version !== '1.6.0') {\n if (value.type === 'agent_snapshot' || value.usage && typeof value.usage === 'object' && 'accounting' in value.usage) return false;\n if (version === '1.1.0' && (!legacyTypes.has(String(value.type)) || !legacyCore(event))) return false;\n }\n return Value.Check(version === '1.6.0' ? Timeline160 : TimelineWithoutOrigin, event) || Value.Check(PublicAgentNonTimelineEvent, event)\n || (version === '1.6.0' && Value.Check(Snapshot160, event))\n || (version === '1.5.0' && Value.Check(Snapshot150, event))\n || Value.Check(version === '1.6.0' ? Interactions160 : version === '1.5.0' ? Interactions150 : version === '1.4.0' ? Interactions140 : Interactions110, event);\n}\n", "import { isAgentQuestionnaireResponse, type AgentQuestionAnswer, type AgentTimelineItem, type AgentQuestionnaireResponse } from '@borgee/agent-remote-protocol';\nimport type { SessionManagementAction, SessionManagementService } from './session-management.js';\nexport const AGENT_REQUESTS_VERSION = 1;\nexport const APPLICATION_RPC_MAX_BYTES = 128 * 1024;\nexport const APPLICATION_REQUEST_TIMEOUT_MS = 30000;\nexport const AGENT_REQUESTS_HEADER = 'x-borgee-agent-requests-version';\nexport type ApplicationAction = SessionManagementAction | 'describe_application' | 'list_sessions' | 'describe_session' | 'session_control' | 'session_observation' | 'sync_normalized_activity' | 'stop_turn' | 'interaction_response';\nexport interface ApplicationProfile { protocol: 'remote-control'; version: 1; output_mode: 'normalized' | 'legacy'; services?: { session_directory?: { scope: 'registered' }; session_relations?: { version: 1 }; session_management?: SessionManagementService } }\nexport interface ApplicationBody { action: ApplicationAction; input: Record<string, unknown>; expires_at?: number }\nexport interface AgentApplicationRequest {\n body: ApplicationBody;\n}\nexport interface ApplicationRequestContext {\n actor_id: string;\n actor_role: string;\n channel_id: string;\n agent_id: string;\n connection_generation: string;\n is_agent_owner: boolean;\n channel_writable: boolean;\n deadline_at: number;\n}\n\n/** Authority is checked by the application against the server's trusted caller context. */\nexport function applicationRequest(action: ApplicationAction, input: object = {}, expiresAt = Date.now() + APPLICATION_REQUEST_TIMEOUT_MS): AgentApplicationRequest {\n return { body: { action, input: input as Record<string, unknown>, expires_at: expiresAt } };\n}\n\n/** Sender expiry limits when work can start; it grants no caller authority or rollback. */\nexport function parseApplicationBody(value: unknown, now = Date.now()): ApplicationBody {\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('invalid_application_request');\n const body = value as Record<string, unknown>;\n if (Object.keys(body).some(key => !['action', 'input', 'expires_at'].includes(key)) || typeof body.action !== 'string'\n || !body.input || typeof body.input !== 'object' || Array.isArray(body.input)\n || Object.hasOwn(body, 'expires_at') && (!Number.isSafeInteger(body.expires_at) || (body.expires_at as number) <= 0 || (body.expires_at as number) > 8_640_000_000_000_000)) throw new Error('invalid_application_request');\n if (typeof body.expires_at === 'number' && body.expires_at <= now) throw new Error('application_request_expired');\n return body as unknown as ApplicationBody;\n}\n\nexport function sessionMessageApplicationData(agentId: string, target: { binding_id: string; native_session_id: string; connection_generation: string }, questionnaireResponse?: AgentQuestionnaireResponse) {\n return { protocol: 'remote-control' as const, version: 1 as const, action: 'start_turn' as const, input: {\n agent_id: agentId, binding_id: target.binding_id, native_session_id: target.native_session_id, connection_generation: target.connection_generation,\n ...(questionnaireResponse ? { questionnaireResponse: structuredClone(questionnaireResponse) } : {}),\n } };\n}\n\nexport function isSessionMessageApplicationData(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value) && (value as Record<string, unknown>).protocol === 'remote-control';\n}\n\nexport function parseSessionMessageApplicationData(value: unknown): ReturnType<typeof sessionMessageApplicationData> {\n if (!isSessionMessageApplicationData(value) || value.version !== 1 || value.action !== 'start_turn'\n || Object.keys(value).length !== 4 || !value.input || typeof value.input !== 'object' || Array.isArray(value.input)) throw new Error('invalid_session_message');\n const input = value.input as Record<string, unknown>;\n const fields = ['agent_id', 'binding_id', 'native_session_id', 'connection_generation'];\n if (Object.keys(input).some(key => ![...fields, 'questionnaireResponse'].includes(key)) || !fields.every(key => typeof input[key] === 'string' && /^[A-Za-z0-9_:.@/-]{1,512}$/.test(input[key] as string))) throw new Error('invalid_session_message');\n if (Object.hasOwn(input, 'questionnaireResponse') && !isAgentQuestionnaireResponse(input.questionnaireResponse)) throw new Error('invalid_session_message');\n return structuredClone(value) as ReturnType<typeof sessionMessageApplicationData>;\n}\n\nexport function parseApplicationRequestContext(value: unknown, now = Date.now()): ApplicationRequestContext {\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('invalid_request_context');\n const context = value as Record<string, unknown>;\n const required = ['actor_id', 'actor_role', 'channel_id', 'agent_id', 'connection_generation', 'is_agent_owner', 'channel_writable', 'deadline_at'];\n if (Object.keys(context).length !== required.length || !required.every(key => Object.hasOwn(context, key))\n || !['actor_id', 'channel_id', 'agent_id', 'connection_generation'].every(key => typeof context[key] === 'string' && /^[A-Za-z0-9_:.@/-]{1,512}$/.test(context[key] as string))\n || typeof context.actor_role !== 'string' || !/^[A-Za-z0-9_:.@/-]{1,512}$/.test(context.actor_role)\n || typeof context.is_agent_owner !== 'boolean' || typeof context.channel_writable !== 'boolean'\n || !Number.isSafeInteger(context.deadline_at) || (context.deadline_at as number) <= now) throw new Error('invalid_request_context');\n return value as ApplicationRequestContext;\n}\n\n\n/** The visible answer body and its metadata share one deterministic representation. */\nexport function questionnaireAnswerText(questionnaire: Extract<AgentTimelineItem, { type: 'questionnaire' }>, answers: readonly AgentQuestionAnswer[], agentId: string): string {\n return questionnaire.questions.map(question => {\n const answer = answers.find(value => value.questionId === question.questionId);\n const values = answer?.selectedValues.map(value => question.options.find(option => option.value === value)?.label ?? value) ?? [];\n if (answer?.customText) values.push(answer.customText);\n return `${question.header}\\n${question.prompt}\\nAnswer: ${values.join('; ') || '(No answer)'}`;\n }).join('\\n\\n') + `\\n\\n<@${agentId}>`;\n}\n", "import type { AgentFormField, AgentFormValue, AgentInteractionRequest, AgentInteractionResponse } from './control.js';\n\nfunction requireValid(condition: unknown): asserts condition {\n if (!condition) throw new Error('Interaction response does not satisfy the pending request.');\n}\n\nfunction onlyKeys(value: object, keys: string[]): void {\n requireValid(Object.keys(value).every((key) => keys.includes(key)));\n}\n\n/** Validates a command against exactly the choices displayed by its pending request. */\nexport function validateInteractionResponse(request: AgentInteractionRequest, response: AgentInteractionResponse): void {\n requireValid(response && request.kind === response.kind);\n if (request.kind === 'question' && response.kind === 'question') {\n onlyKeys(response, ['kind', 'answers', 'dismissed']);\n requireValid(Array.isArray(response.answers));\n requireValid(response.dismissed === undefined || typeof response.dismissed === 'boolean');\n const seen = new Set<string>();\n for (const answer of response.answers) {\n onlyKeys(answer, ['questionId', 'selectedValues', 'customText']);\n const question = request.questions.find(({ questionId }) => questionId === answer.questionId);\n requireValid(question && !seen.has(answer.questionId));\n seen.add(answer.questionId);\n requireValid(Array.isArray(answer.selectedValues) && new Set(answer.selectedValues).size === answer.selectedValues.length);\n requireValid(question.selection !== 'single' || answer.selectedValues.length <= 1);\n requireValid(answer.selectedValues.every((value) => question.options.some((option) => option.value === value)));\n requireValid(answer.customText === undefined || (question.allowCustomText && typeof answer.customText === 'string'));\n if (!response.dismissed && question.required) requireValid(answer.selectedValues.length > 0 || answer.customText?.trim());\n }\n if (response.dismissed) requireValid(request.questions.every(({ allowDismiss }) => allowDismiss));\n else requireValid(request.questions.every((question) => !question.required || seen.has(question.questionId)));\n return;\n }\n if (request.kind === 'plan_approval' && response.kind === 'plan_approval') {\n onlyKeys(response, response.action === 'reject' ? ['kind', 'action', 'feedback'] : ['kind', 'action']);\n requireValid(request.allowedActions.includes(response.action));\n if (response.action === 'reject') requireValid(response.feedback === undefined || typeof response.feedback === 'string');\n return;\n }\n if (request.kind === 'tool_approval' && response.kind === 'tool_approval') {\n requireValid(request.allowedDecisions.includes(response.decision));\n if (response.decision === 'allow') {\n onlyKeys(response, response.scope === 'policy' ? ['kind', 'decision', 'scope', 'policyId'] : ['kind', 'decision', 'scope']);\n requireValid(request.allowScopes.includes(response.scope));\n if (response.scope === 'policy') requireValid(request.policies?.some(({ policyId }) => policyId === response.policyId));\n } else {\n onlyKeys(response, ['kind', 'decision', 'message']);\n requireValid(response.message === undefined || typeof response.message === 'string');\n }\n return;\n }\n if (request.kind === 'form' && response.kind === 'form') {\n if (response.action !== 'submit') {\n onlyKeys(response, ['kind', 'action']);\n requireValid(response.action === 'decline' || response.action === 'cancel');\n return;\n }\n onlyKeys(response, ['kind', 'action', 'values']);\n requireValid(response.values && typeof response.values === 'object' && !Array.isArray(response.values));\n requireValid(Object.keys(response.values).every((key) => request.fields.some(({ fieldId }) => fieldId === key)));\n for (const field of request.fields) {\n const present = Object.hasOwn(response.values, field.fieldId);\n requireValid(present || !field.required);\n if (present) validateFormValue(field, response.values[field.fieldId]!);\n }\n return;\n }\n if (request.kind === 'permission_approval' && response.kind === 'permission_approval') {\n if (response.decision === 'allow') {\n onlyKeys(response, ['kind', 'decision', 'scope']);\n requireValid(request.allowScopes.includes(response.scope));\n } else {\n onlyKeys(response, ['kind', 'decision']);\n requireValid(response.decision === 'deny');\n }\n return;\n }\n if (request.kind === 'external_action' && response.kind === 'external_action') {\n onlyKeys(response, ['kind', 'action']);\n requireValid(['completed', 'decline', 'cancel'].includes(response.action));\n return;\n }\n requireValid(false);\n}\n\nfunction validateFormValue(field: AgentFormField, value: AgentFormValue): void {\n switch (field.type) {\n case 'text':\n requireValid(typeof value === 'string');\n requireValid(field.minLength === undefined || [...value].length >= field.minLength);\n requireValid(field.maxLength === undefined || [...value].length <= field.maxLength);\n requireValid(field.format === undefined || validFormat(field.format, value));\n break;\n case 'number':\n requireValid(typeof value === 'number' && Number.isFinite(value));\n requireValid(!field.integer || Number.isInteger(value));\n requireValid(field.minimum === undefined || value >= field.minimum);\n requireValid(field.maximum === undefined || value <= field.maximum);\n break;\n case 'boolean':\n requireValid(typeof value === 'boolean');\n break;\n case 'select':\n requireValid(typeof value === 'string' && field.options.some((option) => option.value === value));\n break;\n case 'multiselect':\n requireValid(Array.isArray(value) && value.every((item) => typeof item === 'string'));\n requireValid(new Set(value).size === value.length);\n requireValid(value.every((item) => field.options.some((option) => option.value === item)));\n requireValid(field.minItems === undefined || value.length >= field.minItems);\n requireValid(field.maxItems === undefined || value.length <= field.maxItems);\n break;\n }\n}\n\nfunction validFormat(format: string, value: string): boolean {\n if (format === 'email') return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/u.test(value);\n if (format === 'uri') {\n return /^[a-z][a-z\\d+.-]*:(?:[a-z\\d\\-._~:/?#[\\]@!$&'()*+,;=]|%[a-f\\d]{2})*$/iu.test(value);\n }\n const date = /^(\\d{4})-(\\d{2})-(\\d{2})$/u.exec(value.slice(0, 10));\n if (!date) return false;\n const year = Number(date[1]);\n const month = Number(date[2]);\n const day = Number(date[3]);\n const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month < 1 || month > 12 || day < 1 || day > days[month - 1]!) return false;\n if (format === 'date') return value.length === 10;\n return /^\\d{4}-\\d{2}-\\d{2}[tT](?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[zZ]|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$/u.test(value);\n}\n\n/** Produces a detached public request without publishing sensitive field defaults. */\nexport function redactInteractionRequest(request: AgentInteractionRequest): AgentInteractionRequest {\n const result = JSON.parse(JSON.stringify(request)) as AgentInteractionRequest;\n if (result.kind === 'form') {\n for (const field of result.fields) if (field.sensitive) delete field.defaultValue;\n }\n return result;\n}\n\n/** Produces a detached historical receipt; sensitive values belong only in the provider command. */\nexport function redactInteractionResponse(request: AgentInteractionRequest, response: AgentInteractionResponse): AgentInteractionResponse {\n const result = JSON.parse(JSON.stringify(response)) as AgentInteractionResponse;\n if (result.kind === 'question') {\n result.answers = result.answers.map((answer) => {\n const question = request.kind === 'question' ? request.questions.find(({ questionId }) => questionId === answer.questionId) : undefined;\n return !question || question.sensitive || answer.redacted\n ? { questionId: answer.questionId, selectedValues: [], redacted: true }\n : answer;\n });\n }\n if (result.kind === 'form' && result.action === 'submit') {\n const redacted = new Set(result.redactedFields ?? []);\n for (const fieldId of Object.keys(result.values)) {\n const field = request.kind === 'form' ? request.fields.find((entry) => entry.fieldId === fieldId) : undefined;\n if (!field || field.sensitive || redacted.has(fieldId)) {\n delete result.values[fieldId];\n redacted.add(fieldId);\n }\n }\n if (redacted.size) result.redactedFields = [...redacted];\n }\n return result;\n}\n", "export type AgentToolResultJson = null | boolean | number | string | AgentToolResultJson[] | { [key: string]: AgentToolResultJson };\nexport type AgentToolResultContent =\n | { type: 'text'; text: string; stream?: 'stdout' | 'stderr' | 'combined' }\n | { type: 'json'; value: AgentToolResultJson };\n\nexport interface AgentToolResult {\n content: AgentToolResultContent[];\n exitCode?: number;\n durationMs?: number;\n truncated?: boolean;\n}\n\nexport const TOOL_RESULT_MAX_CHARS = 64 * 1024;\nexport const TOOL_RESULT_MAX_BLOCKS = 128;\n\n/** Result bodies are bounded snapshots; consumers replace them instead of appending. */\nexport function boundToolResult(result: AgentToolResult): AgentToolResult {\n const content: AgentToolResultContent[] = [];\n let remaining = TOOL_RESULT_MAX_CHARS;\n let truncated = result.truncated ?? false;\n for (const block of result.content) {\n if (content.length === TOOL_RESULT_MAX_BLOCKS || remaining === 0) { truncated = true; break; }\n const text = block.type === 'text' ? block.text : JSON.stringify(block.value);\n if (text.length > remaining) {\n let end = remaining;\n if (end > 0 && /[\\uD800-\\uDBFF]/.test(text[end - 1]!)) end -= 1;\n content.push(block.type === 'text' ? { ...block, text: text.slice(0, end) } : { type: 'text', text: text.slice(0, end) });\n truncated = true;\n break;\n }\n content.push(block.type === 'text' ? { ...block } : { type: 'json', value: JSON.parse(text) as AgentToolResultJson });\n remaining -= text.length;\n }\n return { ...result, content, ...(truncated ? { truncated: true } : {}) };\n}\n", "import type { AgentInteractionRequest, AgentInteractionResponse } from './control.js';\nimport type { AgentStreamEvent } from './observation.js';\nimport { redactInteractionRequest, redactInteractionResponse, validateInteractionResponse } from './interactions.js';\n\nexport interface AgentCommand {\n id: string;\n name: string;\n description: string;\n kind: 'command' | 'skill' | 'prompt';\n inputHint?: string;\n shortDescription?: string;\n /** Provider-owned resource locator for read-only command documentation. */\n documentation?: string;\n}\n\nexport interface AgentCommandResult {\n text?: string;\n /** This invocation admitted native turn work; completion remains on observe(). */\n execution?: 'turn';\n /** Turn identity returned by the native transport. */\n turnId?: string;\n /** Actual native input protocol identity, including caller-assigned message IDs. */\n messageId?: string;\n}\n\n/** The invocation was rejected before any native side effect or turn admission. */\nexport class AgentCommandRejectedError extends Error {\n constructor(message: string) { super(message); this.name = 'AgentCommandRejectedError'; }\n}\n\nexport function validateCommandDirectory(commands: AgentCommand[]): AgentCommand[] {\n const ids = new Set<string>();\n const names = new Set<string>();\n for (const command of commands) {\n if (!command.id || ids.has(command.id) || !/^[^\\s/]+$/u.test(command.name) || names.has(command.name)\n || typeof command.description !== 'string' || !['command', 'skill', 'prompt'].includes(command.kind)\n || (command.inputHint !== undefined && typeof command.inputHint !== 'string')\n || (command.shortDescription !== undefined && typeof command.shortDescription !== 'string')\n || (command.documentation !== undefined && (typeof command.documentation !== 'string' || !command.documentation.trim()))) throw new Error('Invalid native command directory.');\n ids.add(command.id);\n names.add(command.name);\n }\n return commands.map((command) => ({ ...command }));\n}\n\ntype CommandRequest = Omit<Extract<AgentInteractionRequest, { kind: 'question' }>, 'requestId'>\n | Omit<Extract<AgentInteractionRequest, { kind: 'form' }>, 'requestId'>;\ninterface PendingCommandInteraction {\n request: AgentInteractionRequest;\n handler(response: AgentInteractionResponse): Promise<void>;\n submitting: boolean;\n}\n\n/** Command menus share the same response validation and events as native interactions. */\nexport class CommandInteractions {\n private readonly requests = new Map<string, PendingCommandInteraction>();\n private readonly prefix = `${Date.now().toString(36)}:${Math.random().toString(36).slice(2)}`;\n private sequence = 0;\n constructor(private readonly provider: string, private readonly emit: (event: AgentStreamEvent) => void) {}\n\n get pending(): boolean { return this.requests.size > 0; }\n pendingInteractions(): AgentInteractionRequest[] { return [...this.requests.values()].map(value => redactInteractionRequest(value.request)); }\n\n open(request: CommandRequest, handler: PendingCommandInteraction['handler']): string {\n const requestId = `command:${this.prefix}:${++this.sequence}`;\n const full = { ...JSON.parse(JSON.stringify(request)) as CommandRequest, requestId };\n this.requests.set(requestId, { request: full, handler, submitting: false });\n this.emit({ type: 'interaction_requested', provider: this.provider, request: redactInteractionRequest(full) });\n return requestId;\n }\n\n async respond(requestId: string, response: AgentInteractionResponse): Promise<boolean> {\n const pending = this.requests.get(requestId);\n if (!pending) return false;\n if (pending.submitting) throw new Error('Command interaction response is already pending.');\n validateInteractionResponse(pending.request, response);\n pending.submitting = true;\n try {\n const canceled = response.kind === 'question' ? response.dismissed === true\n : response.kind === 'form' && response.action !== 'submit';\n if (!canceled) await pending.handler(response);\n if (this.requests.get(requestId) === pending) {\n this.requests.delete(requestId);\n this.emit({ type: 'interaction_resolved', provider: this.provider, requestId, response: redactInteractionResponse(pending.request, response) });\n }\n return true;\n } finally { pending.submitting = false; }\n }\n\n clear(): void { this.requests.clear(); }\n}\n", "/** Remote Control application payloads carried by the BPP request and response envelopes. */\nexport const SESSION_CONTROL_CAPABILITY = 'session_control_v1';\nexport const SESSION_CONTROL_ACTION = 'session_control';\nexport const SESSION_CONTROL_VERSION = 1;\nexport const SESSION_CONTROL_MAX_BYTES = 32768;\nexport const SESSION_CONTROL_DIRECTORY_MAX_BYTES = 131072;\nexport const SESSION_INPUT_CAPABILITY = 'session_input_v1';\nexport const SESSION_INPUT_STEER_CAPABILITY = 'session_input_steer_v1';\nexport const SESSION_INPUT_NEXT_TURN_CAPABILITY = 'session_input_next_turn_v1';\nexport const SESSION_INPUT_START_TURN_CAPABILITY = 'session_input_start_turn_v1';\nexport const SESSION_CONTROL_RECEIPTS_CAPABILITY = 'session_control_receipts_v1';\nexport type SessionControlOperation =\n | { kind: 'execute_command'; command_id: string; args: string }\n | { kind: 'list_commands' }\n | { kind: 'list_pending_inputs' }\n | { kind: 'send_input'; delivery: 'steer' | 'next_turn'; text: string; expected_turn_id?: string }\n | { kind: 'set_planning'; active: boolean }\n | { kind: 'set_setting'; setting_id: string; value: string };\nexport interface SessionControlAdmission {\n input_message_id: string;\n input_created_at: number;\n}\nexport interface SessionControlInput {\n version: 1;\n operation_id: string;\n binding_id: string;\n native_session_id: string;\n connection_generation: string;\n operation: SessionControlOperation;\n}\nexport interface SessionControlRequest {\n actor_id?: string;\n action: 'session_control';\n version: 1;\n operation_id: string;\n agent_id: string;\n channel_id: string;\n binding_id: string;\n native_session_id: string;\n connection_generation: string;\n deadline_at: number;\n operation: SessionControlOperation;\n admission?: SessionControlAdmission;\n}\nexport interface SessionControlTarget {\n input_operations?: string[];\n version: 1;\n agent_id: string;\n channel_id: string;\n binding_id: string;\n native_session_id: string;\n connection_generation: string;\n capabilities: unknown;\n}\nexport interface SessionInputReceipt {\n delivery: 'steer' | 'next_turn';\n native_message_id?: string;\n turn_id?: string;\n}\nexport interface SessionControlResult {\n pending_native_message_ids?: string[];\n input_receipt?: SessionInputReceipt;\n text?: string;\n commands?: unknown[];\n}\nexport interface SessionControlResponse {\n version: 1;\n operation_id: string;\n binding_id: string;\n native_session_id: string;\n connection_generation: string;\n status: 'confirmed' | 'rejected' | 'unsupported' | 'unconfirmed';\n reason?: string;\n result?: SessionControlResult;\n input_message_id?: string;\n}\n", "import { validateCommandDirectory, type AgentCommand } from '@borgee/agent-provider-sdk';\nimport { APPLICATION_RPC_MAX_BYTES } from '../application-request.js';\nimport { SESSION_CONTROL_ACTION, SESSION_CONTROL_DIRECTORY_MAX_BYTES, SESSION_CONTROL_MAX_BYTES, SESSION_CONTROL_VERSION, type SessionControlRequest, type SessionControlResponse, type SessionControlOperation, type SessionControlInput, type SessionControlTarget } from '../session-control-types.js';\nimport { validSessionCapabilities } from './normalized-session-capabilities.js';\nexport { SESSION_INPUT_CAPABILITY, SESSION_INPUT_START_TURN_CAPABILITY, SESSION_INPUT_STEER_CAPABILITY, SESSION_INPUT_NEXT_TURN_CAPABILITY, SESSION_CONTROL_ACTION, SESSION_CONTROL_CAPABILITY, SESSION_CONTROL_DIRECTORY_MAX_BYTES, SESSION_CONTROL_MAX_BYTES, SESSION_CONTROL_VERSION } from '../session-control-types.js';\nexport type { SessionControlRequest, SessionControlResponse, SessionControlOperation, SessionControlInput, SessionControlTarget, SessionControlAdmission, SessionInputReceipt } from '../session-control-types.js';\n\nconst routingId = /^[A-Za-z0-9_:.@/-]{1,512}$/;\nconst bytes = (value: string) => new TextEncoder().encode(value).byteLength;\nfunction object(value: unknown): value is Record<string, unknown> { return value !== null && typeof value === 'object' && !Array.isArray(value); }\nfunction keys(value: Record<string, unknown>, required: string[], optional: string[] = []): boolean {\n return required.every(key => Object.hasOwn(value, key)) && Object.keys(value).every(key => required.includes(key) || optional.includes(key));\n}\nfunction id(value: unknown): value is string { return typeof value === 'string' && routingId.test(value); }\nfunction bounded(value: unknown, max: number, nonempty = false): value is string { return typeof value === 'string' && (!nonempty || value.length > 0) && bytes(value) <= max; }\n\nexport function validSessionControlOperation(value: unknown): value is SessionControlOperation {\n if (!object(value)) return false;\n switch (value.kind) {\n case 'set_setting': return keys(value, ['kind', 'setting_id', 'value']) && id(value.setting_id) && bounded(value.value, 4096);\n case 'set_planning': return keys(value, ['kind', 'active']) && typeof value.active === 'boolean';\n case 'list_pending_inputs':\n case 'list_commands': return keys(value, ['kind']);\n case 'send_input': return keys(value, ['kind', 'delivery', 'text'], value.delivery === 'steer' ? ['expected_turn_id'] : []) && bounded(value.text, 16384, true) && value.text.trim().length > 0 && ((value.delivery === 'steer' && id(value.expected_turn_id)) || (value.delivery === 'next_turn' && value.expected_turn_id === undefined));\n case 'execute_command': return keys(value, ['kind', 'command_id', 'args']) && bounded(value.command_id, 512, true) && bounded(value.args, 16384);\n default: return false;\n }\n}\n\nexport function parseSessionControlRequest(value: unknown, now = Date.now()): SessionControlRequest {\n if (!object(value) || !keys(value, ['action', 'version', 'operation_id', 'agent_id', 'channel_id', 'binding_id', 'native_session_id', 'connection_generation', 'deadline_at', 'operation'], ['admission', 'actor_id'])\n || value.action !== SESSION_CONTROL_ACTION || value.version !== SESSION_CONTROL_VERSION || !id(value.operation_id) || value.operation_id.length > 128\n || !id(value.agent_id) || !id(value.channel_id) || !id(value.binding_id) || !id(value.native_session_id) || !id(value.connection_generation)\n || !Number.isSafeInteger(value.deadline_at) || (value.deadline_at as number) <= now || (value.deadline_at as number) > now + 30000 || !validSessionControlOperation(value.operation)\n || bytes(JSON.stringify(value)) > SESSION_CONTROL_MAX_BYTES) throw new Error('invalid_session_control_request');\n if (value.actor_id !== undefined && !id(value.actor_id) || ['set_setting', 'set_planning'].includes(value.operation.kind) && !id(value.actor_id)) throw new Error('session_control_receipts_required');\n const admission = value.admission;\n if (value.operation.kind === 'execute_command' || value.operation.kind === 'send_input') {\n if (!object(admission) || !keys(admission, ['input_message_id', 'input_created_at'])\n || !id(admission.input_message_id) || !Number.isSafeInteger(admission.input_created_at)\n || (admission.input_created_at as number) <= 0) throw new Error('invalid_session_control_admission');\n } else if (admission !== undefined) throw new Error('unexpected_session_control_admission');\n return value as unknown as SessionControlRequest;\n}\n\nexport function parseSessionControlInput(value: unknown): SessionControlInput {\n if (!object(value) || !keys(value, ['version', 'operation_id', 'binding_id', 'native_session_id', 'connection_generation', 'operation'])\n || value.version !== SESSION_CONTROL_VERSION || !id(value.operation_id) || value.operation_id.length > 128\n || !id(value.binding_id) || !id(value.native_session_id) || !id(value.connection_generation)\n || !validSessionControlOperation(value.operation) || bytes(JSON.stringify(value)) > SESSION_CONTROL_MAX_BYTES) throw new Error('invalid_session_control_input');\n return value as unknown as SessionControlInput;\n}\n\nexport function sessionControlResponse(request: SessionControlRequest, status: SessionControlResponse['status'], reason?: string): SessionControlResponse {\n return { version: SESSION_CONTROL_VERSION, operation_id: request.operation_id, binding_id: request.binding_id, native_session_id: request.native_session_id,\n connection_generation: request.connection_generation, status, ...(reason ? { reason } : {}), ...(request.admission ? { input_message_id: request.admission.input_message_id } : {}) };\n}\n\nexport function parseSessionControlResponse(value: unknown, request: SessionControlRequest): SessionControlResponse {\n const result = parseSessionControlResult(value, request);\n if (result.input_message_id !== undefined && result.input_message_id !== request.admission?.input_message_id) throw new Error('invalid_session_control_response');\n return result;\n}\n\nexport function parseSessionControlResult(value: unknown, request: SessionControlInput): SessionControlResponse {\n if (!object(value) || !keys(value, ['version', 'operation_id', 'binding_id', 'native_session_id', 'connection_generation', 'status'], ['reason', 'result', 'input_message_id'])\n || value.version !== SESSION_CONTROL_VERSION || value.operation_id !== request.operation_id || value.binding_id !== request.binding_id || value.native_session_id !== request.native_session_id\n || value.connection_generation !== request.connection_generation || !['confirmed', 'rejected', 'unsupported', 'unconfirmed'].includes(value.status as string)\n || value.reason !== undefined && !bounded(value.reason, 1024) || value.input_message_id !== undefined && (!['execute_command', 'send_input'].includes(request.operation.kind) || !id(value.input_message_id))\n || value.status !== 'confirmed' && value.result !== undefined) throw new Error('invalid_session_control_response');\n if (value.result !== undefined) {\n if (!object(value.result) || !keys(value.result, [], ['text', 'commands', 'input_receipt', 'pending_native_message_ids'])) throw new Error('invalid_session_control_result');\n const pending = value.result.pending_native_message_ids;\n if (request.operation.kind === 'list_pending_inputs') {\n if (!Array.isArray(pending) || pending.length > 128 || !pending.every(id) || new Set(pending).size !== pending.length || Object.keys(value.result).length !== 1) throw new Error('invalid_pending_input_snapshot');\n } else if (pending !== undefined) throw new Error('unexpected_pending_input_snapshot');\n const receipt = value.result.input_receipt;\n if (request.operation.kind === 'send_input') {\n if (!object(receipt) || !keys(receipt, ['delivery'], ['native_message_id', 'turn_id']) || receipt.delivery !== request.operation.delivery\n || (receipt.native_message_id === undefined && receipt.turn_id === undefined) || (receipt.native_message_id !== undefined && !id(receipt.native_message_id)) || (receipt.turn_id !== undefined && !id(receipt.turn_id))\n || (receipt.delivery === 'steer' && receipt.turn_id !== request.operation.expected_turn_id) || value.result.text !== undefined || value.result.commands !== undefined) throw new Error('invalid_session_input_receipt');\n } else if (receipt !== undefined) throw new Error('unexpected_session_input_receipt');\n if (value.result.text !== undefined && (request.operation.kind !== 'execute_command' || !bounded(value.result.text, SESSION_CONTROL_MAX_BYTES))) throw new Error('unexpected_session_control_text');\n if (value.result.commands !== undefined) {\n if (request.operation.kind !== 'list_commands' || !Array.isArray(value.result.commands) || value.result.commands.length > 4096) throw new Error('unexpected_session_control_commands');\n for (const command of value.result.commands) {\n if (!object(command) || !keys(command, ['id', 'name', 'description', 'kind'], ['inputHint', 'shortDescription', 'documentation']) || !bounded(command.id, 512, true) || !bounded(command.name, 256, true)\n || !bounded(command.description, 16384) || command.inputHint !== undefined && !bounded(command.inputHint, 4096) || command.shortDescription !== undefined && !bounded(command.shortDescription, 16384)) throw new Error('invalid_session_control_command');\n }\n validateCommandDirectory(value.result.commands as AgentCommand[]);\n }\n }\n if (value.status === 'confirmed' && request.operation.kind === 'list_pending_inputs' && (!object(value.result) || !Array.isArray(value.result.pending_native_message_ids))) throw new Error('missing_pending_input_snapshot');\n if (value.status === 'confirmed' && request.operation.kind === 'send_input' && (!object(value.result) || !object(value.result.input_receipt))) throw new Error('missing_session_input_receipt');\n if (value.status === 'confirmed' && request.operation.kind === 'list_commands' && (!object(value.result) || !Array.isArray(value.result.commands))) throw new Error('missing_session_control_commands');\n if (bytes(JSON.stringify(value)) > sessionControlResponseMaxBytes(request.operation)) throw new Error('session_control_response_too_large');\n return value as unknown as SessionControlResponse;\n}\n\nexport function sessionControlResponseMaxBytes(operation?: SessionControlOperation): number {\n return operation?.kind === 'list_commands' ? SESSION_CONTROL_DIRECTORY_MAX_BYTES : SESSION_CONTROL_MAX_BYTES;\n}\n\nexport function sessionControlEnvelopeFits(id: string, data: unknown, type: 'request' | 'response', _operation?: SessionControlOperation): boolean {\n return bytes(JSON.stringify({ type, id, data })) <= APPLICATION_RPC_MAX_BYTES;\n}\n\nexport function parseSessionControlTarget(value: unknown): SessionControlTarget {\n if (!object(value) || !keys(value, ['version', 'agent_id', 'channel_id', 'binding_id', 'native_session_id', 'connection_generation', 'capabilities'], ['input_operations'])\n || value.version !== SESSION_CONTROL_VERSION || !id(value.agent_id) || !id(value.channel_id) || !id(value.binding_id) || !id(value.native_session_id)\n || !id(value.connection_generation) || value.input_operations !== undefined && (!Array.isArray(value.input_operations) || value.input_operations.length > 3 || new Set(value.input_operations).size !== value.input_operations.length || !value.input_operations.every(item => item === 'start_turn' || item === 'steer' || item === 'next_turn')) || !validSessionCapabilities(value.capabilities) || bytes(JSON.stringify(value)) > SESSION_CONTROL_MAX_BYTES) throw new Error('invalid_session_control_target');\n return value as unknown as SessionControlTarget;\n}\n\nexport interface SessionDescriptionRequest {\n action: 'describe_session';\n version: 1;\n agent_id: string;\n channel_id: string;\n connection_generation: string;\n binding_id?: string;\n native_session_id?: string;\n}\n\nexport function parseSessionDescriptionRequest(value: unknown): SessionDescriptionRequest {\n if (!object(value) || !keys(value, ['action', 'version', 'agent_id', 'channel_id', 'connection_generation'], ['binding_id', 'native_session_id'])\n || value.action !== 'describe_session' || value.version !== 1 || !id(value.agent_id) || !id(value.channel_id) || !id(value.connection_generation)\n || value.binding_id !== undefined && !id(value.binding_id) || value.native_session_id !== undefined && !id(value.native_session_id) || bytes(JSON.stringify(value)) > SESSION_CONTROL_MAX_BYTES) throw new Error('invalid_session_description_request');\n return value as unknown as SessionDescriptionRequest;\n}\n", "import { APPLICATION_RPC_MAX_BYTES } from './application-request.js';\nimport { parseSessionControlTarget } from './bpp/session-control.js';\nimport type { SessionControlTarget } from './session-control-types.js';\n\nexport type SessionManagementAction = 'discover_sessions' | 'create_session' | 'open_session';\nexport interface SessionManagementRoute {\n agent_id: string;\n channel_id: string;\n connection_generation: string;\n}\nexport type SessionOpenTarget = 'native' | 'channel_default';\nexport interface SessionManagementService extends SessionManagementRoute, SessionManagementAvailability {\n version: 1;\n}\nexport interface SessionManagementDescriptionRequest extends SessionManagementRoute {\n action: 'describe_session_management';\n actor_id: string;\n deadline_at: number;\n}\nexport interface SessionManagementAvailability {\n operations: SessionManagementAction[];\n /** Omission preserves native-only opening for existing endpoints. */\n open_targets?: SessionOpenTarget[];\n}\nexport interface SessionDiscoveryInput {\n connection_generation: string;\n workspace_path?: string;\n cursor?: string;\n limit?: number;\n}\nexport type SessionOpenSelector = { native_session_id: string; target?: never }\n | { target: 'channel_default'; native_session_id?: never };\nexport type SessionMutationInput = { connection_generation: string; operation_id: string } & (\n | { native_session_id?: never; target?: never }\n | SessionOpenSelector\n);\ninterface SessionManagementAuthority extends SessionManagementRoute { actor_id: string; deadline_at: number }\nexport interface SessionDiscoveryRequest extends SessionManagementAuthority {\n action: 'discover_sessions';\n workspace_path?: string;\n cursor?: string;\n limit: number;\n}\nexport type SessionMutationExpectation = SessionManagementRoute & ({ action: 'create_session'; operation_id: string }\n | ({ action: 'open_session'; operation_id: string } & SessionOpenSelector));\nexport type SessionMutationRequest = SessionManagementAuthority & SessionMutationExpectation;\nexport type SessionManagementRequest = SessionDiscoveryRequest | SessionMutationRequest;\nexport interface NativeSessionCandidate {\n native_session_id: string;\n title?: string;\n workspace_path?: string;\n updated_at?: string;\n state?: 'running' | 'idle' | 'saved' | 'unknown';\n}\nexport type NativeSessionDirectory = SessionManagementRoute & { sessions: NativeSessionCandidate[] } & (\n | { complete: true; next_cursor?: never; limitation?: never }\n | { complete: false; next_cursor: string; limitation?: never }\n | { complete: false; next_cursor?: never; limitation: 'source_limit' | 'capacity_limit' | 'source_incomplete' }\n);\nexport type SessionManagementReceipt = SessionManagementRoute & { operation_id: string } & (\n | { status: 'confirmed'; target: SessionControlTarget; workspace_path: string }\n | { status: 'rejected' | 'unsupported'; reason: string }\n | { status: 'unconfirmed'; reason: string; native_session_id?: string }\n);\n\nconst routeFields = ['agent_id', 'channel_id', 'connection_generation'] as const;\nconst actions = ['discover_sessions', 'create_session', 'open_session'] as const;\nconst object = (value: unknown): value is Record<string, unknown> => !!value && typeof value === 'object' && !Array.isArray(value);\nconst id = (value: unknown): value is string => typeof value === 'string' && /^[A-Za-z0-9_:.@/-]{1,512}$/.test(value);\nconst text = (value: unknown, max: number): value is string => typeof value === 'string' && value.length > 0 && value.length <= max && !value.includes('\\0');\nconst keys = (value: Record<string, unknown>, required: readonly string[], optional: readonly string[] = []) => required.every(key => Object.hasOwn(value, key)) && Object.keys(value).every(key => required.includes(key) || optional.includes(key));\nconst fits = (value: unknown) => new TextEncoder().encode(JSON.stringify(value)).length <= APPLICATION_RPC_MAX_BYTES - 1024;\nconst routeMatches = (value: Record<string, unknown>, expected?: SessionManagementRoute) => routeFields.every(field => id(value[field]) && (!expected || value[field] === expected[field]));\n\nexport function isSessionManagementAction(value: unknown): value is SessionManagementAction {\n return typeof value === 'string' && (actions as readonly string[]).includes(value);\n}\n\nexport function parseSessionManagementAvailability(value: unknown): SessionManagementAvailability {\n if (!object(value) || !keys(value, ['operations'], ['open_targets']) || !Array.isArray(value.operations) || value.operations.length > 3\n || new Set(value.operations).size !== value.operations.length || !value.operations.every(isSessionManagementAction)\n || Object.hasOwn(value, 'open_targets') && (!value.operations.includes('open_session') || !Array.isArray(value.open_targets)\n || value.open_targets.length < 1 || value.open_targets.length > 2 || new Set(value.open_targets).size !== value.open_targets.length\n || !value.open_targets.every(target => target === 'native' || target === 'channel_default'))) throw new Error('invalid_session_management_service');\n return value as unknown as SessionManagementAvailability;\n}\n\nexport function parseSessionManagementService(value: unknown, expected?: SessionManagementRoute): SessionManagementService {\n if (!object(value) || !keys(value, [...routeFields, 'version', 'operations'], ['open_targets']) || value.version !== 1 || !routeMatches(value, expected)) throw new Error('invalid_session_management_service');\n parseSessionManagementAvailability({ operations: value.operations, ...(Object.hasOwn(value, 'open_targets') ? { open_targets: value.open_targets } : {}) });\n return value as unknown as SessionManagementService;\n}\n\nexport function parseSessionManagementInput(action: SessionManagementAction, value: unknown): SessionDiscoveryInput | SessionMutationInput {\n const defaultTarget = action === 'open_session' && object(value) && value.target === 'channel_default';\n const required = action === 'discover_sessions' ? ['connection_generation'] : action === 'create_session' ? ['connection_generation', 'operation_id']\n : ['connection_generation', 'operation_id', defaultTarget ? 'target' : 'native_session_id'];\n if (!object(value) || !keys(value, required, action === 'discover_sessions' ? ['workspace_path', 'cursor', 'limit'] : []) || !id(value.connection_generation)\n || action !== 'discover_sessions' && !id(value.operation_id) || action === 'open_session' && !defaultTarget && !id(value.native_session_id)\n || Object.hasOwn(value, 'workspace_path') && !text(value.workspace_path, 4096) || Object.hasOwn(value, 'cursor') && !text(value.cursor, 4096)\n || Object.hasOwn(value, 'limit') && (!Number.isInteger(value.limit) || (value.limit as number) < 1 || (value.limit as number) > 64)) throw new Error('invalid_session_management_request');\n return { ...value, ...(action === 'discover_sessions' ? { limit: value.limit ?? 30 } : {}) } as unknown as SessionDiscoveryInput | SessionMutationInput;\n}\n\nexport function parseSessionManagementRequest(value: unknown): SessionManagementRequest {\n if (!object(value) || !isSessionManagementAction(value.action) || !routeMatches(value) || !id(value.actor_id)\n || !Number.isSafeInteger(value.deadline_at) || (value.deadline_at as number) <= 0) throw new Error('invalid_session_management_request');\n const { action, agent_id, channel_id, actor_id, deadline_at, ...input } = value;\n const parsed = parseSessionManagementInput(action, input);\n return { action, agent_id, channel_id, actor_id, deadline_at, ...parsed } as SessionManagementRequest;\n}\n\nexport function parseNativeSessionDirectory(value: unknown, expected?: SessionManagementRoute & { limit?: number }): NativeSessionDirectory {\n const fail = () => { throw new Error('invalid_native_session_directory'); };\n if (!object(value) || !keys(value, [...routeFields, 'sessions', 'complete'], ['next_cursor', 'limitation']) || !routeMatches(value, expected)\n || !Array.isArray(value.sessions) || value.sessions.length > (expected?.limit ?? 64) || !fits(value)) return fail();\n if (value.complete === true) {\n if (Object.hasOwn(value, 'next_cursor') || Object.hasOwn(value, 'limitation')) return fail();\n } else if (value.complete === false) {\n if (Object.hasOwn(value, 'next_cursor') ? !text(value.next_cursor, 4096) || Object.hasOwn(value, 'limitation')\n : !['source_limit', 'capacity_limit', 'source_incomplete'].includes(value.limitation as string)) return fail();\n } else return fail();\n const identities = new Set<string>();\n for (const entry of value.sessions) {\n if (!object(entry) || !keys(entry, ['native_session_id'], ['title', 'workspace_path', 'updated_at', 'state']) || !id(entry.native_session_id) || identities.has(entry.native_session_id)\n || Object.hasOwn(entry, 'title') && !text(entry.title, 512) || Object.hasOwn(entry, 'workspace_path') && !text(entry.workspace_path, 4096)\n || Object.hasOwn(entry, 'updated_at') && (typeof entry.updated_at !== 'string' || !/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z$/.test(entry.updated_at) || !Number.isFinite(Date.parse(entry.updated_at)))\n || Object.hasOwn(entry, 'state') && !['running', 'idle', 'saved', 'unknown'].includes(entry.state as string)) return fail();\n identities.add(entry.native_session_id);\n }\n return value as unknown as NativeSessionDirectory;\n}\n\nexport function parseSessionManagementReceipt(value: unknown, expected?: SessionMutationExpectation): SessionManagementReceipt {\n const fail = () => { throw new Error('invalid_session_management_receipt'); };\n if (!object(value) || !routeMatches(value, expected) || !id(value.operation_id) || expected && value.operation_id !== expected.operation_id || !fits(value)) return fail();\n const required = [...routeFields, 'operation_id', 'status'];\n if (value.status === 'confirmed') {\n if (!keys(value, [...required, 'target', 'workspace_path']) || !text(value.workspace_path, 4096)) return fail();\n let target: SessionControlTarget;\n try { target = parseSessionControlTarget(value.target); } catch { return fail(); }\n if (!routeFields.every(field => target[field] === value[field]) || expected?.action === 'open_session' && expected.target !== 'channel_default' && target.native_session_id !== expected.native_session_id) return fail();\n } else if (['rejected', 'unsupported', 'unconfirmed'].includes(value.status as string)) {\n if (!keys(value, [...required, 'reason'], value.status === 'unconfirmed' ? ['native_session_id'] : []) || !id(value.reason)\n || Object.hasOwn(value, 'native_session_id') && (!id(value.native_session_id) || expected?.action === 'open_session' && expected.target !== 'channel_default' && value.native_session_id !== expected.native_session_id)) return fail();\n } else return fail();\n return value as unknown as SessionManagementReceipt;\n}\n\nexport function sessionManagementReceipt(request: SessionMutationRequest, status: 'rejected' | 'unsupported' | 'unconfirmed', reason: string): SessionManagementReceipt {\n return { agent_id: request.agent_id, channel_id: request.channel_id, connection_generation: request.connection_generation, operation_id: request.operation_id, status, reason };\n}\n", "export async function beforeDeadline<T>(work: Promise<T>, deadline: number, signal: AbortSignal): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n let abort: (() => void) | undefined;\n try {\n return await Promise.race([work, new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error('native_confirmation_timeout'));\n if (signal.aborted) { abort(); return; }\n signal.addEventListener('abort', abort, { once: true });\n timer = setTimeout(abort, Math.max(0, deadline - Date.now() - 25));\n })]);\n } finally {\n if (timer) clearTimeout(timer);\n if (abort) signal.removeEventListener('abort', abort);\n }\n}\n", "import { sessionManagementReceipt, type SessionManagementReceipt, type SessionMutationRequest } from '../session-management.js';\n\n/** A socket retains every reserved mutation, including uncertainty, without eviction. */\nexport class SessionManagementReceipts {\n private readonly entries = new Map<string, { payload: string; response: SessionManagementReceipt; settled: boolean }>();\n\n lookup(request: SessionMutationRequest): SessionManagementReceipt | undefined {\n const key = JSON.stringify([request.actor_id, request.channel_id, request.connection_generation, request.operation_id]);\n const payload = JSON.stringify([request.agent_id, request.action, request.action === 'open_session' ? (request.target === 'channel_default' ? ['channel_default'] : ['native', request.native_session_id]) : null]);\n const existing = this.entries.get(key);\n return existing ? structuredClone(existing.payload === payload ? existing.response : sessionManagementReceipt(request, 'rejected', 'session_management_operation_conflict')) : undefined;\n }\n\n reserve(request: SessionMutationRequest): { execute: boolean; response: SessionManagementReceipt; complete(response: SessionManagementReceipt): void } {\n const key = JSON.stringify([request.actor_id, request.channel_id, request.connection_generation, request.operation_id]);\n const payload = JSON.stringify([request.agent_id, request.action, request.action === 'open_session' ? (request.target === 'channel_default' ? ['channel_default'] : ['native', request.native_session_id]) : null]);\n const existing = this.lookup(request);\n const refused = (response: SessionManagementReceipt) => ({ execute: false, response: structuredClone(response), complete: () => {} });\n if (existing) return refused(existing);\n if (this.entries.size >= 128) return refused(sessionManagementReceipt(request, 'rejected', 'session_management_capacity_exhausted'));\n const entry = { payload, settled: false, response: sessionManagementReceipt(request, 'unconfirmed', 'operation_pending') };\n this.entries.set(key, entry);\n return { execute: true, response: structuredClone(entry.response), complete: response => {\n if (!entry.settled) { entry.response = structuredClone(response); entry.settled = true; }\n } };\n }\n}\n", "import type { ApplicationRequestContext } from '../application-request.js';\nimport type { ServerRequestContext, ServerRequestHandler } from '../types.js';\nimport { parseNativeSessionDirectory, parseSessionManagementAvailability, parseSessionManagementInput, parseSessionManagementReceipt, parseSessionManagementRequest, sessionManagementReceipt,\n type SessionManagementAction, type SessionManagementService } from '../session-management.js';\nimport type { ApplicationHandlerOptions } from './application-handler.js';\nimport { beforeDeadline } from './application-deadline.js';\nimport { SessionManagementReceipts } from './session-management-receipts.js';\nimport type { SessionControlReceipts } from './session-control-receipts.js';\nimport { sessionControlEnvelopeFits } from './session-control.js';\n\n// The existing control store has exactly the originating socket's lifetime.\nconst receiptsBySocket = new WeakMap<SessionControlReceipts, SessionManagementReceipts>();\nconst canRead = (trusted: ApplicationRequestContext) => trusted.actor_role === 'member' && trusted.is_agent_owner;\n\nexport async function describeSessionManagement(trusted: ApplicationRequestContext, handler: ServerRequestHandler, context: ServerRequestContext): Promise<SessionManagementService | undefined> {\n if (!canRead(trusted)) return undefined;\n const request = { action: 'describe_session_management', agent_id: trusted.agent_id, channel_id: trusted.channel_id,\n connection_generation: trusted.connection_generation, actor_id: trusted.actor_id, deadline_at: trusted.deadline_at };\n const available = parseSessionManagementAvailability(await beforeDeadline(Promise.resolve().then(() => handler(request.action, request, context)), trusted.deadline_at, context.signal));\n if (context.signal.aborted || context.isConnectionCurrent?.() === false || Date.now() >= trusted.deadline_at) throw new Error('application_request_expired');\n const operations = available.operations.filter(action => action === 'discover_sessions' || trusted.channel_writable);\n return operations.length ? { version: 1, agent_id: trusted.agent_id, channel_id: trusted.channel_id, connection_generation: trusted.connection_generation, operations,\n ...(operations.includes('open_session') && available.open_targets ? { open_targets: available.open_targets } : {}) } : undefined;\n}\n\nexport async function handleSessionManagement(action: SessionManagementAction, input: unknown, options: ApplicationHandlerOptions, current: () => void): Promise<unknown> {\n const { trusted, handler, context } = options;\n if (!canRead(trusted) || action !== 'discover_sessions' && !trusted.channel_writable) throw new Error('application_management_forbidden');\n const parsed = parseSessionManagementInput(action, input);\n if (parsed.connection_generation !== trusted.connection_generation) throw new Error('stale_session_binding');\n current();\n const request = parseSessionManagementRequest({ ...parsed, action, agent_id: trusted.agent_id, channel_id: trusted.channel_id, actor_id: trusted.actor_id, deadline_at: trusted.deadline_at });\n let receipts = receiptsBySocket.get(options.receipts);\n if (!receipts) { receipts = new SessionManagementReceipts(); receiptsBySocket.set(options.receipts, receipts); }\n if (request.action !== 'discover_sessions') {\n const saved = receipts.lookup(request);\n if (saved) return saved;\n }\n const service = await describeSessionManagement(trusted, handler, context);\n current();\n if (!service?.operations.includes(action) || request.action === 'open_session'\n && !(service.open_targets ?? ['native']).includes(request.target === 'channel_default' ? 'channel_default' : 'native')) throw new Error('application_operation_unsupported');\n if (request.action === 'discover_sessions') {\n const result = await beforeDeadline(Promise.resolve().then(() => { current(); return handler(action, request, context); }), trusted.deadline_at, context.signal);\n current();\n return parseNativeSessionDirectory(result, request);\n }\n const reservation = receipts.reserve(request);\n if (!reservation.execute) return reservation.response;\n let dispatched = false;\n let result;\n try {\n const native = Promise.resolve().then(() => { current(); dispatched = true; return handler(action, request, context); });\n const value = await beforeDeadline(native, trusted.deadline_at, context.signal);\n current();\n result = parseSessionManagementReceipt(value, request);\n if (options.requestId && !sessionControlEnvelopeFits(options.requestId, result, 'response')) throw new Error('session_management_response_too_large');\n } catch (error) {\n const reason = error instanceof Error && ['application_request_expired', 'native_confirmation_timeout', 'invalid_session_management_receipt', 'session_management_response_too_large'].includes(error.message)\n ? error.message : 'session_management_handler_failed';\n result = sessionManagementReceipt(request, dispatched ? 'unconfirmed' : 'rejected', reason);\n }\n reservation.complete(result);\n return result;\n}\n", "import type { AgentCapabilities } from '@borgee/agent-provider-sdk';\nimport type { ServerRequestContext, ServerRequestHandler } from './types.js';\nimport { parseSessionDescriptionRequest, parseSessionControlTarget, validSessionControlOperation, type SessionDescriptionRequest, type SessionControlTarget, type SessionControlOperation } from './bpp/session-control.js';\n\nexport type SessionMessageOperation = { kind: 'start_turn' } | Extract<SessionControlOperation, { kind: 'send_input' | 'execute_command' }>;\nexport interface SessionDescriptionQuery extends SessionDescriptionRequest {\n operation?: SessionMessageOperation;\n can_control?: boolean;\n include_input_operations?: boolean;\n}\nexport interface SessionDescriptionOptions {\n agentId: string;\n sessionRelations?: boolean;\n inputOperations: readonly ('start_turn' | 'steer' | 'next_turn')[];\n}\n\nexport function parseSessionDescriptionQuery(value: unknown): SessionDescriptionQuery {\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('invalid_session_description_request');\n const { native_session_id, operation, can_control, include_input_operations, ...description } = value as Record<string, unknown>;\n const request = parseSessionDescriptionRequest(description);\n if (native_session_id !== undefined && (typeof native_session_id !== 'string' || !/^[A-Za-z0-9_:.@/-]{1,512}$/.test(native_session_id))\n || can_control !== undefined && typeof can_control !== 'boolean' || include_input_operations !== undefined && typeof include_input_operations !== 'boolean') throw new Error('invalid_session_description_request');\n if (operation !== undefined) {\n const start = !!operation && typeof operation === 'object' && !Array.isArray(operation)\n && (operation as Record<string, unknown>).kind === 'start_turn' && Object.keys(operation).length === 1;\n if (!start && (!validSessionControlOperation(operation) || !['send_input', 'execute_command'].includes(operation.kind))\n || request.binding_id !== undefined && native_session_id === undefined || native_session_id !== undefined && request.binding_id === undefined) throw new Error('invalid_session_message_operation');\n }\n return value as SessionDescriptionQuery;\n}\n\n/** The registry captures the default once; subsequent dispatch always carries that exact target. */\nexport async function resolveSessionDescription(query: SessionDescriptionQuery, handler: ServerRequestHandler, context: ServerRequestContext, options: SessionDescriptionOptions): Promise<SessionControlTarget> {\n const current = () => !context.signal.aborted && (context.isConnectionCurrent?.() ?? true);\n if (!current() || query.agent_id !== options.agentId) throw new Error('stale_session_binding');\n if (query.native_session_id !== undefined && query.binding_id === undefined && !options.sessionRelations) throw new Error('application_operation_unsupported');\n const { operation, can_control, include_input_operations, ...description } = query;\n const { native_session_id } = query;\n const raw = await handler('describe_session', description, context);\n if (!current() || raw == null) throw new Error('stale_session_binding');\n const target = parseSessionControlTarget(raw);\n if (target.agent_id !== query.agent_id || target.channel_id !== query.channel_id || target.connection_generation !== query.connection_generation\n || query.binding_id !== undefined && target.binding_id !== query.binding_id || native_session_id !== undefined && target.native_session_id !== native_session_id) throw new Error('stale_session_binding');\n const capabilities = target.capabilities as AgentCapabilities;\n const inputOperations = options.inputOperations.filter(input => (target.input_operations ?? []).includes(input)\n && (input === 'start_turn' ? capabilities.sendMessage : input === 'steer' ? capabilities.steer : capabilities.queueMessage)\n && (can_control !== false || input === 'start_turn'));\n if (operation) {\n const supported = operation.kind === 'execute_command' ? can_control !== false && capabilities.commands\n : inputOperations.includes(operation.kind === 'start_turn' ? 'start_turn' : operation.delivery);\n if (!supported) throw new Error('session_message_unsupported');\n }\n const { input_operations: _inputs, ...identity } = target;\n return { ...identity, capabilities: structuredClone(capabilities), ...(include_input_operations !== false && inputOperations.length ? { input_operations: inputOperations } : {}) };\n}\n", "import { validTimelineReplacement, NORMALIZED_TIMELINE_MAX_BYTES } from './session-observation.js';\nimport { validSessionCapabilities } from './normalized-session-capabilities.js';\nimport { hash } from 'fast-sha256';\nimport {\n NORMALIZED_EVENT_MAX_BYTES, NORMALIZED_FRAGMENT_BYTES, NORMALIZED_FRAME_MAX_BYTES,\n type NormalizedTransportRoute, type NormalizedTransportFrame, type NormalizedFragmentFrame,\n type NormalizedEncodingResult, type NormalizedFragmentCapability, type NormalizedTransportFailureReason,\n} from './normalized-transport-types.js';\n\nconst encoder = new TextEncoder();\nexport const utf8Bytes = (value: string): Uint8Array => encoder.encode(value);\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\nconst boundedString = (value: unknown, limit: number): value is string =>\n typeof value === 'string' && value.length > 0 && utf8Bytes(value).length <= limit;\n\nexport function validNormalizedRoute(value: unknown): value is NormalizedTransportRoute {\n if (!isRecord(value)) return false;\n return boundedString(value.channel_id, 256) && (boundedString(value.task_id, 256) || value.task_id === undefined && (value.session_control_binding_id !== undefined || value.shape === 'normalized_timeline_replacement' || value.logical_shape === 'normalized_timeline_replacement'))\n && boundedString(value.protocol_version, 32)\n && (value.timeline_epoch === undefined || boundedString(value.timeline_epoch, 512))\n && (value.logical_shape === undefined || value.logical_shape === 'normalized' || value.logical_shape === 'normalized_timeline_replacement')\n && (value.session_capabilities === undefined || validSessionCapabilities(value.session_capabilities))\n && (value.session_control_binding_id === undefined || typeof value.session_control_binding_id === 'string' && /^[A-Za-z0-9_:.@/-]{1,512}$/.test(value.session_control_binding_id))\n && (value.session_control_default === undefined || typeof value.session_control_default === 'boolean')\n && Number.isSafeInteger(value.sequence) && (value.sequence as number) > 0\n && (value.agent_id === undefined || boundedString(value.agent_id, 512))\n && (value.occurred_at === undefined || (Number.isSafeInteger(value.occurred_at)\n && (value.occurred_at as number) >= 0 && (value.occurred_at as number) <= 8640000000000000));\n}\n\nexport function normalizedRoute(value: NormalizedTransportRoute): NormalizedTransportRoute {\n return {\n channel_id: value.channel_id, task_id: value.task_id, protocol_version: value.protocol_version,\n sequence: value.sequence,\n ...(value.session_control_default === undefined ? {} : { session_control_default: value.session_control_default }),\n ...(value.timeline_epoch === undefined ? {} : { timeline_epoch: value.timeline_epoch }),\n ...(value.logical_shape === undefined ? {} : { logical_shape: value.logical_shape }),\n ...(value.session_control_binding_id === undefined ? {} : { session_control_binding_id: value.session_control_binding_id }),\n ...(value.session_capabilities === undefined ? {} : { session_capabilities: structuredClone(value.session_capabilities) }),\n ...(value.agent_id === undefined ? {} : { agent_id: value.agent_id }),\n ...(value.occurred_at === undefined ? {} : { occurred_at: value.occurred_at }),\n };\n}\n\nexport function sha256Hex(bytes: Uint8Array): string {\n return Array.from(hash(bytes), value => value.toString(16).padStart(2, '0')).join('');\n}\n\nexport function encodeBase64(bytes: Uint8Array): string {\n let binary = '';\n for (const byte of bytes) binary += String.fromCharCode(byte);\n return btoa(binary);\n}\n\nexport function decodeBase64(value: string): Uint8Array | undefined {\n if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)) return undefined;\n try {\n const bytes = Uint8Array.from(atob(value), char => char.charCodeAt(0));\n return encodeBase64(bytes) === value ? bytes : undefined;\n } catch { return undefined; }\n}\n\nexport const validEventId = (value: unknown): value is string =>\n typeof value === 'string' && /^[\\x21-\\x7e]{1,128}$/.test(value);\n\nexport function parseNormalizedFragmentCapability(version: unknown, maxEventBytes: unknown): NormalizedFragmentCapability | undefined {\n return version === '1' && maxEventBytes === '131072'\n ? { version: 1, maxEventBytes: NORMALIZED_EVENT_MAX_BYTES } : undefined;\n}\n\n/** Callers validate and redact the public event before encoding its exact bytes. */\nexport function encodeNormalizedTransport(frame: NormalizedTransportFrame, options: {\n capability?: NormalizedFragmentCapability; eventId: string; frameMaxBytes?: number;\n frameByteLength?: (frame: NormalizedTransportFrame | NormalizedFragmentFrame) => number;\n}): NormalizedEncodingResult {\n if (!validNormalizedRoute(frame) || frame.type !== 'agent_activity' || !['normalized', 'normalized_timeline_replacement'].includes(frame.shape))\n return { status: 'rejected', reason: 'invalid_route' };\n const replacement = frame.shape === 'normalized_timeline_replacement';\n if (frame.session_control_default && (replacement || !frame.session_control_binding_id || !isRecord(frame.event) || !['runtime_updated', 'agent_snapshot'].includes(frame.event.type as string))) return { status: 'rejected', reason: 'invalid_event' };\n if (replacement && (!validTimelineReplacement(frame.event, frame.protocol_version) || frame.task_id !== undefined || !frame.timeline_epoch)) return { status: 'rejected', reason: 'invalid_event' };\n if (!isRecord(frame.event) || (frame.session_capabilities !== undefined && frame.event.type !== 'runtime_updated')) return { status: 'rejected', reason: 'invalid_event' };\n let eventJson: string;\n try {\n eventJson = JSON.stringify(frame.event);\n if (!isRecord(JSON.parse(eventJson))) return { status: 'rejected', reason: 'invalid_event' };\n } catch { return { status: 'rejected', reason: 'invalid_event' }; }\n const bytes = utf8Bytes(eventJson);\n if (bytes.length > (replacement ? NORMALIZED_TIMELINE_MAX_BYTES : NORMALIZED_EVENT_MAX_BYTES)) return { status: 'rejected', reason: 'event_limit' };\n const route = normalizedRoute(frame);\n const normal: NormalizedTransportFrame = { type: 'agent_activity', shape: frame.shape, ...route, event: JSON.parse(eventJson) };\n const frameByteLength = options.frameByteLength ?? (value => utf8Bytes(JSON.stringify(value)).length);\n const frameMaxBytes = options.frameMaxBytes ?? NORMALIZED_FRAME_MAX_BYTES;\n if (frameByteLength(normal) <= frameMaxBytes)\n return { status: 'encoded', frames: [normal], eventBytes: bytes.length, fragmented: false };\n if (options.capability?.version !== 1 || options.capability.maxEventBytes !== NORMALIZED_EVENT_MAX_BYTES)\n return { status: 'rejected', reason: 'fragmentation_unavailable' };\n if (!validEventId(options.eventId)) return { status: 'rejected', reason: 'invalid_fragment' };\n const partCount = Math.ceil(bytes.length / NORMALIZED_FRAGMENT_BYTES);\n const digest = sha256Hex(bytes);\n const frames: NormalizedFragmentFrame[] = [];\n for (let index = 0; index < partCount; index++) {\n const fragment: NormalizedFragmentFrame = {\n type: 'agent_activity', shape: 'normalized_fragment', ...route, ...(replacement ? { logical_shape: frame.shape } : {}), fragment_version: 1,\n event_id: options.eventId, part_index: index, part_count: partCount, total_bytes: bytes.length,\n sha256: digest, data_base64: encodeBase64(bytes.subarray(index * NORMALIZED_FRAGMENT_BYTES, (index + 1) * NORMALIZED_FRAGMENT_BYTES)),\n };\n if (frameByteLength(fragment) > frameMaxBytes)\n return { status: 'rejected', reason: 'frame_limit' };\n frames.push(fragment);\n }\n return { status: 'encoded', frames, eventBytes: bytes.length, fragmented: true };\n}\n\n/** An observational transport failure must not manufacture a native turn outcome. */\nexport function normalizedTransportError(frame: NormalizedTransportFrame, failure: {\n reason: NormalizedTransportFailureReason; eventId?: string; requestId?: string;\n}): NormalizedTransportFrame {\n const provider = isRecord(frame.event) && boundedString(frame.event.providerId, 128) ? frame.event.providerId : 'unknown';\n const details = [failure.eventId, failure.requestId].filter((value): value is string => typeof value === 'string')\n .map(value => value.slice(0, 128)).join(', ');\n const { session_capabilities: _capabilities, session_control_default: _default, ...route } = normalizedRoute(frame);\n return {\n type: 'agent_activity', shape: 'normalized', ...route,\n event: { type: 'timeline', providerId: provider, item: {\n type: 'error', message: `Normalized event unavailable: ${failure.reason}.${details ? ` (${details})` : ''}`,\n }, resources: [] },\n };\n}\n", "import type { AgentCapabilities } from '@borgee/agent-provider-sdk';\n\n/** Transport limits apply to UTF-8 JSON bytes, independently of event semantics. */\nexport const NORMALIZED_FRAME_MAX_BYTES = 32768;\nexport const NORMALIZED_EVENT_MAX_BYTES = 131072;\nexport const NORMALIZED_FRAGMENT_BYTES = 16384;\nexport const NORMALIZED_FRAGMENT_VERSION = 1;\nexport const NORMALIZED_FRAGMENT_TTL_MS = 10000;\n\nexport interface NormalizedTransportRoute {\n channel_id: string;\n task_id?: string;\n protocol_version: string;\n sequence: number;\n agent_id?: string;\n occurred_at?: number;\n session_capabilities?: AgentCapabilities;\n session_control_binding_id?: string;\n session_control_default?: boolean;\n timeline_epoch?: string;\n logical_shape?: 'normalized' | 'normalized_timeline_replacement';\n}\n\nexport interface NormalizedTransportFrame extends NormalizedTransportRoute {\n type: 'agent_activity';\n shape: 'normalized' | 'normalized_timeline_replacement';\n event: unknown;\n}\n\nexport interface NormalizedFragmentFrame extends NormalizedTransportRoute {\n type: 'agent_activity';\n shape: 'normalized_fragment';\n fragment_version: 1;\n event_id: string;\n part_index: number;\n part_count: number;\n total_bytes: number;\n sha256: string;\n data_base64: string;\n}\n\nexport interface NormalizedFragmentCapability { version: 1; maxEventBytes: 131072 }\nexport type NormalizedTransportFailureReason =\n | 'invalid_route' | 'invalid_event' | 'event_limit' | 'frame_limit'\n | 'fragmentation_unavailable' | 'invalid_fragment' | 'missing_first_part'\n | 'fragment_conflict' | 'digest_mismatch' | 'invalid_utf8' | 'invalid_json'\n | 'interrupted' | 'expired' | 'assembly_capacity' | 'queue_capacity';\n\nexport interface NormalizedTransportFailure extends Partial<NormalizedTransportRoute> {\n reason: NormalizedTransportFailureReason;\n event_id?: string;\n}\n\nexport type NormalizedEncodingResult = {\n status: 'encoded'; frames: Array<NormalizedTransportFrame | NormalizedFragmentFrame>;\n eventBytes: number; fragmented: boolean;\n} | { status: 'rejected'; reason: NormalizedTransportFailureReason };\n\nexport type NormalizedAssemblyResult = {\n status: 'complete'; frame: NormalizedTransportFrame; eventJson: string; following?: NormalizedTransportFrame[];\n failures: NormalizedTransportFailure[];\n} | { status: 'pending' | 'ignored' | 'rejected'; failures: NormalizedTransportFailure[] };\n\nexport interface NormalizedAssemblerOptions {\n now?: () => number;\n maxAssemblies?: number;\n maxBytes?: number;\n ttlMs?: number;\n}\n", "import { sha256Hex, utf8Bytes } from './normalized-transport-codec.js';\nimport { isPublicAgentTimelineEvent, validateNormalizedEventVersion, isSupportedNormalizedVersion, PROTOCOL_VERSION } from '@borgee/agent-remote-protocol';\nimport type { SessionAvailability, SessionObservationRequest, SessionObservationInput, SessionObservationResult, TimelineReplacement, TimelineRecoveryResult } from '../session-observation-types.js';\nexport type { SessionAvailability, SessionObservationRequest, SessionObservationInput, SessionObservationResult, TimelineReplacement, TimelineRecoveryResult } from '../session-observation-types.js';\nexport const NORMALIZED_TIMELINE_MAX_BYTES = 1024 * 1024;\nexport const NORMALIZED_TIMELINE_MAX_ITEMS = 4096;\nconst id = (value: unknown): value is string => typeof value === 'string' && /^[A-Za-z0-9_:.@/-]{1,512}$/.test(value);\nconst object = (value: unknown): value is Record<string, unknown> => value !== null && typeof value === 'object' && !Array.isArray(value);\nconst keys = (value: Record<string, unknown>, required: string[], optional: string[] = []) => required.every(key => Object.hasOwn(value, key)) && Object.keys(value).every(key => required.includes(key) || optional.includes(key));\nexport function validSessionAvailability(value: unknown): value is SessionAvailability {\n return object(value) && keys(value, ['type', 'channel_id', 'sequence', 'session_control_binding_id', 'native_session_id', 'revision', 'status'], ['agent_id', 'reason'])\n && value.type === 'normalized_session_availability' && id(value.channel_id) && id(value.session_control_binding_id) && id(value.native_session_id)\n && (value.agent_id === undefined || id(value.agent_id)) && Number.isSafeInteger(value.sequence) && (value.sequence as number) > 0\n && Number.isSafeInteger(value.revision) && (value.revision as number) > 0 && ['available', 'recovering', 'stopped'].includes(String(value.status))\n && (value.reason === undefined || typeof value.reason === 'string' && /^[a-z][a-z0-9_]{0,127}$/.test(value.reason));\n}\nexport function validTimelineReplacement(value: unknown, protocolVersion: string = PROTOCOL_VERSION): value is TimelineReplacement {\n if (!isSupportedNormalizedVersion(protocolVersion) || !object(value) || !keys(value, ['replacement_id', 'previous_epoch', 'epoch', 'observations']) || !id(value.replacement_id) || !id(value.previous_epoch)\n || !id(value.epoch) || value.epoch === value.previous_epoch || !Array.isArray(value.observations) || value.observations.length > NORMALIZED_TIMELINE_MAX_ITEMS) return false;\n const seen = new Set<string>();\n for (const row of value.observations) {\n if (!object(row) || !keys(row, ['source_key', 'occurred_at', 'event'], ['native_revision', 'task_id']) || typeof row.source_key !== 'string' || !row.source_key || new TextEncoder().encode(row.source_key).length > 1024 || seen.has(row.source_key)\n || !Number.isSafeInteger(row.occurred_at) || (row.occurred_at as number) < 0 || (row.occurred_at as number) > 8_640_000_000_000_000\n || row.native_revision !== undefined && (!Number.isSafeInteger(row.native_revision) || (row.native_revision as number) < 0)\n || row.task_id !== undefined && !id(row.task_id) || (!isPublicAgentTimelineEvent(row.event) || !validateNormalizedEventVersion(protocolVersion, row.event))) return false;\n seen.add(row.source_key);\n }\n return new TextEncoder().encode(JSON.stringify(value)).length <= NORMALIZED_TIMELINE_MAX_BYTES;\n}\nexport function validSessionObservationInput(value: unknown): value is SessionObservationInput {\n if (!object(value) || !keys(value, ['operation_id', 'agent_id', 'channel_id', 'binding_id', 'native_session_id', 'connection_generation', 'operation'])\n || !['operation_id', 'agent_id', 'channel_id', 'binding_id', 'native_session_id', 'connection_generation'].every(key => id(value[key])) || String(value.operation_id).length > 128) return false;\n return value.operation === 'sync_timeline';\n}\nexport function parseSessionObservationRequest(value: unknown, now = Date.now()): SessionObservationRequest {\n if (!object(value) || !keys(value, ['action', 'input', 'deadline_at']) || value.action !== 'session_observation' || !validSessionObservationInput(value.input)\n || !Number.isSafeInteger(value.deadline_at) || (value.deadline_at as number) <= now || (value.deadline_at as number) > now + 30000) throw new Error('invalid_session_observation');\n return value as unknown as SessionObservationRequest;\n}\n\nexport function parseSessionObservationResult(value: unknown, input: SessionObservationInput): SessionObservationResult {\n if (!object(value) || !keys(value, ['operation_id', 'status'], ['reason', 'timeline_epoch', 'replacement_id'])\n || value.operation_id !== input.operation_id || !['confirmed', 'rejected', 'unsupported', 'unconfirmed'].includes(String(value.status))\n || value.reason !== undefined && (typeof value.reason !== 'string' || new TextEncoder().encode(value.reason).length > 1024)\n || new TextEncoder().encode(JSON.stringify(value)).length > 32768) throw new Error('invalid_session_observation_result');\n if (value.status === 'confirmed') {\n if (!id(value.timeline_epoch) || !id(value.replacement_id)) throw new Error('invalid_timeline_sync_result');\n } else if (['timeline_epoch', 'replacement_id'].some(key => Object.hasOwn(value, key))) throw new Error('unexpected_session_observation_result');\n return value as unknown as SessionObservationResult;\n}\n\nexport function timelineReplacementDigest(value: TimelineReplacement): string {\n const canonical = JSON.stringify(value, (_key, item) => item && typeof item === 'object' && !Array.isArray(item)\n ? Object.fromEntries(Object.entries(item).sort(([left], [right]) => left.localeCompare(right))) : item);\n return sha256Hex(utf8Bytes(canonical));\n}\n\nexport function validTimelineRecoveryResult(value: unknown): value is TimelineRecoveryResult {\n if (!object(value) || !keys(value, ['type', 'channel_id', 'sequence', 'timeline_epoch', 'status', 'reason'], ['agent_id', 'session_control_binding_id'])\n || value.type !== 'normalized_activity_sync_result' || !id(value.channel_id) || !id(value.timeline_epoch) || value.agent_id !== undefined && !id(value.agent_id)\n || !Number.isSafeInteger(value.sequence) || (value.sequence as number) <= 0 || !['unavailable', 'failed'].includes(String(value.status))\n || !['timeline_unavailable', 'timeline_invalid', 'timeline_capacity', 'transport_incomplete'].includes(String(value.reason))) return false;\n return id(value.session_control_binding_id);\n}\n", "export interface SessionDirectoryRequest {\n action: 'list_sessions';\n agent_id: string;\n channel_id: string;\n connection_generation: string;\n}\n\nexport interface SessionDirectoryEntry {\n binding_id: string;\n native_session_id: string;\n is_default: boolean;\n}\n\nexport interface SessionDirectoryResult {\n agent_id: string;\n channel_id: string;\n connection_generation: string;\n scope: 'registered';\n sessions: SessionDirectoryEntry[];\n complete: boolean;\n}\n\n// Two bounded identifiers per entry leave room for the complete BPP envelope.\nconst MAX_DIRECTORY_ENTRIES = 64;\nconst routeFields = ['agent_id', 'channel_id', 'connection_generation'] as const;\nconst object = (value: unknown): value is Record<string, unknown> => !!value && typeof value === 'object' && !Array.isArray(value);\nconst id = (value: unknown): value is string => typeof value === 'string' && /^[A-Za-z0-9_:.@/-]{1,512}$/.test(value);\n\nexport function parseSessionDirectoryRequest(value: unknown): SessionDirectoryRequest {\n if (!object(value) || Object.keys(value).length !== 4 || value.action !== 'list_sessions' || !routeFields.every(field => id(value[field]))) throw new Error('invalid_session_directory_request');\n return value as unknown as SessionDirectoryRequest;\n}\n\nexport function parseSessionDirectoryResult(value: unknown, expected?: Pick<SessionDirectoryRequest, typeof routeFields[number]>): SessionDirectoryResult {\n if (!object(value) || Object.keys(value).length !== 6 || value.scope !== 'registered' || typeof value.complete !== 'boolean'\n || !routeFields.every(field => id(value[field]) && (!expected || value[field] === expected[field]))\n || !Array.isArray(value.sessions) || value.sessions.length > MAX_DIRECTORY_ENTRIES) throw new Error('invalid_session_directory');\n const bindings = new Set<string>();\n let defaults = 0;\n for (const entry of value.sessions) {\n if (!object(entry) || Object.keys(entry).length !== 3 || !id(entry.binding_id) || !id(entry.native_session_id) || typeof entry.is_default !== 'boolean'\n || bindings.has(entry.binding_id) || entry.is_default && ++defaults > 1) throw new Error('invalid_session_directory');\n bindings.add(entry.binding_id);\n }\n return value as unknown as SessionDirectoryResult;\n}\n\nexport function createSessionDirectory(request: SessionDirectoryRequest, entries: Iterable<SessionDirectoryEntry>): SessionDirectoryResult {\n parseSessionDirectoryRequest(request);\n const sessions = [...entries].sort((a, b) => Number(b.is_default) - Number(a.is_default) || (a.binding_id < b.binding_id ? -1 : a.binding_id > b.binding_id ? 1 : 0));\n return parseSessionDirectoryResult({ agent_id: request.agent_id, channel_id: request.channel_id, connection_generation: request.connection_generation,\n scope: 'registered', sessions: sessions.slice(0, MAX_DIRECTORY_ENTRIES), complete: sessions.length <= MAX_DIRECTORY_ENTRIES });\n}\n", "import { beforeDeadline } from './application-deadline.js';\nimport { parseApplicationBody, type ApplicationRequestContext } from '../application-request.js';\nimport type { ServerRequestContext, ServerRequestHandler, SentMessage } from '../types.js';\nimport { parseSessionDescriptionQuery, resolveSessionDescription, type SessionDescriptionOptions } from '../session-description.js';\nimport { parseSessionControlInput, parseSessionControlRequest, parseSessionControlResponse, sessionControlEnvelopeFits, sessionControlResponse, type SessionControlRequest, type SessionControlResponse } from './session-control.js';\nimport { parseSessionObservationRequest, parseSessionObservationResult } from './session-observation.js';\nimport type { SessionControlReceipts } from './session-control-receipts.js';\nimport { parseSessionDirectoryRequest, parseSessionDirectoryResult } from '../session-directory.js';\nimport { isSessionManagementAction } from '../session-management.js';\nimport { handleSessionManagement } from './session-management-handler.js';\n\nexport interface ApplicationHandlerOptions {\n trusted: ApplicationRequestContext;\n requestId?: string;\n context: ServerRequestContext;\n handler: ServerRequestHandler;\n description: SessionDescriptionOptions;\n receipts: SessionControlReceipts;\n persist(content: string, contentType: string): Promise<SentMessage>;\n}\nconst object = (value: unknown): value is Record<string, unknown> => !!value && typeof value === 'object' && !Array.isArray(value);\nconst canControlSession = (context: ApplicationRequestContext): boolean => context.actor_role === 'member' && context.is_agent_owner && context.channel_writable;\n\nexport async function handleApplicationBody(value: unknown, options: ApplicationHandlerOptions): Promise<unknown> {\n const body = parseApplicationBody(value);\n options = { ...options, trusted: { ...options.trusted, deadline_at: Math.min(options.trusted.deadline_at, body.expires_at ?? Infinity) } };\n const { trusted, context, handler, description } = options;\n const input = body.input;\n if (['actor_id', 'actor_role', 'is_agent_owner', 'channel_writable', 'deadline_at', 'scope', 'can_control', 'request_context', 'admission'].some(key => Object.hasOwn(input, key))) throw new Error('untrusted_application_context');\n for (const field of ['agent_id', 'channel_id', 'connection_generation'] as const) {\n if (input[field] !== undefined && input[field] !== trusted[field]) throw new Error('stale_session_binding');\n }\n const current = () => { if (context.signal.aborted || context.isConnectionCurrent?.() === false || Date.now() >= trusted.deadline_at) throw new Error('application_request_expired'); };\n current();\n const scoped = { ...input, agent_id: trusted.agent_id, channel_id: trusted.channel_id, connection_generation: trusted.connection_generation };\n if (isSessionManagementAction(body.action)) return handleSessionManagement(body.action, input, options, current);\n if (body.action === 'list_sessions') {\n if (Object.keys(input).length) throw new Error('invalid_session_directory_request');\n const request = parseSessionDirectoryRequest({ ...scoped, action: 'list_sessions' });\n const result = await handler(body.action, request, context);\n current();\n return parseSessionDirectoryResult(result, request);\n }\n if (body.action === 'describe_session') {\n const query = parseSessionDescriptionQuery({ ...scoped, action: 'describe_session', version: 1, can_control: canControlSession(trusted) });\n return resolveSessionDescription(query, handler, context, description);\n }\n if (body.action === 'sync_normalized_activity') return handler(body.action, scoped, context);\n if (body.action === 'session_observation') {\n const request = parseSessionObservationRequest({ action: body.action, input: scoped, deadline_at: trusted.deadline_at });\n return parseSessionObservationResult(await handler(body.action, request, context), request.input);\n }\n if (body.action === 'session_control') return handleControl(input, options, current);\n if (!['stop_turn', 'interaction_response'].includes(body.action) || !canControlSession(trusted)) throw new Error('application_operation_unsupported');\n if (Object.hasOwn(input, 'binding_id') !== Object.hasOwn(input, 'native_session_id')) throw new Error('invalid_session_control_binding');\n const target = await resolveSessionDescription(parseSessionDescriptionQuery({ action: 'describe_session', version: 1,\n agent_id: trusted.agent_id, channel_id: trusted.channel_id, connection_generation: trusted.connection_generation,\n ...(input.binding_id === undefined ? {} : { binding_id: input.binding_id, native_session_id: input.native_session_id }),\n }), handler, context, description);\n current();\n const result = await handler(body.action, { ...scoped, binding_id: target.binding_id, native_session_id: target.native_session_id }, context);\n if (body.action === 'stop_turn' && (!object(result) || typeof result.aborted !== 'boolean')) throw new Error('invalid_stop_turn_result');\n return result;\n}\n\nasync function handleControl(value: unknown, options: ApplicationHandlerOptions, current: () => void): Promise<SessionControlResponse> {\n const { trusted, context, handler, receipts } = options;\n const input = parseSessionControlInput(value);\n const operation = input.operation;\n const mutation = operation.kind !== 'list_commands' && operation.kind !== 'list_pending_inputs';\n if (mutation && !canControlSession(trusted)) throw new Error('application_control_forbidden');\n const request: SessionControlRequest = { ...input, action: 'session_control', actor_id: trusted.actor_id,\n agent_id: trusted.agent_id, channel_id: trusted.channel_id, deadline_at: trusted.deadline_at };\n const receipt = mutation ? receipts.reserve(request) : undefined;\n if (receipt && !receipt.execute) return receipt.response;\n let result: SessionControlResponse;\n let effectStarted = false;\n try {\n if (operation.kind === 'execute_command' || operation.kind === 'send_input') {\n await resolveSessionDescription(parseSessionDescriptionQuery({ action: 'describe_session', version: 1,\n agent_id: trusted.agent_id, channel_id: trusted.channel_id, connection_generation: trusted.connection_generation,\n binding_id: input.binding_id, native_session_id: input.native_session_id, operation, can_control: canControlSession(trusted),\n }), handler, context, options.description);\n current();\n const content = operation.kind === 'execute_command' ? `/${operation.command_id}${operation.args ? ` ${operation.args}` : ''}` : operation.text;\n effectStarted = true;\n const message = await options.persist(content, operation.kind === 'execute_command' ? 'command' : 'text');\n if (!message.messageId || message.channelId !== trusted.channel_id || !Number.isSafeInteger(message.createdAt)) throw new Error('invalid_message_admission');\n request.admission = { input_message_id: message.messageId, input_created_at: message.createdAt! };\n }\n current();\n parseSessionControlRequest(request);\n const native = Promise.resolve().then(() => {\n current();\n if (mutation) effectStarted = true;\n return handler('session_control', request, context);\n });\n const value = await beforeDeadline(native, trusted.deadline_at, context.signal);\n result = parseSessionControlResponse(value, request);\n if (options.requestId && !sessionControlEnvelopeFits(options.requestId, result, 'response', operation)) throw new Error('session_control_response_too_large');\n } catch (error) {\n const reason = error instanceof Error && ['stale_session_binding', 'session_message_unsupported', 'application_request_expired', 'native_confirmation_timeout', 'session_control_response_too_large'].includes(error.message) ? error.message : 'session_control_handler_failed';\n result = sessionControlResponse(request, effectStarted ? 'unconfirmed' : 'rejected', reason);\n }\n receipt?.complete(result);\n return result;\n}\n", "import { sessionControlResponse, type SessionControlRequest, type SessionControlResponse } from './session-control.js';\n\n/** One socket retains possible effects until that socket's lifetime ends. */\nexport class SessionControlReceipts {\n private readonly entries = new Map<string, { payload: string; response: SessionControlResponse; settled: boolean }>();\n\n reserve(request: SessionControlRequest): { execute: boolean; response: SessionControlResponse; complete: (response: SessionControlResponse) => void } {\n const key = JSON.stringify([request.actor_id, request.channel_id, request.operation_id]);\n const operation = request.operation;\n const payload = JSON.stringify([request.agent_id, request.binding_id, request.native_session_id, request.connection_generation,\n ...(operation.kind === 'set_setting' ? [operation.kind, operation.setting_id, operation.value]\n : operation.kind === 'set_planning' ? [operation.kind, operation.active]\n : operation.kind === 'execute_command' ? [operation.kind, operation.command_id, operation.args]\n : operation.kind === 'send_input' ? [operation.kind, operation.delivery, operation.text, operation.delivery === 'steer' ? operation.expected_turn_id : null]\n : [operation.kind])]);\n const existing = this.entries.get(key);\n const refused = (response: SessionControlResponse) => ({ execute: false, response: structuredClone(response), complete: () => {} });\n if (existing) return refused(existing.payload === payload ? existing.response : sessionControlResponse(request, 'rejected', 'session_control_operation_conflict'));\n if (this.entries.size >= 128) return refused(sessionControlResponse(request, 'rejected', 'session_control_capacity_exhausted'));\n const entry = { payload, settled: false, response: sessionControlResponse(request, 'unconfirmed', 'operation_pending') };\n this.entries.set(key, entry);\n return { execute: true, response: structuredClone(entry.response), complete: response => { if (!entry.settled) { entry.response = structuredClone(response); entry.settled = true; } } };\n }\n}\n", "import { PROTOCOL_VERSION } from '@borgee/agent-remote-protocol';\nimport { validSessionAvailability, validTimelineRecoveryResult, type SessionAvailability, type TimelineRecoveryResult } from './session-observation.js';\nimport { encodeNormalizedTransport, isRecord, utf8Bytes } from './normalized-transport-codec.js';\nimport { NORMALIZED_FRAME_MAX_BYTES, type NormalizedEncodingResult, type NormalizedFragmentCapability, type NormalizedFragmentFrame, type NormalizedTransportFrame } from './normalized-transport-types.js';\n\nexport const NORMALIZED_APPLICATION_VERSION = 1;\nexport const NORMALIZED_APPLICATION_QUERY = 'agent_requests_version';\nexport const NORMALIZED_APPLICATION_HEADER = 'x-borgee-agent-requests-version';\n\nexport interface NormalizedApplicationFrame {\n type: 'agent_activity';\n shape: 'normalized';\n channel_id: string;\n task_id?: string;\n agent_id?: string;\n protocol_version: string;\n sequence: number;\n event: { type: 'remote_transport'; version: 1; frame: NormalizedTransportFrame | NormalizedFragmentFrame | TimelineRecoveryResult | SessionAvailability };\n}\n\nfunction applicationFrame(logical: NormalizedTransportFrame | NormalizedFragmentFrame, sequence: number): NormalizedApplicationFrame {\n return {\n type: 'agent_activity', shape: 'normalized', channel_id: logical.channel_id,\n ...(logical.task_id === undefined ? {} : { task_id: logical.task_id }),\n ...(logical.agent_id === undefined ? {} : { agent_id: logical.agent_id }),\n protocol_version: logical.protocol_version, sequence,\n event: { type: 'remote_transport', version: 1, frame: logical },\n };\n}\n\nfunction deliveryByteLength(frame: NormalizedApplicationFrame): number {\n // Go JSON fanout escapes HTML and line separators and replaces the producer identity.\n const json = JSON.stringify({ ...frame, agent_id: '<'.repeat(512) })\n .replace(/[<>&\\u2028\\u2029]/g, char => `\\\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}`);\n return utf8Bytes(json).length;\n}\n\n/** Public event sequence belongs to the application; each physical envelope has its own sequence. */\nexport function encodeNormalizedApplicationTransport(frame: NormalizedTransportFrame, options: {\n capability?: NormalizedFragmentCapability; eventId: string; nextSequence(): number;\n}): Exclude<NormalizedEncodingResult, { status: 'encoded' }> | { status: 'encoded'; frames: NormalizedApplicationFrame[]; eventBytes: number; fragmented: boolean } {\n const encoded = encodeNormalizedTransport(frame, {\n ...options,\n frameByteLength: logical => deliveryByteLength(applicationFrame(logical, Number.MAX_SAFE_INTEGER)),\n });\n if (encoded.status !== 'encoded') return encoded;\n const frames: NormalizedApplicationFrame[] = [];\n for (const logical of encoded.frames) {\n const physical = applicationFrame(logical, options.nextSequence());\n if (!Number.isSafeInteger(physical.sequence) || physical.sequence <= 0 || deliveryByteLength(physical) > NORMALIZED_FRAME_MAX_BYTES)\n return { status: 'rejected', reason: 'frame_limit' };\n frames.push(physical);\n }\n return { ...encoded, frames };\n}\n\n/** The authenticated outer route is authoritative; duplicated application routes must agree. */\nexport function unwrapNormalizedApplicationTransport(input: unknown): unknown {\n if (!isRecord(input) || input.type !== 'agent_activity' || input.shape !== 'normalized' || !isRecord(input.event) || input.event.type !== 'remote_transport') return input;\n if (typeof input.channel_id !== 'string' || !input.channel_id || utf8Bytes(input.channel_id).length > 256\n || input.task_id !== undefined && (typeof input.task_id !== 'string' || utf8Bytes(input.task_id).length > 256)\n || input.agent_id !== undefined && (typeof input.agent_id !== 'string' || !input.agent_id || utf8Bytes(input.agent_id).length > 512)\n || input.event.version !== NORMALIZED_APPLICATION_VERSION || !isRecord(input.event.frame) || !Number.isSafeInteger(input.sequence) || (input.sequence as number) <= 0) return undefined;\n const logical = input.event.frame;\n for (const key of ['channel_id', 'task_id']) {\n if ((logical[key] ?? '') !== (input[key] ?? '')) return undefined;\n }\n if (logical.agent_id !== undefined && logical.agent_id !== input.agent_id) return undefined;\n if (logical.type === 'normalized_session_availability') {\n const result = { ...logical, ...(input.agent_id === undefined ? {} : { agent_id: input.agent_id }) };\n return (input.protocol_version === PROTOCOL_VERSION || input.protocol_version === '1.6.0' || input.protocol_version === '1.5.0') && validSessionAvailability(result) ? result : undefined;\n }\n if (logical.type === 'normalized_activity_sync_result') {\n const result = { ...logical, ...(input.agent_id === undefined ? {} : { agent_id: input.agent_id }) };\n return (input.protocol_version === PROTOCOL_VERSION || input.protocol_version === '1.6.0' || input.protocol_version === '1.5.0') && validTimelineRecoveryResult(result) ? result : undefined;\n }\n if (logical.protocol_version !== input.protocol_version) return undefined;\n if (logical.type !== 'agent_activity' || !['normalized', 'normalized_fragment', 'normalized_timeline_replacement'].includes(String(logical.shape))) return undefined;\n return { ...logical, ...(input.agent_id === undefined ? {} : { agent_id: input.agent_id }) };\n}\n\n/** Provider recovery notifications travel on activity; request/reply receipts keep their RPC route. */\nexport function encodeNormalizedApplicationRecovery(frame: TimelineRecoveryResult | SessionAvailability, nextSequence: () => number): NormalizedApplicationFrame | undefined {\n if (!validTimelineRecoveryResult(frame) && !validSessionAvailability(frame)) return undefined;\n const outer: NormalizedApplicationFrame = {\n type: 'agent_activity', shape: 'normalized', channel_id: frame.channel_id,\n ...(frame.agent_id ? { agent_id: frame.agent_id } : {}),\n protocol_version: PROTOCOL_VERSION, sequence: nextSequence(),\n event: { type: 'remote_transport', version: 1, frame },\n };\n return Number.isSafeInteger(outer.sequence) && outer.sequence > 0 && deliveryByteLength(outer) <= NORMALIZED_FRAME_MAX_BYTES ? outer : undefined;\n}\n", "import type { SemanticActionFrame } from './frames.generated.js';\n\nexport const SEND_MESSAGE_FRAME_MAX_BYTES = 32768;\nexport function encodeSendMessageTransport(frame: SemanticActionFrame):\n { frames: SemanticActionFrame[] } | { reason: 'invalid' | 'limit' } {\n if (frame.type !== 'semantic_action' || frame.action !== 'send_message' || typeof frame.payload !== 'string' || typeof frame.nonce !== 'string' || !frame.nonce || Buffer.byteLength(frame.nonce) > 128) return { reason: 'invalid' };\n const size = Buffer.byteLength(JSON.stringify(frame));\n if (size > SEND_MESSAGE_FRAME_MAX_BYTES) return { reason: 'limit' };\n return { frames: [frame] };\n}\n", "/** Shrinks tool results against the complete serialized BPP frame budget. */\nexport function boundNormalizedFrame<T extends { event?: unknown }>(frame: T, maxBytes = 32768): T | undefined {\n const size = (value: unknown) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\n if (size(frame) <= maxBytes) return frame;\n const result = structuredClone(frame);\n const event = result.event as { type?: string; item?: { type?: string; result?: { content: unknown[]; truncated?: boolean } } } | undefined;\n if (event?.type !== 'timeline' || event.item?.type !== 'tool_call' || !event.item.result) return undefined;\n const toolResult = event.item.result;\n const text = toolResult.content.map((block) => {\n const value = block as { type: string; text?: string; value?: unknown };\n return value.type === 'text' ? value.text ?? '' : JSON.stringify(value.value);\n }).join('\\n');\n toolResult.truncated = true;\n toolResult.content = [{ type: 'text', text: '' }];\n if (size(result) > maxBytes) return undefined;\n let low = 0, high = text.length;\n while (low < high) {\n const middle = Math.ceil((low + high) / 2);\n toolResult.content = [{ type: 'text', text: text.slice(0, middle) }];\n if (size(result) <= maxBytes) low = middle; else high = middle - 1;\n }\n if (low && /[\\uD800-\\uDBFF]/.test(text[low - 1]!)) low--;\n toolResult.content = [{ type: 'text', text: text.slice(0, low) }];\n return result;\n}\n", "import { decodeAgentSnapshot, type AgentSnapshot } from '@borgee/agent-remote-protocol';\n\n/** The session snapshot uses the existing public protocol schema. */\nexport function isNormalizedAgentSnapshot(value: unknown): value is AgentSnapshot {\n if (!value || typeof value !== 'object' || !('type' in value) || value.type !== 'agent_snapshot') return false;\n try { return decodeAgentSnapshot(JSON.stringify(value)).status === 'ok'; }\n catch { return false; }\n}\n", "import { isSessionManagementAction } from '../session-management.js';\nimport { describeSessionManagement } from './session-management-handler.js';\nimport { parseSessionDescriptionQuery, resolveSessionDescription } from '../session-description.js';\nimport { AGENT_REQUESTS_HEADER, APPLICATION_RPC_MAX_BYTES, parseApplicationBody, parseApplicationRequestContext, isSessionMessageApplicationData, parseSessionMessageApplicationData } from '../application-request.js';\nimport { handleApplicationBody } from './application-handler.js';\nimport { sessionControlEnvelopeFits } from './session-control.js';\nimport { SessionControlReceipts } from './session-control-receipts.js';\nimport { encodeNormalizedApplicationTransport, encodeNormalizedApplicationRecovery } from './normalized-application-transport.js';\nimport { validTimelineReplacement } from './session-observation.js';\nimport { encodeSendMessageTransport, SEND_MESSAGE_FRAME_MAX_BYTES } from './send-message-transport.js';\nimport { isPublicAgentTimelineEvent, isPublicAgentNonTimelineEvent, isInteractionRequestedMessage, isInteractionResolvedMessage } from '@borgee/agent-remote-protocol';\nimport { recordProtocolTrace } from '../protocol-trace.js';\nimport { normalizedTransportError, type NormalizedTransportFrame, type NormalizedTransportRoute, type NormalizedFragmentCapability, type NormalizedTransportFailureReason } from './normalized-transport.js';\nimport { boundNormalizedFrame } from '../normalized-frame.js';\nimport { isNormalizedAgentSnapshot } from '../normalized-snapshot.js';\n// BppTransport is the BPP-native implementation of the Transport port.\n//\n// One `/ws/plugin` WebSocket (Bearer <apiKey>) carries all traffic:\n// outbound: connect / semantic_action / task_* / agent_config_ack / heartbeat\n// inbound: inbound_message / semantic_action_result / agent_config_update /\n// permission_denied\n// reverse requests: {type:\"request\",id,data} \u2194 {type:\"response\",...}\n//\n// Frame types are generated from the Go definitions in internal/bpp/envelope.go.\nimport { randomUUID } from 'node:crypto';\nimport { WebSocket } from 'ws';\n\nimport { BorgeeError, PermissionDeniedError } from '../errors.js';\nimport { rejectChannelPlacementUpdate, validateChannelPlacement, validateListZonesInput } from '../channel-contracts.js';\nimport { decodeChannel, decodeChannels, decodeZonePage } from './channel-results.js';\nimport type {\n ActionResult,\n InboundHandlers,\n SemanticAction,\n Transport,\n TransportContext,\n} from '../transport.js';\nimport type {\n Channel,\n ChannelFile,\n ChannelFileContent,\n ListZonesInput,\n ConfigAckReason,\n ConfigUpdate,\n ConfigApplyResult,\n InboundKind,\n InboundMessageEvent,\n Logger,\n Message,\n SentMessage,\n ServerRequestHandler,\n StopBackgroundRunHandler,\n StopBackgroundRunResult,\n StopTurnHandler,\n StopTurnResult,\n Task,\n TaskPropertyDefinition,\n TaskPropertyRender,\n User,\n} from '../types.js';\nimport type {\n AgentActivityFrame,\n AgentConfigAckFrame,\n AgentConfigUpdateFrame,\n ConnectFrame,\n ExecutionFinishedFrame,\n ExecutionStartedFrame,\n ExecutionTelemetryAckFrame,\n ExecutionUsageFrame,\n HeartbeatFrame,\n InboundMessageFrame,\n PermissionDeniedFrame,\n SemanticActionFrame,\n SemanticActionResultFrame,\n TaskFinishedFrame,\n TaskStartedFrame,\n} from './frames.generated.js';\nimport type { ExecutionTelemetryFrame } from '../types.js';\n\nconst PROTOCOL_VERSION = 'bpp-1';\nconst CONFIG_ACK_REASONS = new Set<ConfigAckReason>([\n 'api_key_invalid',\n 'quota_exceeded',\n 'network_unreachable',\n 'runtime_crashed',\n 'runtime_timeout',\n 'unknown',\n]);\n\n// Non-recoverable auth-failure close code (mirrors the server const wsCloseAuthFailed in\n// packages/server-go/internal/ws/plugin.go; Discord-4004 pattern). When the server\n// closes the plugin socket with this code the credentials are permanently bad \u2014 stop reconnecting\n// instead of backing off forever.\nconst WS_CLOSE_AUTH_FAILED = 4004;\n\n// Successful semantic action result status shared with the Go server.\nconst RESULT_STATUS_OK = 'ok';\n\n// The server\u2192plugin request action asking one channel's turn to stop, the error\n// a frame carrying no channel to stop is answered with, and the error a handler\n// that raised is reported as. The Python SDK spells all three identically \u2014 the\n// same situation must read the same on both SDKs.\nconst STOP_TURN_ACTION = 'stop_turn';\nconst STOP_TURN_CHANNEL_ID_INVALID = 'stop_turn_channel_id_invalid';\nconst STOP_BACKGROUND_RUN_ACTION = 'stop_background_run';\nconst STOP_BACKGROUND_RUN_TARGET_INVALID = 'stop_background_run_target_invalid';\nconst SERVER_REQUEST_FAILED = 'server_request_failed';\n\n/** Optional BppTransport timing controls with production defaults. */\nexport interface BppTransportOptions {\n /** Timeout for perform() to receive semantic_action_result. Default 30000 ms. */\n performTimeoutMs?: number;\n /** Heartbeat interval. Default 30000 ms. */\n heartbeatIntervalMs?: number;\n /** Initial reconnect delay. Default 500 ms. */\n reconnectBaseMs?: number;\n /** Maximum reconnect delay. Default 30000 ms. */\n reconnectMaxMs?: number;\n /** Reconnect after an unexpected socket close. Default true. */\n autoReconnect?: boolean;\n /** Maximum runtime config apply duration. Default 5000. */\n configApplyTimeoutMs?: number;\n}\n\n// Pending perform() actions match semantic_action_result or permission_denied\n// by nonce and reject when their deadline expires.\ninterface Pending {\n op: SemanticAction['op'];\n zoneInput?: ListZonesInput;\n resolve(v: ActionResult): void;\n reject(err: Error): void;\n timer: ReturnType<typeof setTimeout>;\n}\ninterface ReconnectWaiter {\n resolve(): void;\n reject(error: Error): void;\n}\n\ninterface SocketLiveness {\n policy: import('../types.js').ConnectionLivenessPolicy;\n connectTimer?: ReturnType<typeof setTimeout>;\n probeTimer?: ReturnType<typeof setTimeout>;\n pongTimer?: ReturnType<typeof setTimeout>;\n expire(error: BorgeeError): void;\n}\n\n// Minimal envelope inspected before decoding the concrete frame by type.\ninterface WireEnvelope {\n type?: string;\n id?: string;\n data?: unknown;\n [k: string]: unknown;\n}\n\nexport class BppTransport implements Transport {\n private readonly performTimeoutMs: number;\n private readonly heartbeatIntervalMs: number;\n private readonly reconnectBaseMs: number;\n private readonly reconnectMaxMs: number;\n private readonly autoReconnect: boolean;\n private readonly configApplyTimeoutMs: number;\n\n private ctx: TransportContext | undefined;\n private handlers: InboundHandlers | undefined;\n private serverRequestHandler: ServerRequestHandler | undefined;\n private stopTurnHandler: StopTurnHandler | undefined;\n\n private ws: WebSocket | undefined;\n private sessionObservationSupported = false;\n private normalizedApplication = false;\n private normalizedPhysicalSequence = 0;\n private normalizedCapability: NormalizedFragmentCapability | undefined;\n private readonly pending = new Map<string, Pending>();\n private closed = false;\n // ONLINE = this socket's handshake has been written and its identity is known.\n // Outbound semantic actions gate on this rather than on a raw open socket, so a\n // send issued during a reconnect never races ahead of the handshake.\n private online = false;\n\n private terminal = false;\n private stopBackgroundRunHandler: StopBackgroundRunHandler | undefined;\n private inboundChain: Promise<void> = Promise.resolve();\n private configChain: Promise<void> = Promise.resolve();\n private readonly configAcks = new Map<string, AgentConfigAckFrame>();\n private readonly controlReceipts = new WeakMap<WebSocket, SessionControlReceipts>();\n private negotiatedInputOperations: readonly ('start_turn' | 'steer' | 'next_turn')[] = [];\n private readonly connectionAborts = new WeakMap<WebSocket, AbortController>();\n private readonly socketLiveness = new WeakMap<WebSocket, SocketLiveness>();\n private readonly reconnectWaiters = new Set<ReconnectWaiter>();\n private reconnectAttempt = 0;\n private heartbeatTimer: ReturnType<typeof setInterval> | undefined;\n private reconnectTimer: ReturnType<typeof setTimeout> | undefined;\n // The agent id resolved by get_me when the caller supplied none; stamped on\n // every outbound frame that names an agent.\n private agentId = '';\n\n constructor(options: BppTransportOptions = {}) {\n this.performTimeoutMs = options.performTimeoutMs ?? 30_000;\n this.heartbeatIntervalMs = options.heartbeatIntervalMs ?? 30_000;\n this.reconnectBaseMs = options.reconnectBaseMs ?? 500;\n this.reconnectMaxMs = options.reconnectMaxMs ?? 30_000;\n this.autoReconnect = options.autoReconnect ?? true;\n this.configApplyTimeoutMs = options.configApplyTimeoutMs ?? 5_000;\n }\n\n private get logger(): Logger | undefined {\n return this.ctx?.logger;\n }\n\n private currentAgentId(): string {\n return this.agentId || this.ctx?.agentId || '';\n }\n\n subscribe(handlers: InboundHandlers): void {\n this.handlers = handlers;\n }\n\n setServerRequestHandler(handler: ServerRequestHandler | undefined): void {\n this.serverRequestHandler = handler;\n }\n\n setStopTurnHandler(handler: StopTurnHandler | undefined): void {\n this.stopTurnHandler = handler;\n }\n\n setStopBackgroundRunHandler(handler: StopBackgroundRunHandler | undefined): void {\n this.stopBackgroundRunHandler = handler;\n }\n\n getResolvedAgentId(): string {\n return this.currentAgentId();\n }\n\n /** Fire-and-forget metadata-only lifecycle rail. Callers durably retry until ACK. */\n sendExecutionTelemetry(frame: ExecutionTelemetryFrame): void {\n const base = {\n agent_id: this.currentAgentId(),\n execution_id: frame.executionId,\n telemetry_context: frame.telemetryContext,\n event_id: frame.eventId,\n };\n switch (frame.type) {\n case 'execution_started':\n this.send({\n type: frame.type,\n ...base,\n started_at: frame.startedAt,\n } satisfies ExecutionStartedFrame);\n break;\n case 'execution_usage':\n this.send({\n type: frame.type,\n ...base,\n usage_granularity: frame.usageGranularity,\n ...(frame.callIndex === undefined ? {} : { call_index: frame.callIndex }),\n provider: frame.provider,\n model: frame.model,\n input_tokens: frame.inputTokens,\n output_tokens: frame.outputTokens,\n cache_read_tokens: frame.cacheReadTokens,\n cache_write_tokens: frame.cacheWriteTokens,\n observed_at: frame.observedAt,\n } satisfies ExecutionUsageFrame);\n break;\n case 'execution_finished':\n this.send({\n type: frame.type,\n ...base,\n succeeded: frame.succeeded,\n ended_at: frame.endedAt,\n } satisfies ExecutionFinishedFrame);\n break;\n }\n }\n\n async connect(ctx: TransportContext): Promise<void> {\n this.ctx = ctx;\n this.closed = false;\n this.terminal = false;\n this.agentId = ctx.agentId || '';\n await this.openSocket();\n }\n\n async close(): Promise<void> {\n this.closed = true;\n this.normalizedCapability = undefined; this.normalizedApplication = false; this.sessionObservationSupported = false;\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n // close() clears this.ws before ws.close() below, so the 'close' handler sees wasCurrent=false\n // and cannot reset online there; do it here so a post-close perform fails fast.\n this.online = false; this.sessionBindingsSupported = false;\n this.stopHeartbeat();\n this.rejectReconnectWaiters(new BorgeeError('transport not connected', 'bpp.not_connected'));\n this.rejectAllPending(new BorgeeError('transport closed', 'bpp.transport_closed'));\n const ws = this.ws;\n if (ws) this.retireSocket(ws);\n if (ws) {\n try {\n ws.close();\n } catch {\n /* ignore */\n }\n }\n }\n\n // ---- Outbound operations ----\n\n async perform(action: SemanticAction, opts?: { handshake?: boolean; isConnectionCurrent?: () => boolean }): Promise<ActionResult> {\n const assertSourceCurrent = () => {\n if (opts?.isConnectionCurrent && !opts.isConnectionCurrent()) throw new BorgeeError('captured source connection expired', 'bpp.source_connection_expired');\n };\n assertSourceCurrent();\n // Lifecycle and typing frames are fire-and-forget.\n if (action.op === 'report_task_started') {\n this.sendTaskStarted(action);\n return undefined;\n }\n if (action.op === 'report_task_finished') {\n this.sendTaskFinished(action);\n return undefined;\n }\n if (action.op === 'report_typing') {\n this.sendTyping(action);\n return undefined;\n }\n if (action.op === 'report_activity') {\n this.sendActivity(action);\n return undefined;\n }\n\n // One action_timeout bounds waiting-for-online and the response wait together.\n const deadline = Date.now() + this.performTimeoutMs;\n // Fail fast on a closed/terminal transport even if `online` is briefly stale-true.\n if (this.closed || this.terminal) {\n throw new BorgeeError('transport not connected', 'bpp.not_connected');\n }\n if (opts?.handshake) {\n // The identity handshake belongs to the socket that opened it: it needs an\n // open socket and nothing else, so the wait for readiness can never\n // redirect it onto a replacement one \u2014 readiness is downstream of this call.\n if (!this.isOpen()) throw new BorgeeError('transport not connected', 'bpp.not_connected');\n } else if (!this.online) {\n await this.waitUntilOnline(action.op, deadline);\n }\n assertSourceCurrent();\n\n const nonce = randomUUID();\n const frame: SemanticActionFrame = {\n type: 'semantic_action',\n agent_id: this.currentAgentId(),\n action: action.op,\n payload: JSON.stringify(encodeActionPayload(action)),\n nonce,\n };\n\n return new Promise<ActionResult>((resolve, reject) => {\n const rejectAction = (error: Error): void => {\n if (action.op === 'send_message' && error instanceof BorgeeError && ['bpp.action_timeout', 'bpp.connection_lost'].includes(error.code)) {\n reject(new BorgeeError(`${error.message}; send_message delivery outcome unknown; do not retry automatically`, error.code));\n } else reject(error);\n };\n const remaining = Math.max(0, deadline - Date.now());\n const timer = setTimeout(() => {\n this.pending.delete(nonce);\n rejectAction(new BorgeeError(`semantic_action ${action.op} timed out`, 'bpp.action_timeout'));\n }, remaining);\n this.pending.set(nonce, {\n op: action.op,\n ...(action.op === 'list_zones' ? { zoneInput: { guildId: action.guildId, limit: action.limit, after: action.after } } : {}),\n resolve, reject: rejectAction, timer,\n });\n if (action.op === 'send_message') {\n const encoded = encodeSendMessageTransport(frame);\n const fail = (error: BorgeeError): void => {\n const pending = this.pending.get(nonce);\n if (!pending) return;\n clearTimeout(pending.timer); this.pending.delete(nonce); pending.reject(error);\n };\n if ('reason' in encoded) fail(new BorgeeError(`send_message transport rejected: ${encoded.reason}`, `bpp.send_message_${encoded.reason}`));\n else this.sendMessageBatch(encoded.frames, fail, opts?.isConnectionCurrent);\n } else this.send(frame);\n });\n }\n\n // ---- Socket lifecycle ----\n\n // Transition the given socket to ONLINE. Bails if the socket is stale (a reconnect replaced it),\n // so a handshake completing on a prior socket cannot flip online across a reconnect.\n private goOnline(source: WebSocket | undefined): void {\n if (!source || source !== this.ws) return;\n this.online = true;\n this.handlers?.onStateChange({ status: 'online' });\n this.resolveReconnectWaiters();\n }\n\n private isOpen(): boolean {\n return this.ws !== undefined && this.ws.readyState === WebSocket.OPEN;\n }\n\n sessionBindingsSupported = false;\n private readonly connectionGenerations = new WeakMap<WebSocket, string>();\n\n private async openSocket(): Promise<void> {\n const ctx = this.ctx;\n if (!ctx) throw new BorgeeError('connect() called without context', 'bpp.no_context');\n\n const requested = ctx.connectionLiveness;\n const policy = requested && {\n probeIntervalMs: requested.probeIntervalMs,\n pongTimeoutMs: requested.pongTimeoutMs,\n connectTimeoutMs: requested.connectTimeoutMs,\n };\n if (policy && Object.values(policy).some(value => !Number.isFinite(value) || value <= 0 || value > 2_147_483_647)) {\n throw new BorgeeError('connection liveness durations must be finite positive timer delays', 'bpp.invalid_liveness_policy');\n }\n\n const url = pluginWsUrl(ctx.baseUrl);\n // A new (or reconnecting) socket is not ONLINE until it has announced itself.\n this.online = false; this.sessionBindingsSupported = false;\n this.normalizedCapability = undefined; this.normalizedApplication = false; this.sessionObservationSupported = false;\n const ws = new WebSocket(url, {\n headers: { Authorization: `Bearer ${ctx.apiKey}` },\n });\n const connectionAbort = new AbortController();\n this.connectionAborts.set(ws, connectionAbort);\n this.controlReceipts.set(ws, new SessionControlReceipts());\n this.ws = ws;\n\n return new Promise<void>((resolve, reject) => {\n let settled = false;\n let opened = false;\n\n if (policy) {\n const liveness: SocketLiveness = {\n policy,\n expire: error => {\n if (!this.retireSocket(ws)) return;\n this.logger?.warn(error.code);\n if (!settled) { settled = true; reject(error); }\n this.rejectAllPending(new BorgeeError('connection lost', 'bpp.connection_lost'));\n ws.terminate();\n if (!this.autoReconnect) this.rejectReconnectWaiters(error);\n this.scheduleReconnect();\n },\n };\n this.socketLiveness.set(ws, liveness);\n liveness.connectTimer = setTimeout(() => liveness.expire(new BorgeeError('connection readiness deadline expired', 'bpp.connect_timeout')), policy.connectTimeoutMs);\n liveness.connectTimer.unref?.();\n }\n\n ws.on('upgrade', response => {\n if (this.ws !== ws) return;\n const values = (name: string): string[] => {\n const result: string[] = [];\n for (let index = 0; index < response.rawHeaders.length; index += 2) {\n if (response.rawHeaders[index]?.toLowerCase() === name) result.push(response.rawHeaders[index + 1]!);\n }\n return result;\n };\n const applicationVersions = values(AGENT_REQUESTS_HEADER);\n this.normalizedApplication = applicationVersions.length === 1 && applicationVersions[0] === '1';\n this.normalizedPhysicalSequence = 0;\n this.sessionObservationSupported = this.normalizedApplication && this.ctx?.sessionObservation === true;\n this.sessionBindingsSupported = this.normalizedApplication && ctx.sessionBindings === true && ctx.providerOutputMode === 'normalized' && ctx.sessionControl === true && !!this.serverRequestHandler;\n this.normalizedCapability = this.normalizedApplication ? { version: 1, maxEventBytes: 131072 } : undefined;\n });\n ws.on('open', () => {\n if (this.ws !== ws) return;\n opened = true;\n if (!policy) this.reconnectAttempt = 0;\n void this.onOpen(\n ws,\n () => {\n const liveness = this.socketLiveness.get(ws);\n if (liveness) {\n clearTimeout(liveness.connectTimer);\n liveness.connectTimer = undefined;\n this.scheduleProbe(ws, liveness);\n }\n if (!settled) {\n settled = true;\n resolve();\n }\n },\n (error) => {\n if (!settled) {\n settled = true;\n reject(error);\n }\n },\n );\n });\n\n ws.on('message', (data: unknown) => {\n this.onMessage(rawToString(data), ws);\n });\n\n ws.on('error', (err: Error) => {\n this.logger?.warn('bpp.ws_error', err);\n // Errors before open reject connect(); later failures flow through close.\n if (!opened && !settled) {\n settled = true;\n reject(new BorgeeError(`ws connect failed: ${err.message}`, 'bpp.connect_failed'));\n }\n });\n\n ws.on('close', (code: number, reason: Buffer) => {\n const closeReason = reason?.toString('utf8') ?? '';\n const wasCurrent = this.retireSocket(ws);\n const closeSummary = `code=${code} reason=${closeReason || '<none>'} current=${wasCurrent}`;\n if (code === 1000 || this.closed) {\n this.logger?.info('bpp.ws_closed', closeSummary);\n } else {\n this.logger?.warn('bpp.ws_closed', closeSummary);\n }\n\n const authFailed = code === WS_CLOSE_AUTH_FAILED;\n if (authFailed && wasCurrent) {\n // Permanently terminal: reuse `closed` so scheduleReconnect()/the reconnect timer both\n // short-circuit; a backoff loop here would re-flood the server forever.\n this.closed = true;\n this.terminal = true;\n this.logger?.error(\n 'bpp.auth_failed',\n `server closed with ${WS_CLOSE_AUTH_FAILED} (authentication failed); not reconnecting. reason=${closeReason}`,\n );\n this.handlers?.onStateChange({ status: 'error', reason: 'api_key_invalid' });\n }\n\n // The server does not replay action results, so disconnect rejects all pending operations.\n if (wasCurrent) {\n this.rejectAllPending(\n authFailed\n ? new BorgeeError(\n 'authentication failed: invalid or revoked API key',\n 'bpp.auth_failed',\n )\n : new BorgeeError('connection lost', 'bpp.connection_lost'),\n );\n }\n\n if (!settled) {\n settled = true;\n reject(\n authFailed\n ? new BorgeeError(\n 'authentication failed: invalid or revoked API key',\n 'bpp.auth_failed',\n )\n : new BorgeeError(\n opened ? 'ws closed before the handshake was written' : 'ws closed before open',\n opened ? 'bpp.handshake_incomplete' : 'bpp.connect_failed',\n ),\n );\n }\n\n if (authFailed || !wasCurrent) {\n if (authFailed && wasCurrent) {\n this.rejectReconnectWaiters(\n new BorgeeError(\n 'authentication failed: invalid or revoked API key',\n 'bpp.auth_failed',\n ),\n );\n }\n return; // do NOT scheduleReconnect\n }\n if (!this.autoReconnect) {\n this.rejectReconnectWaiters(new BorgeeError('connection lost', 'bpp.connection_lost'));\n return;\n }\n this.scheduleReconnect();\n });\n });\n }\n\n private retireSocket(ws: WebSocket): boolean {\n const liveness = this.socketLiveness.get(ws);\n if (liveness) {\n clearTimeout(liveness.connectTimer);\n clearTimeout(liveness.probeTimer);\n clearTimeout(liveness.pongTimer);\n this.socketLiveness.delete(ws);\n }\n this.connectionAborts.get(ws)?.abort();\n if (this.ws !== ws) return false;\n this.ws = undefined;\n this.normalizedCapability = undefined; this.normalizedApplication = false; this.sessionObservationSupported = false;\n this.online = false; this.sessionBindingsSupported = false;\n this.stopHeartbeat();\n return true;\n }\n\n private scheduleProbe(ws: WebSocket, liveness: SocketLiveness): void {\n if (this.ws !== ws || this.socketLiveness.get(ws) !== liveness || !this.online) return;\n liveness.probeTimer = setTimeout(() => {\n liveness.probeTimer = undefined;\n if (this.ws !== ws || this.socketLiveness.get(ws) !== liveness) return;\n liveness.pongTimer = setTimeout(() => liveness.expire(new BorgeeError('connection pong deadline expired', 'bpp.pong_timeout')), liveness.policy.pongTimeoutMs);\n liveness.pongTimer.unref?.();\n const failWrite = () => liveness.expire(new BorgeeError('connection probe write failed', 'bpp.probe_write_failed'));\n try {\n ws.send(JSON.stringify({ type: 'ping' }), error => { if (error) failWrite(); });\n } catch { failWrite(); }\n }, liveness.policy.probeIntervalMs);\n liveness.probeTimer.unref?.();\n }\n\n private receivePong(ws: WebSocket): void {\n const liveness = this.socketLiveness.get(ws);\n if (this.ws !== ws || !liveness?.pongTimer) return;\n clearTimeout(liveness.pongTimer);\n liveness.pongTimer = undefined;\n this.reconnectAttempt = 0;\n this.scheduleProbe(ws, liveness);\n }\n\n supportsSessionBindings(): boolean { return this.sessionBindingsSupported && this.online; }\n\n private async onOpen(\n ws: WebSocket,\n resolve: () => void,\n reject: (error: Error) => void,\n ): Promise<void> {\n const ctx = this.ctx;\n if (!ctx || this.ws !== ws) return;\n\n const sessionControl = ctx.sessionControl && !!this.serverRequestHandler;\n const inputOperations = sessionControl ? [...ctx.sessionInputOperations?.() ?? []] : [];\n this.negotiatedInputOperations = inputOperations;\n const connectFrame: ConnectFrame = {\n type: 'connect',\n plugin_id: ctx.pluginId ?? '',\n token: '',\n version: PROTOCOL_VERSION,\n capabilities: JSON.stringify([\n 'semantic_action',\n 'inbound_message',\n 'read_file',\n 'execution_telemetry',\n ...(sessionControl ? ['agent_requests_v1'] : []),\n ]),\n };\n this.sendTo(ws, connectFrame);\n\n try {\n if (!this.currentAgentId()) {\n const identity = await this.perform({ op: 'get_me' }, { handshake: true, isConnectionCurrent: () => this.ws === ws });\n if (this.ws !== ws) return;\n const resolved = identity && typeof identity === 'object' ? (identity as User).id : '';\n if (!resolved)\n throw new BorgeeError(\n 'authenticated agent identity could not be resolved',\n 'bpp.identity_unresolved',\n );\n this.agentId = resolved;\n }\n // Readiness is the handshake having been written by a socket that knows who\n // it is, not an answer to it: the credential was accepted on the upgrade and\n // the identity is resolved above, so nothing is left to confirm. A server\n // that refuses the connection for any other reason closes it, and the next\n // gated action then fails against a closed socket rather than against a\n // deadline.\n if (this.ws !== ws) return;\n this.startHeartbeat(ws);\n this.goOnline(ws);\n this.logger?.info('bpp.connected');\n resolve();\n } catch (error) {\n if (this.ws !== ws) return;\n const failure =\n error instanceof BorgeeError\n ? error\n : new BorgeeError(\n `agent identity handshake failed: ${String(error)}`,\n 'bpp.identity_unresolved',\n );\n reject(failure);\n this.failTerminal(failure, ws);\n }\n }\n\n private scheduleReconnect(): void {\n if (this.closed || this.terminal || !this.autoReconnect) return;\n this.reconnectAttempt += 1;\n const delay = Math.min(\n this.reconnectBaseMs * 2 ** (this.reconnectAttempt - 1),\n this.reconnectMaxMs,\n );\n this.handlers?.onStateChange({ status: 'reconnecting', attempt: this.reconnectAttempt });\n this.logger?.info(\n 'bpp.reconnect_scheduled',\n `attempt=${this.reconnectAttempt} delay_ms=${delay}`,\n );\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = undefined;\n if (this.closed) return;\n this.openSocket().catch((err) => {\n this.logger?.warn('bpp.reconnect_failed', err);\n // The close handler already scheduled the next reconnect.\n });\n }, delay);\n }\n\n private startHeartbeat(ws: WebSocket): void {\n this.stopHeartbeat();\n this.heartbeatTimer = setInterval(() => {\n if (this.ws !== ws || ws.readyState !== WebSocket.OPEN) return;\n const frame: HeartbeatFrame = {\n type: 'heartbeat',\n plugin_id: this.ctx?.pluginId ?? '',\n agent_id: this.currentAgentId(),\n status: 'online',\n reason: '',\n timestamp: Date.now(),\n };\n this.sendTo(ws, frame);\n }, this.heartbeatIntervalMs);\n // Heartbeats do not keep the process alive.\n this.heartbeatTimer.unref?.();\n }\n\n private stopHeartbeat(): void {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = undefined;\n }\n }\n\n // ---- Inbound dispatch ----\n\n private onMessage(raw: string, source: WebSocket): void {\n if (source !== this.ws) return;\n let env: WireEnvelope;\n try {\n env = JSON.parse(raw) as WireEnvelope;\n } catch {\n this.logger?.warn('bpp.frame_parse_failed');\n return;\n }\n if (env.type === 'inbound_message' || env.type === 'request') {\n const observed = env as unknown as Record<string, unknown>;\n recordProtocolTrace({ stage: 'sdk.read', kind: env.type, bytes: Buffer.byteLength(raw),\n correlation: { channelId: observed.channel_id as string, requestId: observed.id as string,\n inputMessageId: observed.message_id as string, agentId: observed.agent_id as string }, payload: env });\n }\n switch (env.type) {\n case 'request':\n if (Buffer.byteLength(raw) > APPLICATION_RPC_MAX_BYTES) {\n this.sendTo(source, { type: 'response', id: env.id, error: 'application_request_too_large' });\n break;\n }\n void this.handleServerRequest(env, source);\n break;\n case 'inbound_message':\n this.handleInbound(env as unknown as InboundMessageFrame, source);\n break;\n case 'execution_telemetry_ack':\n this.handlers?.onExecutionTelemetryAck?.({\n eventId: (env as unknown as ExecutionTelemetryAckFrame).event_id,\n });\n break;\n case 'semantic_action_result':\n this.handleActionResult(env as unknown as SemanticActionResultFrame);\n break;\n case 'permission_denied':\n this.handlePermissionDenied(env as unknown as PermissionDeniedFrame);\n break;\n case 'agent_config_update':\n this.handleConfigUpdate(env as unknown as AgentConfigUpdateFrame, source);\n break;\n case 'pong':\n this.receivePong(source);\n break;\n case 'ping':\n case 'agent_toggle':\n // Declared but not consumed: agent_toggle is the server's own switch on\n // inbound fan-out; the liveness policy owns pong handling above.\n break;\n default:\n // Unknown frames are ignored for forward compatibility, matching the server.\n break;\n }\n }\n\n\n private handleInbound(frame: InboundMessageFrame, source: WebSocket): void {\n const origin = this.connectionAborts.get(source)?.signal;\n const credential = this.ctx?.apiKey;\n const sourceCurrent = () => source === this.ws && source.readyState === WebSocket.OPEN && !!origin && !origin.aborted && this.ctx?.apiKey === credential;\n this.inboundChain = this.inboundChain.then(async () => {\n const metadata = (frame as InboundMessageFrame & { application_data?: unknown }).application_data;\n if (!isSessionMessageApplicationData(metadata)) {\n this.handlers?.onInbound(mapInbound(frame, sourceCurrent));\n return;\n }\n const input = metadata.input as { agent_id?: unknown } | undefined;\n if (input && typeof input.agent_id === 'string' && input.agent_id !== this.currentAgentId()) return;\n if (!['message', 'mention'].includes(frame.kind)) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const controller = new AbortController();\n const abort = () => controller.abort();\n origin?.addEventListener('abort', abort, { once: true });\n try {\n const { input: target } = parseSessionMessageApplicationData(metadata);\n if (!sourceCurrent() || this.connectionGenerations.get(source) !== target.connection_generation) throw new Error('stale_session_binding');\n if (!this.sessionBindingsSupported || !this.serverRequestHandler) throw new Error('session_message_unsupported');\n const resolved = await Promise.race([\n resolveSessionDescription(parseSessionDescriptionQuery({ action: 'describe_session', version: 1,\n agent_id: target.agent_id, channel_id: frame.channel_id, connection_generation: target.connection_generation,\n binding_id: target.binding_id, native_session_id: target.native_session_id, operation: { kind: 'start_turn' },\n }), this.serverRequestHandler, { signal: controller.signal, connectionSignal: origin, isConnectionCurrent: sourceCurrent }, this.sessionDescriptionOptions()),\n new Promise<never>((_resolve, reject) => { timer = setTimeout(() => { controller.abort(); reject(new Error('stale_session_binding')); }, 10000); }),\n ]);\n if (!sourceCurrent()) throw new Error('stale_session_binding');\n this.handlers?.onInbound(mapInbound(frame, sourceCurrent, {\n agentId: target.agent_id, bindingId: resolved.binding_id, nativeSessionId: resolved.native_session_id,\n connectionGeneration: target.connection_generation,\n ...(target.questionnaireResponse ? { questionnaireResponse: target.questionnaireResponse } : {}),\n }));\n } catch (error) {\n const reason = error instanceof Error && ['invalid_session_message', 'stale_session_binding', 'session_message_unsupported'].includes(error.message)\n ? error.message : 'invalid_session_message';\n recordProtocolTrace({ stage: 'sdk.inbound', kind: 'session_message', outcome: 'rejected', reason,\n correlation: { agentId: this.currentAgentId(), channelId: frame.channel_id, messageId: frame.message_id } });\n if (sourceCurrent()) {\n try { await this.perform({ op: 'send_message', channelId: frame.channel_id, replyToId: frame.message_id,\n body: `Selected Session input rejected: ${reason}.` }, { isConnectionCurrent: sourceCurrent }); }\n catch (failure) { this.logger?.error('bpp.session_message_rejection_failed', this.inboundFailure(failure)); }\n }\n } finally {\n if (timer) clearTimeout(timer);\n origin?.removeEventListener('abort', abort);\n controller.abort();\n }\n }).catch(error => { this.logger?.error('bpp.inbound_dispatch_failed', this.inboundFailure(error)); });\n }\n\n private handleActionResult(frame: SemanticActionResultFrame): void {\n const p = this.pending.get(frame.nonce);\n if (!p) return; // Ignore results that arrived after their operation was removed.\n this.pending.delete(frame.nonce);\n clearTimeout(p.timer);\n if (frame.status === RESULT_STATUS_OK) {\n let result: ActionResult;\n try {\n result = decodeActionResult(p.op, frame.payload, p.zoneInput);\n } catch (error) {\n p.reject(error as Error);\n return;\n }\n // Caching the resolved identity is what lets the later reconnect / task /\n // heartbeat frames stamp an agent id the caller never supplied.\n if (p.op === 'get_me' && result && typeof result === 'object') {\n const id = (result as User).id;\n if (id) this.agentId = id;\n }\n if (p.op === 'send_message') {\n const messageId = (result as { messageId?: string }).messageId;\n const metadata = { nonce: frame.nonce, status: frame.status, message_id: messageId };\n this.logger?.debug('bpp.send_message_result', metadata);\n recordProtocolTrace({ stage: 'sdk.read', kind: 'semantic_action_result', correlation: { requestId: frame.nonce }, payload: metadata, outcome: 'accepted' });\n }\n p.resolve(result);\n } else {\n p.reject(\n new BorgeeError(\n `semantic_action failed: ${frame.error}`,\n frame.error || 'bpp.semantic_action_failed',\n ),\n );\n }\n }\n\n private handlePermissionDenied(frame: PermissionDeniedFrame): void {\n const denied = {\n requestId: frame.request_id || undefined,\n attemptedAction: frame.attempted_action,\n requiredCapability: frame.required_capability || undefined,\n currentScope: frame.current_scope || undefined,\n };\n // A request ID matching a pending nonce rejects that operation; otherwise\n // the denial is delivered as an inbound event.\n const p = frame.request_id ? this.pending.get(frame.request_id) : undefined;\n if (p) {\n this.pending.delete(frame.request_id);\n clearTimeout(p.timer);\n p.reject(new PermissionDeniedError(denied));\n return;\n }\n this.handlers?.onPermissionDenied(denied);\n }\n\n private handleConfigUpdate(frame: AgentConfigUpdateFrame, source: WebSocket): void {\n const update: ConfigUpdate = {\n agentId: frame.agent_id,\n schemaVersion: frame.schema_version,\n blob: safeParseJSON(frame.blob),\n idempotencyKey: frame.idempotency_key,\n cursor: frame.cursor,\n };\n this.configChain = this.configChain\n .then(async () => {\n const signal = this.connectionAborts.get(source)?.signal;\n if (!signal || signal.aborted || source !== this.ws) return;\n const cached = this.configAcks.get(frame.idempotency_key);\n if (cached) {\n this.sendTo(source, cached);\n return;\n }\n const result = await this.applyConfig(update, signal);\n if (signal.aborted || source !== this.ws) return;\n try {\n this.handlers?.onConfigUpdate(update);\n } catch (error) {\n this.logger?.warn('bpp.config_observer_failed', error);\n }\n const ack: AgentConfigAckFrame = {\n type: 'agent_config_ack',\n cursor: frame.cursor,\n agent_id: frame.agent_id,\n schema_version: frame.schema_version,\n idempotency_key: frame.idempotency_key,\n status: result.status,\n reason: result.reason ?? '',\n applied_at: result.status === 'applied' ? Date.now() : 0,\n };\n this.configAcks.set(frame.idempotency_key, ack);\n this.sendTo(source, ack);\n })\n .catch((error) => {\n this.logger?.error('bpp.config_update_failed', error);\n const signal = this.connectionAborts.get(source)?.signal;\n if (!signal || signal.aborted || source !== this.ws) return;\n const ack: AgentConfigAckFrame = {\n type: 'agent_config_ack',\n cursor: frame.cursor,\n agent_id: frame.agent_id,\n schema_version: frame.schema_version,\n idempotency_key: frame.idempotency_key,\n status: 'rejected',\n reason: 'unknown',\n applied_at: 0,\n };\n this.sendTo(source, ack);\n });\n }\n\n private async applyConfig(update: ConfigUpdate, signal: AbortSignal): Promise<ConfigApplyResult> {\n const handler = this.handlers?.applyConfigUpdate;\n if (!handler) return { status: 'rejected', reason: 'unknown' };\n const timeoutMs = this.ctx?.configApplyTimeoutMs ?? this.configApplyTimeoutMs;\n const applyController = new AbortController();\n const relayAbort = () => applyController.abort(signal.reason);\n signal.addEventListener('abort', relayAbort, { once: true });\n let timer: ReturnType<typeof setTimeout> | undefined;\n let timedOut = false;\n try {\n if (signal.aborted) relayAbort();\n const result = await Promise.race([\n Promise.resolve().then(() => handler(update, { signal: applyController.signal })),\n new Promise<ConfigApplyResult>((resolve) => {\n timer = setTimeout(() => {\n timedOut = true;\n resolve({ status: 'rejected', reason: 'runtime_timeout' });\n applyController.abort(\n new BorgeeError('config apply timed out', 'bpp.config_apply_timeout'),\n );\n }, timeoutMs);\n }),\n ]);\n if (signal.aborted && !timedOut)\n throw new BorgeeError('stale config generation', 'bpp.stale_generation');\n if (!result || !['applied', 'rejected', 'stale'].includes(result.status)) {\n return { status: 'rejected', reason: 'unknown' };\n }\n const reason = CONFIG_ACK_REASONS.has(result.reason as ConfigAckReason)\n ? (result.reason as ConfigAckReason)\n : 'unknown';\n return result.status === 'applied'\n ? { status: 'applied' }\n : { status: result.status, reason };\n } catch (error) {\n this.logger?.warn('bpp.config_handler_failed', error);\n return { status: 'rejected', reason: 'unknown' };\n } finally {\n if (timer) clearTimeout(timer);\n signal.removeEventListener('abort', relayAbort);\n if (!applyController.signal.aborted) applyController.abort();\n }\n }\n\n private async handleServerRequest(env: WireEnvelope, source: WebSocket): Promise<void> {\n const id = env.id;\n if (!id) return;\n const data = (env.data ?? {}) as Record<string, unknown>;\n if (data.action === 'application_request') {\n await this.answerApplicationRequest(id, data, source);\n return;\n }\n const action = typeof data.action === 'string' ? data.action : '';\n if (['message_delivery', 'session_observation', 'describe_session', 'session_control', 'sync_normalized_activity'].includes(action)) {\n this.sendTo(source, { type: 'response', id, error: 'application_request_required' });\n return;\n }\n if (action === STOP_TURN_ACTION) {\n await this.answerStopTurn(id, data, source);\n return;\n }\n if (action === STOP_BACKGROUND_RUN_ACTION) {\n await this.answerStopBackgroundRun(id, data);\n return;\n }\n if (!this.serverRequestHandler) {\n this.sendTo(source, { type: 'response', id, error: 'no_server_request_handler' });\n return;\n }\n try {\n const origin = this.connectionAborts.get(source)?.signal;\n const credential = this.ctx?.apiKey;\n const isConnectionCurrent = () => source === this.ws && source.readyState === WebSocket.OPEN && !!origin && !origin.aborted && this.ctx?.apiKey === credential;\n if (!isConnectionCurrent()) return;\n const context = { signal: origin!, connectionSignal: origin, isConnectionCurrent };\n const captured = action === 'interaction_response' ? await this.captureSessionRequest(data, context) : data;\n const result = await this.serverRequestHandler(action, captured, context);\n if (!isConnectionCurrent()) return;\n this.sendTo(source, { type: 'response', id, data: result });\n } catch (err) {\n this.sendTo(source, { type: 'response', id, error: err instanceof Error ? err.message : String(err) });\n }\n }\n\n private sessionDescriptionOptions() {\n return { agentId: this.currentAgentId(), inputOperations: this.negotiatedInputOperations, sessionRelations: this.ctx?.sessionRelations === true };\n }\n\n private async answerApplicationRequest(id: string, data: Record<string, unknown>, source: WebSocket): Promise<void> {\n const origin = this.connectionAborts.get(source)?.signal;\n const credential = this.ctx?.apiKey;\n const current = () => source === this.ws && source.readyState === WebSocket.OPEN && !!origin && !origin.aborted && this.ctx?.apiKey === credential;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const controller = new AbortController();\n const abort = () => controller.abort();\n origin?.addEventListener('abort', abort, { once: true });\n try {\n if (!this.normalizedApplication || !current()) throw new Error('application_request_unsupported');\n const trusted = parseApplicationRequestContext(data.request_context);\n if (trusted.agent_id !== this.currentAgentId()) throw new Error('invalid_request_agent');\n const generation = this.connectionGenerations.get(source);\n if (generation !== undefined && generation !== trusted.connection_generation) throw new Error('invalid_request_context');\n this.connectionGenerations.set(source, trusted.connection_generation);\n const profile = parseApplicationBody(data.body);\n trusted.deadline_at = Math.min(trusted.deadline_at, profile.expires_at ?? Infinity);\n if (profile?.action === 'session_control' && !sessionControlEnvelopeFits(id, data, 'request')) throw new Error('session_control_request_too_large');\n if (data.action === 'application_request' && profile?.action === 'describe_application') {\n if (Object.keys(profile.input).length) throw new Error('invalid_application_description');\n const normalized = this.ctx?.providerOutputMode === 'normalized' && !!this.serverRequestHandler;\n const enabled = normalized && this.ctx?.sessionControl;\n const management = enabled && this.ctx?.sessionManagement && this.serverRequestHandler\n ? await describeSessionManagement(trusted, this.serverRequestHandler, { signal: controller.signal, connectionSignal: origin, isConnectionCurrent: current }) : undefined;\n if (!current() || Date.now() >= trusted.deadline_at) throw new Error('application_request_expired');\n this.sendTo(source, { type: 'response', id, data: { protocol: 'remote-control', version: 1,\n output_mode: normalized ? 'normalized' : 'legacy',\n ...(enabled && (this.ctx?.sessionDirectory || this.ctx?.sessionRelations || management)\n ? { services: { ...(this.ctx?.sessionDirectory ? { session_directory: { scope: 'registered' } } : {}), ...(this.ctx?.sessionRelations ? { session_relations: { version: 1 } } : {}), ...(management ? { session_management: management } : {}) } } : {}) } });\n return;\n }\n if (!this.serverRequestHandler || !this.ctx?.sessionControl) throw new Error('application_request_unsupported');\n if (profile.action === 'list_sessions' && !this.ctx.sessionDirectory || isSessionManagementAction(profile.action) && (!this.ctx.sessionManagement || this.ctx.providerOutputMode !== 'normalized')) throw new Error('application_operation_unsupported');\n if (isSessionManagementAction(profile.action) && !sessionControlEnvelopeFits(id, data, 'request')) throw new Error('session_management_request_too_large');\n const context = { signal: controller.signal, connectionSignal: origin, isConnectionCurrent: current };\n const handler = this.serverRequestHandler;\n const work = async () => {\n return handleApplicationBody(data.body, {\n trusted, requestId: id, context, handler, description: this.sessionDescriptionOptions(), receipts: this.controlReceipts.get(source)!,\n persist: (content, contentType) => this.perform({ op: 'send_message', channelId: trusted.channel_id, body: content, contentType }, { isConnectionCurrent: current }) as Promise<SentMessage>,\n\n });\n };\n const result = await Promise.race([work(), new Promise<never>((_resolve, reject) => {\n timer = setTimeout(() => { controller.abort(); reject(new Error('application_request_timeout')); }, Math.max(0, trusted.deadline_at - Date.now()));\n })]);\n if (current()) this.sendTo(source, { type: 'response', id, data: result });\n } catch (error) {\n if (current()) this.sendTo(source, { type: 'response', id, error: error instanceof Error ? error.message : 'application_request_failed' });\n } finally {\n if (timer) clearTimeout(timer);\n origin?.removeEventListener('abort', abort);\n controller.abort();\n }\n }\n\n private async captureSessionRequest(data: Record<string, unknown>, _context: import('../types.js').ServerRequestContext): Promise<Record<string, unknown>> {\n if (['binding_id', 'native_session_id', 'connection_generation'].some(field => field in data)) throw new Error('application_request_required');\n return data;\n }\n\n // A targeted request must retain its tuple and source connection through dispatch.\n private async answerStopTurn(id: string, data: Record<string, unknown>, source: WebSocket): Promise<void> {\n const channelId = data.channel_id;\n if (typeof channelId !== 'string' || channelId === '') {\n this.sendTo(source, { type: 'response', id, error: STOP_TURN_CHANNEL_ID_INVALID });\n return;\n }\n const targeted = ['binding_id', 'native_session_id', 'connection_generation'].some(field => field in data);\n const origin = this.connectionAborts.get(source)?.signal;\n const credential = this.ctx?.apiKey;\n const isConnectionCurrent = () => source === this.ws && source.readyState === WebSocket.OPEN && !!origin && !origin.aborted && this.ctx?.apiKey === credential;\n if (!isConnectionCurrent()) return;\n const specific = targeted ? undefined : this.stopTurnHandler;\n const generic = this.serverRequestHandler;\n const context = { signal: origin!, connectionSignal: origin, isConnectionCurrent };\n let captured;\n try { captured = await this.captureSessionRequest(data, context); }\n catch { this.sendTo(source, { type: 'response', id, error: 'invalid_session_control_binding' }); return; }\n try {\n const answer = specific\n ? await specific(channelId)\n : generic\n ? await generic(STOP_TURN_ACTION, captured, context)\n : // No handler is not the same as \"unsupported\": nothing was aborted,\n // which is what false already says, and the rail carries no third\n // value to draw that distinction with.\n { aborted: false };\n if (!isConnectionCurrent()) return;\n this.sendTo(source, { type: 'response', id, data: this.asStopTurnResult(answer) });\n } catch (err) {\n this.logger?.warn('bpp.stop_turn_handler_failed', err);\n this.sendTo(source, { type: 'response', id, error: SERVER_REQUEST_FAILED });\n }\n }\n\n // The rail's answer is one boolean and nothing else, so that is what goes on\n // the wire whatever the handler returned. A callback switching on action names\n // answers actions it does not implement with something else entirely \u2014 and\n // \"the callback does not implement stopping\" is one of the things false\n // already covers, so it is reported as such rather than as a broken agent.\n private asStopTurnResult(answer: unknown): StopTurnResult {\n const aborted = (answer as StopTurnResult | null | undefined)?.aborted;\n if (typeof aborted !== 'boolean') {\n this.logger?.warn('bpp.stop_turn_answer_unusable', answer);\n return { aborted: false };\n }\n return { aborted };\n }\n\n private async answerStopBackgroundRun(id: string, data: Record<string, unknown>): Promise<void> {\n const channelId = data.channel_id;\n const runId = data.run_id;\n if (\n typeof channelId !== 'string' ||\n channelId === '' ||\n typeof runId !== 'string' ||\n runId === ''\n ) {\n this.send({ type: 'response', id, error: STOP_BACKGROUND_RUN_TARGET_INVALID });\n return;\n }\n try {\n const answer = this.stopBackgroundRunHandler\n ? await this.stopBackgroundRunHandler(channelId, runId)\n : {\n outcome: 'unsupported',\n reason: 'Targeted background-run cancellation is not registered',\n };\n this.send({ type: 'response', id, data: this.asStopBackgroundRunResult(answer) });\n } catch (err) {\n this.logger?.warn('bpp.stop_background_run_handler_failed', err);\n this.send({ type: 'response', id, error: SERVER_REQUEST_FAILED });\n }\n }\n\n private asStopBackgroundRunResult(answer: unknown): StopBackgroundRunResult {\n const candidate = answer as StopBackgroundRunResult | null | undefined;\n if (!candidate || !['stopped', 'not_found', 'unsupported'].includes(candidate.outcome)) {\n return {\n outcome: 'unsupported',\n reason: 'Targeted background-run cancellation returned an unusable answer',\n };\n }\n return {\n outcome: candidate.outcome,\n ...(typeof candidate.reason === 'string' && candidate.reason !== ''\n ? { reason: candidate.reason }\n : {}),\n };\n }\n\n // ---- Task lifecycle output ----\n\n private sendTaskStarted(action: Extract<SemanticAction, { op: 'report_task_started' }>): void {\n const frame: TaskStartedFrame = {\n type: 'task_started',\n task_id: action.taskId,\n agent_id: this.currentAgentId(),\n channel_id: action.channelId,\n subject: action.subject,\n started_at: Date.now(),\n };\n this.send(frame);\n }\n\n private sendTaskFinished(action: Extract<SemanticAction, { op: 'report_task_finished' }>): void {\n const frame: TaskFinishedFrame = {\n type: 'task_finished',\n task_id: action.taskId,\n agent_id: this.currentAgentId(),\n channel_id: action.channelId,\n outcome: action.outcome,\n reason: action.reason ?? '',\n finished_at: Date.now(),\n };\n this.send(frame);\n }\n\n // sendActivity flattens the activity union onto one frame. The union is\n // how a producer says which shape it is reporting; the wire puts the\n // discriminator beside its payload with no wrapper object, matching both the\n // protocol this relays and inbound_message's own `kind`.\n //\n // The frame names no agent: identity is stamped by the server from the\n // authenticated connection, so nothing here can report as another agent.\n private sendActivity(action: Extract<SemanticAction, { op: 'report_activity' }>): void {\n if (action.activity.shape === 'normalized_session_availability') {\n if (this.sessionObservationSupported) this.sendRecovery({ type: 'normalized_session_availability', channel_id: action.channelId, sequence: action.sequence,\n session_control_binding_id: action.activity.sessionControlBindingId, native_session_id: action.activity.nativeSessionId,\n revision: action.activity.revision, status: action.activity.status, ...(action.activity.reason ? { reason: action.activity.reason } : {}) });\n return;\n }\n if (action.activity.shape === 'normalized_timeline_recovery') {\n if (this.sessionObservationSupported) this.sendRecovery({ type: 'normalized_activity_sync_result', channel_id: action.channelId, sequence: action.sequence, timeline_epoch: action.activity.timelineEpoch,\n session_control_binding_id: action.activity.sessionControlBindingId, status: action.activity.status, reason: action.activity.reason });\n return;\n }\n const frame: AgentActivityFrame & Partial<NormalizedTransportRoute> = {\n type: 'agent_activity',\n channel_id: action.channelId,\n sequence: action.sequence,\n shape: action.activity.shape,\n activity_id: '',\n label: '',\n description: '',\n kind: '',\n status: '',\n detail: '',\n parent_id: '',\n subagent: false,\n reason: '',\n stream: '',\n text: '',\n turn_state: '',\n run_id: '',\n run_state: '',\n started_at: 0,\n finished_at: 0,\n stop_supported: false,\n stop_unsupported_reason: '',\n };\n switch (action.activity.shape) {\n case 'activity':\n frame.activity_id = action.activity.id;\n frame.label = action.activity.label ?? '';\n frame.description = action.activity.description ?? '';\n frame.kind = action.activity.kind ?? '';\n frame.status = action.activity.status ?? '';\n frame.detail = action.activity.detail ?? '';\n frame.parent_id = action.activity.parentId ?? '';\n frame.subagent = action.activity.subagent ?? false;\n frame.background = action.activity.background;\n frame.background_state = action.activity.backgroundState;\n frame.follow_up_control = action.activity.followUpControl;\n frame.reason = action.activity.reason ?? '';\n if (action.activity.paths) frame.paths = action.activity.paths;\n break;\n case 'plan':\n frame.plan = action.activity.entries.map((entry) => ({\n label: entry.label,\n status: entry.status,\n }));\n break;\n case 'output':\n frame.stream = action.activity.stream;\n frame.text = action.activity.text;\n break;\n case 'turn':\n frame.turn_state = action.activity.state;\n break;\n case 'background_run':\n frame.run_id = action.activity.runId;\n frame.label = action.activity.label;\n frame.run_state = action.activity.state;\n frame.parent_id = action.activity.parentId ?? '';\n frame.started_at = action.activity.startedAt;\n frame.finished_at = action.activity.finishedAt ?? 0;\n frame.reason = action.activity.reason ?? '';\n frame.stop_supported = action.activity.stopSupported;\n frame.stop_unsupported_reason = action.activity.stopUnsupportedReason ?? '';\n break;\n case 'normalized_timeline_replacement':\n case 'normalized':\n if (action.activity.occurredAt !== undefined) {\n if (!Number.isSafeInteger(action.activity.occurredAt) || action.activity.occurredAt < 0 || action.activity.occurredAt > 8_640_000_000_000_000) { this.traceWrite(frame, 'rejected', undefined, 'invalid_observation_time'); return; }\n frame.occurred_at = action.activity.occurredAt;\n }\n frame.protocol_version = action.activity.protocolVersion;\n if (action.activity.taskId !== undefined) frame.task_id = action.activity.taskId;\n if (action.activity.timelineEpoch) frame.timeline_epoch = action.activity.timelineEpoch;\n frame.event = action.activity.event;\n if (action.activity.sessionCapabilities !== undefined) frame.session_capabilities = action.activity.sessionCapabilities;\n if (action.activity.sessionControlBindingId !== undefined) frame.session_control_binding_id = action.activity.sessionControlBindingId;\n if (action.activity.shape === 'normalized' && action.activity.sessionControlDefault !== undefined) frame.session_control_default = action.activity.sessionControlDefault;\n break;\n }\n if (action.activity.shape === 'normalized' || action.activity.shape === 'normalized_timeline_replacement') {\n if ([frame.channel_id, frame.task_id].some(value => new TextEncoder().encode(value).byteLength > 256)) {\n this.traceWrite(frame, 'rejected', undefined, 'identifier_limit');\n return;\n }\n this.sendNormalized(frame as NormalizedTransportFrame, action.activity.providerId);\n return;\n }\n this.send(frame);\n }\n\n private sendRecovery(frame: import('./session-observation.js').TimelineRecoveryResult | import('./session-observation.js').SessionAvailability): void {\n if (!this.normalizedApplication) return;\n const wrapped = encodeNormalizedApplicationRecovery(frame, () => ++this.normalizedPhysicalSequence);\n if (wrapped) this.send(wrapped);\n }\n\n private sendNormalized(frame: NormalizedTransportFrame, providerId?: string): void {\n if (!this.normalizedApplication) { this.traceWrite(frame, 'rejected', undefined, 'normalized_payload_unsupported'); return; }\n const encode = (value: NormalizedTransportFrame, options: { capability?: NormalizedFragmentCapability; eventId: string }) => encodeNormalizedApplicationTransport(value, { ...options, nextSequence: () => ++this.normalizedPhysicalSequence });\n if (frame.session_control_default && !this.supportsSessionBindings()) return;\n if (!frame.task_id && frame.shape === 'normalized' && !this.supportsSessionBindings()) return;\n if (!this.sessionObservationSupported) { if (frame.shape === 'normalized_timeline_replacement') return; delete frame.timeline_epoch; }\n const eventId = randomUUID();\n const valid = frame.shape === 'normalized_timeline_replacement' ? validTimelineReplacement(frame.event) : isPublicAgentTimelineEvent(frame.event) || isPublicAgentNonTimelineEvent(frame.event)\n || isInteractionRequestedMessage(frame.event) || isInteractionResolvedMessage(frame.event) || isNormalizedAgentSnapshot(frame.event);\n let encoded = valid ? encode(frame, { capability: this.normalizedCapability, eventId })\n : { status: 'rejected' as const, reason: 'invalid_event' as const };\n if (encoded.status === 'rejected' && !this.normalizedCapability && encoded.reason === 'fragmentation_unavailable') {\n const bounded = boundNormalizedFrame(frame);\n if (bounded) encoded = encode(bounded as NormalizedTransportFrame, { eventId });\n }\n let reason: NormalizedTransportFailureReason;\n if (encoded.status === 'encoded') {\n const outcome = this.sendNormalizedBatch(encoded.frames);\n if (outcome !== 'capacity') return;\n reason = 'queue_capacity';\n } else reason = encoded.reason;\n this.traceWrite(frame, 'rejected', undefined, reason);\n if (frame.shape === 'normalized_timeline_replacement') {\n const previous = (frame.event as { previous_epoch?: string }).previous_epoch;\n if (previous && this.sessionObservationSupported) this.sendRecovery({ type: 'normalized_activity_sync_result', channel_id: frame.channel_id, sequence: frame.sequence, timeline_epoch: previous,\n session_control_binding_id: frame.session_control_binding_id, status: 'failed', reason: 'transport_incomplete' });\n return;\n }\n const event = frame.event as { providerId?: unknown; payload?: { request?: { requestId?: string } } };\n const fallback = normalizedTransportError({ ...frame, event: { providerId: providerId ?? event?.providerId } }, {\n reason, eventId, requestId: event?.payload?.request?.requestId,\n });\n const bounded = encode(fallback, { eventId });\n if (bounded.status !== 'encoded' || this.sendNormalizedBatch(bounded.frames) === 'capacity') {\n this.logger?.warn('bpp.normalized_unavailable', { reason, eventId, sequence: frame.sequence });\n this.traceWrite(fallback, 'failed', undefined, 'fallback_unavailable');\n }\n }\n\n private sendMessageBatch(frames: unknown[], reject: (error: BorgeeError) => void, isConnectionCurrent?: () => boolean): void {\n const ws = this.ws;\n const encoded = frames.map(frame => JSON.stringify(frame));\n const sizes = encoded.map(frame => Buffer.byteLength(frame));\n const incomplete = (sent: number): void => reject(new BorgeeError(`send_message delivery outcome unknown (${sent}/${frames.length} frames written); do not retry automatically`, 'bpp.send_message_incomplete'));\n if (!ws || ws.readyState !== WebSocket.OPEN) { incomplete(0); return; }\n if (frames.length !== 1 || sizes.some(size => size > SEND_MESSAGE_FRAME_MAX_BYTES) || ws.bufferedAmount + sizes.reduce((sum, size) => sum + size, 0) > 2 * 1024 * 1024) {\n reject(new BorgeeError('send_message transport queue capacity exceeded', 'bpp.protocol_capacity')); return;\n }\n let sent = 0;\n let failed = false;\n try {\n for (let index = 0; index < encoded.length; index++) {\n if (failed) return;\n if (isConnectionCurrent && !isConnectionCurrent()) {\n if (sent > 0) incomplete(sent);\n else reject(new BorgeeError('captured source connection expired', 'bpp.source_connection_expired'));\n return;\n }\n if (ws !== this.ws || ws.readyState !== WebSocket.OPEN) { incomplete(sent); return; }\n const part = frames[index] as Record<string, unknown>;\n const metadata = { nonce: part.nonce, bytes: sizes[index] };\n ws.send(encoded[index]!, error => {\n const outcome = error ? 'failed' : 'written';\n this.logger?.debug('bpp.send_message_write', { ...metadata, outcome });\n recordProtocolTrace({ stage: 'sdk.write', kind: String(part.type), correlation: { requestId: String(part.nonce) }, payload: metadata, bytes: sizes[index], outcome });\n if (error) { failed = true; incomplete(index); }\n });\n sent++;\n }\n } catch { incomplete(sent); }\n }\n\n /** Admission covers the entire logical event; synchronous sends keep its parts contiguous. */\n private sendNormalizedBatch(frames: unknown[]): 'sent' | 'capacity' | 'incomplete' {\n const ws = this.ws;\n if (!ws || ws.readyState !== WebSocket.OPEN) {\n this.logger?.warn('bpp.normalized_incomplete', { reason: 'socket_closed', sent: 0, total: frames.length });\n return 'incomplete';\n }\n const encoded = frames.map(frame => JSON.stringify(frame));\n const sizes = encoded.map(frame => Buffer.byteLength(frame));\n if (frames.length > 64 || sizes.some(size => size > 32768) || ws.bufferedAmount + sizes.reduce((sum, size) => sum + size, 0) > 2 * 1024 * 1024) return 'capacity';\n let sent = 0;\n try {\n for (let index = 0; index < encoded.length; index++) {\n if (ws !== this.ws || ws.readyState !== WebSocket.OPEN) throw new Error('Normalized batch socket changed');\n ws.send(encoded[index]!, error => {\n this.traceWrite(frames[index], error ? 'failed' : 'written', sizes[index], error ? 'socket_write_failed' : undefined);\n if (error) this.logger?.warn('bpp.normalized_incomplete', { reason: 'socket_write_failed', part: index, total: frames.length });\n });\n sent++;\n }\n return 'sent';\n } catch {\n this.logger?.warn('bpp.normalized_incomplete', { reason: 'socket_send_failed', sent, total: frames.length });\n return 'incomplete';\n }\n }\n\n private sendTyping(action: Extract<SemanticAction, { op: 'report_typing' }>): void {\n // Intentional inline frame (not from frames.generated.ts): agent typing deliberately\n // reuses the human \"typing\" wire shape {type,channel_id} rather than a generated BPP\n // frame; the server handles it on the plugin read loop (server task), no envelope.go churn.\n this.send({ type: 'typing', channel_id: action.channelId });\n }\n\n // ---- Low-level output ----\n\n private traceWrite(frame: unknown, outcome: string, bytes?: number, reason?: string): void {\n const item = frame as Record<string, unknown>;\n if (item?.type !== 'agent_activity') return;\n recordProtocolTrace({ stage: 'sdk.write', kind: 'agent_activity', outcome, bytes, reason,\n correlation: { agentId: this.agentId || this.ctx?.agentId, channelId: item.channel_id as string, taskId: item.task_id as string, sequence: item.sequence as number }, payload: frame });\n }\n\n private send(frame: unknown): void {\n if (!this.isOpen()) { this.traceWrite(frame, 'rejected', undefined, 'socket_closed'); return; }\n try {\n const encoded = JSON.stringify(frame);\n if (!process.env.BORGEE_PROTOCOL_TRACE_DIR) { this.ws!.send(encoded); return; }\n this.ws!.send(encoded, (error?: Error) => {\n this.traceWrite(JSON.parse(encoded), error ? 'failed' : 'written', Buffer.byteLength(encoded), error ? 'socket_write_failed' : undefined);\n if (error) this.logger?.warn('bpp.send_failed', error);\n });\n } catch (err) {\n this.traceWrite(frame, 'failed', undefined, 'socket_send_failed');\n this.logger?.warn('bpp.send_failed', err);\n }\n }\n\n private sendTo(ws: WebSocket, frame: unknown): void {\n if (ws !== this.ws || ws.readyState !== WebSocket.OPEN) return;\n try {\n let encoded = JSON.stringify(frame);\n const response = frame as { type?: string; id?: string } | null;\n if (response?.type === 'response' && Buffer.byteLength(encoded) > APPLICATION_RPC_MAX_BYTES) {\n encoded = JSON.stringify({ type: 'response', id: response.id, error: 'application_response_too_large' });\n if (Buffer.byteLength(encoded) > APPLICATION_RPC_MAX_BYTES) throw new Error('application_response_too_large');\n }\n ws.send(encoded);\n } catch (err) {\n this.traceWrite(frame, 'failed', undefined, 'socket_send_failed');\n this.logger?.warn('bpp.send_failed', err);\n }\n }\n\n private inboundFailure(error: unknown): BorgeeError {\n if (error instanceof BorgeeError) return error;\n return new BorgeeError(\n `inbound dispatch failed: ${String(error)}`,\n 'bpp.inbound_dispatch_failed',\n );\n }\n\n private failTerminal(error: BorgeeError, ws: WebSocket | undefined): void {\n if (this.terminal || ws !== this.ws) return;\n this.logger?.error('bpp.terminal_failure', error);\n this.terminal = true;\n this.online = false; this.sessionBindingsSupported = false;\n this.handlers?.onStateChange({ status: 'error', reason: 'unknown', code: error.code });\n this.rejectReconnectWaiters(error);\n this.rejectAllPending(error);\n if (ws) this.retireSocket(ws);\n try {\n ws?.close();\n } catch {\n // The terminal flag already prevents reconnect; close is best effort.\n }\n }\n\n private rejectAllPending(err: Error): void {\n for (const [nonce, p] of this.pending) {\n this.pending.delete(nonce);\n clearTimeout(p.timer);\n p.reject(err);\n }\n }\n\n private async waitUntilOnline(op: SemanticAction['op'], deadline: number): Promise<void> {\n if (this.online) return;\n if (this.closed || this.terminal || !this.autoReconnect) {\n throw new BorgeeError('transport not connected', 'bpp.not_connected');\n }\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const settle = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n if (timer) clearTimeout(timer);\n this.reconnectWaiters.delete(waiter);\n callback();\n };\n const waiter: ReconnectWaiter = {\n resolve: () => settle(resolve),\n reject: (error: Error) => settle(() => reject(error)),\n };\n this.reconnectWaiters.add(waiter);\n if (!this.reconnectWaiters.has(waiter)) return;\n const remaining = Math.max(0, deadline - Date.now());\n timer = setTimeout(() => {\n settle(() =>\n reject(new BorgeeError(`semantic_action ${op} timed out`, 'bpp.action_timeout')),\n );\n }, remaining);\n if (this.online) this.resolveReconnectWaiters();\n });\n }\n\n private resolveReconnectWaiters(): void {\n if (!this.online) return;\n for (const waiter of [...this.reconnectWaiters]) waiter.resolve();\n }\n\n private rejectReconnectWaiters(error: Error): void {\n for (const waiter of [...this.reconnectWaiters]) waiter.reject(error);\n }\n}\n\n// ---- Pure mappings ----\n\n/** Map an HTTP base URL to the plugin WebSocket endpoint. */\nexport function pluginWsUrl(baseUrl: string): string {\n const trimmed = baseUrl.replace(/\\/+$/, '');\n const wsBase = trimmed.replace(/^http:/, 'ws:').replace(/^https:/, 'wss:');\n return `${wsBase}/ws/plugin`;\n}\n\n/** Encode a SemanticAction as the operation-specific server payload. */\nexport function encodeActionPayload(action: SemanticAction): Record<string, unknown> {\n switch (action.op) {\n case 'send_message':\n if ('applicationData' in action) throw new BorgeeError('Agent message application data is not supported', 'bpp.application_data_unsupported');\n return {\n channel_id: action.channelId,\n content: action.body,\n reply_to_id: action.replyToId,\n content_type: action.contentType,\n };\n case 'edit_message':\n return { message_id: action.messageId, content: action.body };\n case 'delete_message':\n return { message_id: action.messageId };\n case 'react':\n return {\n message_id: action.messageId,\n emoji: action.emoji,\n removed: action.removed ?? false,\n };\n case 'create_dm':\n return { user_id: action.userId };\n case 'get_me':\n return {};\n case 'read_channel_history':\n return {\n channel_id: action.channelId,\n before: action.before,\n after: action.after,\n limit: action.limit,\n };\n case 'list_channel_files':\n return { channel_id: action.channelId };\n case 'read_channel_file':\n return { channel_id: action.channelId, path: action.path, text_only: action.textOnly };\n case 'publish_channel_file':\n return {\n channel_id: action.channelId,\n path: action.path,\n content_type: action.contentType,\n base64: action.base64,\n overwrite: action.overwrite ?? false,\n };\n case 'list_users':\n case 'list_channels':\n return {};\n case 'list_zones':\n validateListZonesInput(action);\n return { guild_id: action.guildId, limit: action.limit, after: action.after };\n case 'create_channel':\n validateChannelPlacement(action.parentId);\n return {\n guild_id: action.guildId,\n name: action.name,\n parent_id: action.parentId,\n topic: action.topic,\n visibility: action.visibility,\n member_ids: action.memberIds,\n };\n case 'update_channel':\n rejectChannelPlacementUpdate(action);\n return {\n channel_id: action.channelId,\n name: action.name,\n visibility: action.visibility,\n archived: action.archived,\n };\n case 'set_topic':\n return { channel_id: action.channelId, topic: action.topic };\n case 'delete_channel':\n return { channel_id: action.channelId };\n case 'create_task':\n return {\n channel_id: action.channelId,\n title: action.title,\n description: action.description,\n assignee_id: action.assigneeId,\n heartbeat_interval_ms: action.heartbeat_interval_ms,\n heartbeat_prompt: action.heartbeat_prompt,\n };\n case 'list_tasks':\n // Send only the scope actually supplied \u2014 both keys at once is\n // ambiguous and the server rejects it.\n return action.channelId ? { channel_id: action.channelId } : { guild_id: action.guildId };\n case 'get_task':\n return { task_id: action.taskId };\n case 'update_task':\n // Per-field `!== undefined`: an assigneeId of '' is the valid intent\n // \"unassign\", which a truthiness check would fold into \"unchanged\".\n return {\n task_id: action.taskId,\n ...(action.status !== undefined ? { status: action.status } : {}),\n ...(action.assigneeId !== undefined ? { assignee_id: action.assigneeId } : {}),\n ...(action.title !== undefined ? { title: action.title } : {}),\n ...(action.description !== undefined ? { description: action.description } : {}),\n ...(action.heartbeat_interval_ms !== undefined\n ? { heartbeat_interval_ms: action.heartbeat_interval_ms }\n : {}),\n ...(action.heartbeat_prompt !== undefined\n ? { heartbeat_prompt: action.heartbeat_prompt }\n : {}),\n };\n case 'set_task_property':\n return { task_id: action.taskId, key: action.key, value: action.value };\n case 'delete_task_property':\n return { task_id: action.taskId, key: action.key };\n case 'list_task_property_definitions':\n return {};\n default:\n return {};\n }\n}\n\n/** The semantic_action_result payload (a JSON string) decoded into the op's domain object. */\nexport function decodeActionResult(op: SemanticAction['op'], payloadJSON: string, zoneInput?: ListZonesInput): ActionResult {\n if (op === 'list_zones' || op === 'list_channels' || op === 'create_channel' || op === 'update_channel') {\n let value: unknown;\n try {\n value = JSON.parse(payloadJSON);\n } catch (cause) {\n throw new BorgeeError('Invalid JSON in channel result', 'bpp.invalid_result', { cause });\n }\n if (op === 'list_zones') return decodeZonePage(value, zoneInput);\n if (op === 'list_channels') return decodeChannels(value);\n return decodeChannel(value);\n }\n const p = safeParseJSON(payloadJSON) as Record<string, unknown>;\n switch (op) {\n case 'send_message':\n return { messageId: String(p.message_id ?? ''),\n ...(typeof p.channel_id === 'string' ? { channelId: p.channel_id } : {}),\n ...(typeof p.created_at === 'number' ? { createdAt: p.created_at } : {}),\n } satisfies SentMessage;\n case 'create_dm':\n return { channelId: String(p.channel_id ?? '') };\n case 'get_me':\n return {\n id: String(p.id ?? ''),\n displayName: String(p.display_name ?? ''),\n kind: p.role === 'agent' ? 'agent' : 'user',\n } satisfies User;\n case 'edit_message':\n case 'delete_message':\n case 'react':\n return undefined; // These client methods return void.\n case 'read_channel_history': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((m) => ({\n id: String(m.id ?? ''),\n channelId: String(m.channel_id ?? ''),\n authorId: String(m.author_id ?? ''),\n body: String(m.body ?? ''),\n contentType: m.content_type ? String(m.content_type) : undefined,\n type: m.msg_type ? String(m.msg_type) : m.type ? String(m.type) : undefined,\n replyToId: m.reply_to_id ? String(m.reply_to_id) : undefined,\n ...(m.application_data === undefined ? {} : { applicationData: m.application_data }),\n createdAt: Number(m.created_at ?? 0),\n editedAt: m.edited_at != null ? Number(m.edited_at) : undefined,\n })) satisfies Message[];\n }\n case 'list_channel_files': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((file) => ({\n id: String(file.id ?? ''),\n ownerUserId: String(file.owner_user_id ?? ''),\n channelId: String(file.channel_id ?? ''),\n path: String(file.path ?? ''),\n parentPath: String(file.parent_path ?? ''),\n name: String(file.name ?? ''),\n isDirectory: Boolean(file.is_directory),\n mimeType: String(file.mime_type ?? ''),\n sizeBytes: Number(file.size_bytes ?? 0),\n source: String(file.source ?? ''),\n sourceMessageId: String(file.source_message_id ?? ''),\n createdAt: Number(file.created_at ?? 0),\n updatedAt: Number(file.updated_at ?? 0),\n })) satisfies ChannelFile[];\n }\n case 'read_channel_file': {\n const content = p as Record<string, unknown>;\n const extraction = content.extraction as Record<string, unknown> | undefined;\n const structure = extraction?.structure as Record<string, unknown> | undefined;\n const headings = Array.isArray(structure?.headings)\n ? (structure.headings as Record<string, unknown>[])\n : [];\n const chunks = Array.isArray(extraction?.chunks)\n ? (extraction.chunks as Record<string, unknown>[])\n : [];\n const warnings = Array.isArray(extraction?.warnings)\n ? (extraction.warnings as Record<string, unknown>[])\n : [];\n return {\n path: String(content.path ?? ''),\n filename: String(content.filename ?? ''),\n contentType: String(content.content_type ?? ''),\n sizeBytes: Number(content.size_bytes ?? 0),\n ...(content.base64 != null ? { base64: String(content.base64) } : {}),\n ...(content.text != null ? { text: String(content.text) } : {}),\n ...(extraction != null\n ? {\n extraction: {\n format: String(extraction.format ?? ''),\n extractor: String(extraction.extractor ?? ''),\n status: String(extraction.status ?? 'failed') as\n | 'complete'\n | 'degraded'\n | 'unavailable'\n | 'failed',\n encoding: String(extraction.encoding ?? ''),\n sha256: String(extraction.sha256 ?? ''),\n normalizedSizeBytes: Number(extraction.normalized_size_bytes ?? 0),\n byteOrderMarkRemoved: Boolean(extraction.byte_order_mark_removed),\n ...(structure != null\n ? {\n structure: {\n kind: String(structure.kind ?? 'text') as\n | 'text'\n | 'document'\n | 'object'\n | 'array'\n | 'scalar'\n | 'multi-document',\n ...(structure.document_count != null\n ? { documentCount: Number(structure.document_count) }\n : {}),\n ...(headings.length > 0\n ? {\n headings: headings.map((heading) => ({\n level: Number(heading.level ?? 0),\n title: String(heading.title ?? ''),\n startLine: Number(heading.start_line ?? 0),\n endLine: Number(heading.end_line ?? 0),\n })),\n }\n : {}),\n },\n }\n : {}),\n chunks: chunks.map((chunk) => ({\n index: Number(chunk.index ?? 0),\n startByte: Number(chunk.start_byte ?? 0),\n endByte: Number(chunk.end_byte ?? 0),\n startLine: Number(chunk.start_line ?? 0),\n endLine: Number(chunk.end_line ?? 0),\n })),\n warnings: warnings.map((warning) => ({\n code: String(warning.code ?? ''),\n message: String(warning.message ?? ''),\n })),\n },\n }\n : {}),\n } satisfies ChannelFileContent;\n }\n case 'publish_channel_file': {\n const file = p as Record<string, unknown>;\n return {\n id: String(file.id ?? ''),\n ownerUserId: String(file.owner_user_id ?? ''),\n channelId: String(file.channel_id ?? ''),\n path: String(file.path ?? ''),\n parentPath: String(file.parent_path ?? ''),\n name: String(file.name ?? ''),\n isDirectory: Boolean(file.is_directory),\n mimeType: String(file.mime_type ?? ''),\n sizeBytes: Number(file.size_bytes ?? 0),\n source: String(file.source ?? ''),\n sourceMessageId: String(file.source_message_id ?? ''),\n createdAt: Number(file.created_at ?? 0),\n updatedAt: Number(file.updated_at ?? 0),\n } satisfies ChannelFile;\n }\n case 'list_users': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((u) => ({\n id: String(u.id ?? ''),\n displayName: String(u.display_name ?? ''),\n kind: u.kind === 'agent' ? 'agent' : 'user',\n })) satisfies User[];\n }\n case 'set_topic':\n case 'delete_channel':\n return undefined; // client methods return void\n case 'create_task':\n case 'get_task':\n case 'update_task':\n case 'set_task_property':\n case 'delete_task_property':\n return decodeTask(p);\n case 'list_task_property_definitions': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map((d) => ({\n key: String(d.key ?? ''),\n label: String(d.label ?? ''),\n render: (d.render === 'url' || d.render === 'identifier'\n ? d.render\n : 'text') as TaskPropertyRender,\n })) satisfies TaskPropertyDefinition[];\n }\n case 'list_tasks': {\n const arr = Array.isArray(p) ? (p as Record<string, unknown>[]) : [];\n return arr.map(decodeTask) satisfies Task[];\n }\n default:\n return p;\n }\n}\n\n/**\n * Task wire shape (snake_case) -> SDK domain object (camelCase), as Message does.\n *\n * Every field taskWire sends is decoded here. A field the server sends and this\n * function drops is invisible to plugins and silently un-round-trippable \u2014 a\n * plugin can write a heartbeat setting and never read it back.\n */\nfunction decodeTask(t: Record<string, unknown>): Task {\n return {\n id: String(t.id ?? ''),\n channelId: String(t.channel_id ?? ''),\n guildId: String(t.guild_id ?? ''),\n seq: Number(t.seq ?? 0),\n title: String(t.title ?? ''),\n description: String(t.description ?? ''),\n status: String(t.status ?? ''),\n // Nullable FK: unassigned stays null rather than decaying to ''.\n assigneeId: t.assignee_id != null ? String(t.assignee_id) : null,\n createdBy: String(t.created_by ?? ''),\n messageId: t.message_id != null ? String(t.message_id) : null,\n threadId: t.thread_id != null ? String(t.thread_id) : null,\n createdAt: Number(t.created_at ?? 0),\n updatedAt: Number(t.updated_at ?? 0),\n heartbeatIntervalMs: Number(t.heartbeat_interval_ms ?? 0),\n heartbeatPrompt: String(t.heartbeat_prompt ?? ''),\n participants: Array.isArray(t.participants) ? t.participants.map((p) => String(p)) : [],\n properties: decodeTaskProperties(t.properties),\n };\n}\n\n/**\n * Property values are strings on the wire; anything else means the server and\n * this SDK disagree about the shape, so it is dropped rather than coerced into\n * a plausible-looking \"[object Object]\".\n */\nfunction decodeTaskProperties(raw: unknown): Record<string, string> {\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) return {};\n const out: Record<string, string> = {};\n for (const [key, value] of Object.entries(raw as Record<string, unknown>)) {\n if (typeof value === 'string') out[key] = value;\n }\n return out;\n}\n\n/** InboundMessageFrame \u2192 InboundMessageEvent, dispatched on the frame's kind. */\nexport function mapInbound(frame: InboundMessageFrame, sourceCurrent?: () => boolean, target?: InboundMessageEvent['sessionTarget']): InboundMessageEvent {\n const kind = frame.kind as InboundKind;\n const base: InboundMessageEvent = {\n kind,\n channelId: frame.channel_id,\n channelType: frame.channel_type,\n ...(frame.conversation_context\n ? {\n conversationContext: {\n guildId: frame.conversation_context.guild_id,\n topLevelChannelId: frame.conversation_context.top_level_channel_id,\n ...(frame.conversation_context.thread_id\n ? { threadId: frame.conversation_context.thread_id }\n : {}),\n ...(frame.conversation_context.task_id\n ? { taskId: frame.conversation_context.task_id }\n : {}),\n },\n }\n : {}),\n authorName: frame.author_name,\n createdAt: frame.created_at,\n };\n if (target) {\n base.sessionTarget = target;\n if (sourceCurrent) base.sourceCurrent = sourceCurrent;\n }\n if (frame.execution_id && frame.telemetry_context) {\n base.executionGrant = {\n executionId: frame.execution_id,\n telemetryContext: frame.telemetry_context,\n };\n }\n switch (kind) {\n case 'message':\n case 'mention': {\n base.message = mapMessage(frame);\n break;\n }\n case 'edited': {\n const m = mapMessage(frame);\n m.editedAt = frame.created_at;\n base.message = m;\n break;\n }\n case 'deleted':\n base.messageId = frame.message_id;\n break;\n case 'reaction':\n base.messageId = frame.message_id;\n base.reaction = {\n emoji: frame.emoji,\n userId: frame.reactor_id,\n added: frame.reaction_added,\n };\n break;\n default:\n break;\n }\n return base;\n}\n\nfunction mapMessage(frame: InboundMessageFrame): Message {\n const message: Message = {\n id: frame.message_id,\n channelId: frame.channel_id,\n authorId: frame.author_id,\n body: frame.body,\n contentType: frame.content_type || undefined,\n ...(frame.application_data === undefined ? {} : { applicationData: frame.application_data }),\n type: frame.msg_type || undefined,\n createdAt: frame.created_at,\n };\n if (frame.attachments && frame.attachments.length > 0) {\n message.attachments = frame.attachments.map((a) => ({\n url: a.url,\n filename: a.filename || undefined,\n contentType: a.content_type,\n sizeBytes: a.size_bytes || undefined,\n }));\n }\n return message;\n}\n\nfunction safeParseJSON(s: string): unknown {\n if (!s) return undefined;\n try {\n return JSON.parse(s);\n } catch {\n return undefined;\n }\n}\n\nfunction rawToString(data: unknown): string {\n if (typeof data === 'string') return data;\n if (data instanceof Buffer) return data.toString('utf8');\n if (data instanceof ArrayBuffer) return Buffer.from(data).toString('utf8');\n if (Array.isArray(data)) return Buffer.concat(data as Buffer[]).toString('utf8');\n return String(data);\n}\n", "import createWebSocketStream from './lib/stream.js';\nimport extension from './lib/extension.js';\nimport PerMessageDeflate from './lib/permessage-deflate.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport subprotocol from './lib/subprotocol.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport {\n createWebSocketStream,\n extension,\n PerMessageDeflate,\n Receiver,\n Sender,\n subprotocol,\n WebSocket,\n WebSocketServer\n};\n\nexport default WebSocket;\n", "import type { PermissionDenied } from './types.js';\n\n// Codes retain the server's machine-readable failure classification.\nexport class BorgeeError extends Error {\n readonly code: string;\n constructor(message: string, code: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'BorgeeError';\n this.code = code;\n }\n}\n\n// Permission failures include the capability and scope needed by the caller.\nexport class PermissionDeniedError extends BorgeeError {\n readonly requestId?: string;\n readonly attemptedAction: string;\n readonly requiredCapability?: string;\n readonly currentScope?: string;\n\n constructor(info: PermissionDenied) {\n super(info.reason ?? `permission denied: ${info.attemptedAction}`, 'permission_denied');\n this.name = 'PermissionDeniedError';\n this.requestId = info.requestId;\n this.attemptedAction = info.attemptedAction;\n this.requiredCapability = info.requiredCapability;\n this.currentScope = info.currentScope;\n }\n}\n", "import { BorgeeError } from './errors.js';\nimport type { ListZonesInput } from './types.js';\n\nexport const isZoneId = (value: unknown): value is string =>\n typeof value === 'string' && /^[A-Za-z0-9_-]{1,128}$/.test(value);\n\nexport const validateChannelPlacement = (parentId: unknown): void => {\n if (parentId !== null && (!isZoneId(parentId) || parentId === 'null')) {\n throw new BorgeeError('parentId is required: pass null for Default or a Zone ID', 'channel.placement_invalid');\n }\n};\n\nexport const rejectChannelPlacementUpdate = (input: object): void => {\n for (const field of ['parentId', 'parent_id', 'channelType', 'channel_type', 'kind']) {\n if (Object.hasOwn(input, field)) {\n throw new BorgeeError(`${field} cannot be changed after channel creation`, 'channel.field_immutable');\n }\n }\n};\n\nexport const validateListZonesInput = (input: ListZonesInput): void => {\n if (!isZoneId(input.guildId)) {\n throw new BorgeeError('guildId must be a nonempty opaque ID', 'zone.input_invalid');\n }\n if (input.limit !== undefined && (!Number.isInteger(input.limit) || input.limit < 1 || input.limit > 50)) {\n throw new BorgeeError('limit must be an integer between 1 and 50', 'zone.input_invalid');\n }\n if (input.after !== undefined && !isZoneId(input.after)) {\n throw new BorgeeError('after must be a nonempty opaque Zone ID', 'zone.input_invalid');\n }\n};\n", "import { BorgeeError } from '../errors.js';\nimport { isZoneId } from '../channel-contracts.js';\nimport type { Channel, ListZonesInput, ZoneDTO, ZonePageDTO } from '../types.js';\n\nconst invalidResult = (field: string): BorgeeError =>\n new BorgeeError(`Invalid channel result: ${field}`, 'bpp.invalid_result');\n\nconst record = (value: unknown, field: string): Record<string, unknown> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw invalidResult(field);\n return value as Record<string, unknown>;\n};\n\nconst requiredString = (value: unknown, field: string): string => {\n if (typeof value !== 'string') throw invalidResult(field);\n return value;\n};\n\nexport const decodeChannel = (value: unknown): Channel => {\n const channel = record(value, 'channel');\n if (!isZoneId(channel.id)) throw invalidResult('id');\n if (channel.parent_id !== null && !isZoneId(channel.parent_id)) throw invalidResult('parent_id');\n return {\n id: channel.id,\n name: requiredString(channel.name, 'name'),\n kind: requiredString(channel.kind, 'kind'),\n parentId: channel.parent_id,\n };\n};\n\nexport const decodeChannels = (value: unknown): Channel[] => {\n if (!Array.isArray(value)) throw invalidResult('channels');\n return value.map(decodeChannel);\n};\n\nconst decodeZone = (value: unknown): ZoneDTO => {\n const zone = record(value, 'zone');\n if (!isZoneId(zone.id)) throw invalidResult('zone.id');\n const name = requiredString(zone.name, 'zone.name');\n if (/^\\p{White_Space}|\\p{White_Space}$/u.test(name) || [...name].length < 1 || [...name].length > 100 || /[\\p{Cc}\\p{Cs}]/u.test(name)) {\n throw invalidResult('zone.name');\n }\n return { id: zone.id, name };\n};\n\nexport const decodeZonePage = (value: unknown, input?: ListZonesInput): ZonePageDTO => {\n const page = record(value, 'Zone page');\n if (!Array.isArray(page.zones)) throw invalidResult('zones');\n const limit = input?.limit ?? 20;\n if (page.zones.length > limit) throw invalidResult('zones exceed the requested limit');\n const zones = page.zones.map(decodeZone);\n let previous = input?.after;\n for (const zone of zones) {\n if (previous !== undefined && zone.id <= previous) throw invalidResult('Zone IDs must follow the cursor in ascending order');\n previous = zone.id;\n }\n const nextAfter = page.next_after;\n if (nextAfter !== null) {\n if (!isZoneId(nextAfter) || zones.length !== limit || nextAfter !== zones.at(-1)?.id) {\n throw invalidResult('next_after must be null or the final ID of a full page');\n }\n }\n return { zones, nextAfter };\n};\n", "import type { AgentActivity, ReportActivityInput } from './types.js';\n\n/**\n * How long one shape of one activity waits before it may be reported again.\n *\n * A producer's progress callbacks fire far faster than anyone reads: an agent\n * streaming an answer produces tens of updates a second. Roughly six a second\n * is about as fast as a reader can follow a line that keeps changing, so this\n * is where the rail's rate is set \u2014 every hop downstream carries whatever\n * arrives, and the browser's own coalescing is a second line of defence rather\n * than the first.\n */\nconst DEFAULT_THROTTLE_MS = 150;\n\n/**\n * How much of a stream's tail travels.\n *\n * Deliberately not an option. It is a bound on what this rail carries rather\n * than a preference: the server truncates on the way in regardless, so a caller\n * allowed to raise it would buy nothing but bytes discarded a hop later.\n */\nconst OUTPUT_TAIL_CHARS = 2000;\n\n/**\n * Runs a callback later, and answers a function that calls it off.\n *\n * Injected so that the one place the runtimes genuinely differ stays in one\n * small adapter. The default holds nothing open: a pending window is a report\n * nothing recovers, and delaying a process's exit to deliver one is the wrong\n * trade \u2014 which is also what keeps this SDK and the Python one agreeing at\n * shutdown, since an asyncio timer cannot hold its loop open at all.\n */\nexport type ActivityScheduler = (callback: () => void, delayMs: number) => () => void;\n\nconst defaultScheduler: ActivityScheduler = (callback, delayMs) => {\n const timer = setTimeout(callback, delayMs);\n timer.unref?.(); // no-op in a browser, where setTimeout answers a number\n return () => clearTimeout(timer);\n};\n\n/** Cuts on a code point boundary: a tail beginning on a low surrogate renders as a replacement glyph. */\nfunction outputTail(text: string): string {\n if (text.length <= OUTPUT_TAIL_CHARS) {\n return text;\n }\n const tail = text.slice(text.length - OUTPUT_TAIL_CHARS);\n return /^[\\uDC00-\\uDFFF]/.test(tail) ? tail.slice(1) : tail;\n}\n\n/** Every shape a producer reports. The turn boundary is this class's own and never arrives from outside. */\ntype ReportedShape = Exclude<AgentActivity, { shape: 'turn' | 'background_run' | 'normalized' | 'normalized_timeline_replacement' | 'normalized_timeline_recovery' | 'normalized_session_availability' }>;\n\n/**\n * Which reports supersede each other, matching how the server folds them in: a\n * tool call is superseded only by a later report about the same call, a plan is\n * replaced whole so any plan supersedes any earlier one, and the two text\n * streams are independent tails.\n *\n * Keying per activity id rather than per agent is what keeps a burst of ten\n * distinct tool calls ten reports instead of one.\n */\nfunction throttleKey(activity: ReportedShape): string {\n switch (activity.shape) {\n case 'activity':\n return `activity:${activity.id}`;\n case 'plan':\n return 'plan';\n case 'output':\n return `output:${activity.stream}`;\n }\n}\n\ninterface ThrottleWindow {\n latest: ReportedShape | null;\n cancel: (() => void) | null;\n}\n\n/** What a caller chooses. Delivery and the counter are the client's, not a producer's. */\nexport interface ReportTurnActivityInput {\n channelId: string;\n /**\n * Whether this turn is still the one its channel is running. Asked again at\n * every send rather than once at the start, because a window opened by one\n * turn can close after another has replaced it \u2014 including the window a\n * turn's own ending would flush. A producer with no notion of supersession\n * leaves it out.\n */\n canReport?: () => boolean;\n throttleMs?: number;\n}\n\n/** Everything the reporter needs. `deliver` is the client's own send, which stamps the sequence. */\nexport interface TurnActivityReporterOptions extends ReportTurnActivityInput {\n deliver: (input: ReportActivityInput) => void;\n scheduler?: ActivityScheduler;\n}\n\n/**\n * Reports one turn's work, bounded at the producer.\n *\n * One of these belongs to one turn, so the windows it holds are that turn's and\n * nothing carries into the next. Its two boundary reports are what let a reader\n * say whether an agent is working without inferring it from an entry nobody\n * closed, and they ride the same frame as the shapes they bracket, so an ending\n * cannot overtake the work it ends.\n *\n * Coalescing to the newest value loses nothing because every shape carries\n * absolute state rather than a delta. That is the property the whole design\n * rests on, and a shape that ever carried a delta would break it.\n *\n * One caveat a reader cannot infer: a window still open when the process exits\n * is dropped rather than delivered, in both this SDK and the Python one. The\n * trailing value is delivered if the process lives long enough, which `end()`\n * makes true for every turn that ends normally by draining before it reports\n * the boundary.\n */\nexport class TurnActivityReporter {\n private readonly windows = new Map<string, ThrottleWindow>();\n private readonly throttleMs: number;\n private readonly scheduler: ActivityScheduler;\n private ended = false;\n\n constructor(private readonly options: TurnActivityReporterOptions) {\n this.throttleMs = options.throttleMs ?? DEFAULT_THROTTLE_MS;\n this.scheduler = options.scheduler ?? defaultScheduler;\n }\n\n start(): void {\n this.report({ shape: 'turn', state: 'started' });\n }\n\n progress(activity: ReportedShape): void {\n if (this.ended) {\n return;\n }\n this.offer(\n activity.shape === 'output'\n ? { ...activity, text: outputTail(activity.text) }\n : activity,\n );\n }\n\n /**\n * Ends the turn. What the windows still hold goes first, so the last thing a\n * reader sees of a turn is that turn's own last word rather than whatever\n * happened to fall outside a window.\n */\n end(): void {\n if (this.ended) {\n return;\n }\n this.ended = true;\n this.drain();\n this.report({ shape: 'turn', state: 'ended' });\n }\n\n private offer(activity: ReportedShape): void {\n const key = throttleKey(activity);\n const open = this.windows.get(key);\n if (open) {\n open.latest = activity;\n return;\n }\n this.report(activity);\n this.openWindow(key);\n }\n\n private openWindow(key: string): void {\n const window: ThrottleWindow = { latest: null, cancel: null };\n window.cancel = this.scheduler(() => {\n this.windows.delete(key);\n if (window.latest) {\n this.offer(window.latest);\n }\n }, this.throttleMs);\n this.windows.set(key, window);\n }\n\n private drain(): void {\n const held = [...this.windows.values()];\n this.windows.clear();\n for (const window of held) {\n window.cancel?.();\n if (window.latest) {\n this.report(window.latest);\n }\n }\n }\n\n private report(activity: AgentActivity): void {\n if (this.options.canReport && !this.options.canReport()) {\n return;\n }\n this.options.deliver({ channelId: this.options.channelId, activity });\n }\n}\n", "import { recordProtocolTrace } from './protocol-trace.js';\nimport { BppTransport } from './bpp/bpp-transport.js';\nimport { BorgeeError } from './errors.js';\nimport { validateChannelPlacement, rejectChannelPlacementUpdate, validateListZonesInput } from './channel-contracts.js';\nimport { TurnActivityReporter, type ReportTurnActivityInput } from './activity-reporter.js';\nimport type { Transport, TransportContext, InboundHandlers } from './transport.js';\nimport type {\n Channel,\n ChannelFile,\n ChannelFileContent,\n PublishChannelFileInput,\n ListZonesInput,\n ZonePageDTO,\n ReportActivityInput,\n ConfigUpdate,\n ConfigUpdateHandler,\n ConnectionState,\n ExecutionTelemetryAck,\n ExecutionTelemetryFrame,\n CreateChannelInput,\n CreateTaskInput,\n DeleteChannelInput,\n DeleteTaskPropertyInput,\n InboundMessageEvent,\n Logger,\n Message,\n PermissionDenied,\n ReadHistoryInput,\n ReportTaskFinishedInput,\n ReportTaskStartedInput,\n SendMessageInput,\n SentMessage,\n ServerRequestHandler,\n ServerRequestContext,\n SetTaskPropertyInput,\n SetTopicInput,\n StopTurnHandler,\n StopBackgroundRunHandler,\n Task,\n TaskPropertyDefinition,\n UpdateChannelInput,\n UpdateTaskInput,\n Unsubscribe,\n User,\n} from './types.js';\n\nexport interface BorgeePluginOptions {\n baseUrl: string;\n apiKey: string;\n agentId?: string; // Omit to resolve the Agent through get_me during connect.\n pluginId?: string;\n providerOutputMode?: 'normalized' | 'legacy';\n normalizedActivitySync?: boolean;\n sessionControl?: boolean;\n sessionBindings?: boolean;\n sessionDirectory?: boolean;\n sessionManagement?: boolean;\n sessionRelations?: boolean;\n sessionObservation?: boolean;\n connectionLiveness?: import('./types.js').ConnectionLivenessPolicy;\n sessionInputOperations?: () => readonly ('start_turn' | 'steer' | 'next_turn')[];\n logger?: Logger;\n configUpdateHandler?: ConfigUpdateHandler;\n configApplyTimeoutMs?: number;\n}\n\ninterface EventMap {\n message: InboundMessageEvent;\n configUpdate: ConfigUpdate;\n permissionDenied: PermissionDenied;\n connectionState: ConnectionState;\n executionTelemetryAck: ExecutionTelemetryAck;\n}\n\nexport interface BorgeePluginClient {\n connect(): Promise<void>;\n close(): Promise<void>;\n readonly agentId: string;\n readonly connectionState: ConnectionState;\n\n sendMessage(input: SendMessageInput, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<SentMessage>;\n editMessage(input: { messageId: string; body: string }, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<void>;\n deleteMessage(input: { messageId: string }, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<void>;\n react(input: { messageId: string; emoji: string }, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<void>;\n unreact(input: { messageId: string; emoji: string }): Promise<void>;\n readHistory(input: ReadHistoryInput): Promise<Message[]>;\n createDm(input: { userId: string }): Promise<{ channelId: string }>;\n getMe(): Promise<User>;\n listUsers(): Promise<User[]>;\n listChannelFiles(input: { channelId: string }): Promise<ChannelFile[]>;\n readChannelFile(input: { channelId: string; path: string; textOnly: boolean }): Promise<ChannelFileContent>;\n publishChannelFile(input: PublishChannelFileInput): Promise<ChannelFile>;\n listChannels(): Promise<Channel[]>;\n listZones(input: ListZonesInput): Promise<ZonePageDTO>;\n createChannel(input: CreateChannelInput): Promise<Channel>;\n updateChannel(input: UpdateChannelInput): Promise<Channel>;\n setTopic(input: SetTopicInput): Promise<void>;\n deleteChannel(input: DeleteChannelInput): Promise<void>;\n\n // Task CRUD (BPP semantic actions)\n createTask(input: CreateTaskInput): Promise<Task>;\n listTasks(input: { channelId: string }): Promise<Task[]>;\n listGuildTasks(input: { guildId: string }): Promise<Task[]>;\n getTask(input: { taskId: string }): Promise<Task>;\n updateTask(input: UpdateTaskInput): Promise<Task>;\n\n // Task properties (one key per call)\n setTaskProperty(input: SetTaskPropertyInput): Promise<Task>;\n deleteTaskProperty(input: DeleteTaskPropertyInput): Promise<Task>;\n listTaskPropertyDefinitions(): Promise<TaskPropertyDefinition[]>;\n\n reportTaskStarted(input: ReportTaskStartedInput): void;\n reportTaskFinished(input: ReportTaskFinishedInput): void;\n\n /**\n * Report what this agent is doing inside a turn to everyone who may read the\n * channel. Fire-and-forget and never persisted: what is lost is a strip that\n * stays stale until the next report, never a fact.\n */\n readonly sessionBindingsSupported: boolean;\n reportActivity(input: ReportActivityInput): void;\n\n /** Sends metadata-only execution telemetry. Delivery durability is owned by the caller. */\n reportExecutionTelemetry(frame: ExecutionTelemetryFrame): void;\n\n /**\n * Open a reporter for one turn: it brackets the turn with its boundaries and\n * bounds how often a shape may be reported, so a producer whose progress\n * callbacks fire tens of times a second does not put that on the wire.\n */\n reportTurnActivity(input: ReportTurnActivityInput): TurnActivityReporter;\n\n /** Emit one typing pulse for channelId. Fire-and-forget. */\n reportTyping(channelId: string): void;\n\n /** Emit a \"typing\" keepalive for channelId immediately and every 2s until the returned stop() is called. Fire-and-forget. */\n startTyping(channelId: string): () => void;\n\n // Register one server-to-plugin request hook. Passing undefined clears it;\n // transports without a reverse request channel treat this as a no-op.\n onServerRequest(handler: ServerRequestHandler | undefined): void;\n\n /**\n * Register the handler asked to stop the turn running in one channel.\n * Registering it takes stop_turn away from any onServerRequest callback,\n * which keeps serving every other action; pass undefined to hand it back.\n * With neither registered the SDK answers { aborted: false } itself, and so\n * does whichever handler answers without a boolean `aborted` \u2014 a callback\n * that does not implement stopping aborted nothing, which is what false says.\n */\n onStopTurn(handler: StopTurnHandler | undefined): void;\n\n /** Register targeted cancellation for one background run. Missing handlers explicitly answer unsupported. */\n onStopBackgroundRun(handler: StopBackgroundRunHandler | undefined): void;\n\n on<K extends keyof EventMap>(event: K, handler: (e: EventMap[K]) => void): Unsubscribe;\n}\n\nconst noopLogger: Logger = {\n debug() {},\n info() {},\n warn() {},\n error() {},\n};\n\nclass Client implements BorgeePluginClient {\n private readonly opts: BorgeePluginOptions;\n private readonly t: Transport;\n private readonly logger: Logger;\n private _agentId: string;\n private activitySequence = 0;\n private _state: ConnectionState = { status: 'connecting' };\n private readonly listeners: { [K in keyof EventMap]: Set<(e: EventMap[K]) => void> } = {\n message: new Set(),\n configUpdate: new Set(),\n permissionDenied: new Set(),\n connectionState: new Set(),\n executionTelemetryAck: new Set(),\n };\n\n constructor(opts: BorgeePluginOptions, transport: Transport) {\n this.opts = opts;\n this.t = transport;\n this.logger = opts.logger ?? noopLogger;\n this._agentId = opts.agentId ?? '';\n }\n\n get agentId(): string {\n return this._agentId;\n }\n get connectionState(): ConnectionState {\n return this._state;\n }\n\n async connect(): Promise<void> {\n this.t.subscribe(this.handlers());\n await this.t.connect(this.context());\n if (!this._agentId) {\n this._agentId = this.t.getResolvedAgentId?.() ?? '';\n if (!this._agentId) {\n const me = await this.getMe();\n this._agentId = me.id;\n }\n }\n }\n\n async close(): Promise<void> {\n await this.t.close();\n }\n\n async sendMessage(input: SendMessageInput, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<SentMessage> {\n if ('applicationData' in input) throw new BorgeeError('Agent message application data is not supported', 'bpp.application_data_unsupported');\n return (await this.t.perform({\n op: 'send_message',\n channelId: input.channelId,\n body: input.body,\n replyToId: input.replyToId,\n contentType: input.contentType,\n }, source)) as SentMessage;\n }\n\n async editMessage(input: { messageId: string; body: string }, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<void> {\n await this.t.perform({ op: 'edit_message', messageId: input.messageId, body: input.body }, source);\n }\n\n async deleteMessage(input: { messageId: string }, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<void> {\n await this.t.perform({ op: 'delete_message', messageId: input.messageId }, source);\n }\n\n async react(input: { messageId: string; emoji: string }, source?: Pick<ServerRequestContext, 'isConnectionCurrent'>): Promise<void> {\n await this.t.perform({ op: 'react', messageId: input.messageId, emoji: input.emoji }, source);\n }\n\n async unreact(input: { messageId: string; emoji: string }): Promise<void> {\n await this.t.perform({ op: 'react', messageId: input.messageId, emoji: input.emoji, removed: true });\n }\n\n async readHistory(input: ReadHistoryInput): Promise<Message[]> {\n return (await this.t.perform({\n op: 'read_channel_history',\n channelId: input.channelId,\n before: input.before,\n after: input.after,\n limit: input.limit,\n })) as Message[];\n }\n\n async createDm(input: { userId: string }): Promise<{ channelId: string }> {\n return (await this.t.perform({ op: 'create_dm', userId: input.userId })) as { channelId: string };\n }\n\n async getMe(): Promise<User> {\n return (await this.t.perform({ op: 'get_me' })) as User;\n }\n\n async listUsers(): Promise<User[]> {\n return (await this.t.perform({ op: 'list_users' })) as User[];\n }\n\n async listChannelFiles(input: { channelId: string }): Promise<ChannelFile[]> {\n return (await this.t.perform({ op: 'list_channel_files', channelId: input.channelId })) as ChannelFile[];\n }\n\n async readChannelFile(input: { channelId: string; path: string; textOnly: boolean }): Promise<ChannelFileContent> {\n return (await this.t.perform({ op: 'read_channel_file', ...input })) as ChannelFileContent;\n }\n\n async publishChannelFile(input: PublishChannelFileInput): Promise<ChannelFile> {\n return (await this.t.perform({ op: 'publish_channel_file', ...input })) as ChannelFile;\n }\n\n async listChannels(): Promise<Channel[]> {\n return (await this.t.perform({ op: 'list_channels' })) as Channel[];\n }\n\n async createChannel(input: CreateChannelInput): Promise<Channel> {\n validateChannelPlacement(input.parentId);\n return (await this.t.perform({\n op: 'create_channel',\n guildId: input.guildId,\n name: input.name,\n parentId: input.parentId,\n topic: input.topic,\n visibility: input.visibility,\n memberIds: input.memberIds,\n })) as Channel;\n }\n\n async updateChannel(input: UpdateChannelInput): Promise<Channel> {\n rejectChannelPlacementUpdate(input);\n return (await this.t.perform({\n op: 'update_channel',\n channelId: input.channelId,\n name: input.name,\n visibility: input.visibility,\n archived: input.archived,\n })) as Channel;\n }\n\n async listZones(input: ListZonesInput): Promise<ZonePageDTO> {\n validateListZonesInput(input);\n return (await this.t.perform({ op: 'list_zones', ...input })) as ZonePageDTO;\n }\n\n async setTopic(input: SetTopicInput): Promise<void> {\n await this.t.perform({ op: 'set_topic', channelId: input.channelId, topic: input.topic });\n }\n\n async deleteChannel(input: DeleteChannelInput): Promise<void> {\n await this.t.perform({ op: 'delete_channel', channelId: input.channelId });\n }\n\n reportTaskStarted(input: ReportTaskStartedInput): void {\n void this.t\n .perform({ op: 'report_task_started', taskId: input.taskId, channelId: input.channelId, subject: input.subject })\n .catch((err) => this.logger.warn('reportTaskStarted failed', err));\n }\n\n reportTaskFinished(input: ReportTaskFinishedInput): void {\n void this.t\n .perform({\n op: 'report_task_finished',\n taskId: input.taskId,\n channelId: input.channelId,\n outcome: input.outcome,\n reason: input.reason,\n })\n .catch((err) => this.logger.warn('reportTaskFinished failed', err));\n }\n\n get sessionBindingsSupported(): boolean { return this.t.supportsSessionBindings?.() ?? false; }\n\n reportActivity(input: ReportActivityInput): void {\n const sequence = this.nextActivitySequence();\n recordProtocolTrace({ stage: 'sdk.activity', kind: 'report_activity',\n correlation: { agentId: this.agentId, channelId: input.channelId, sequence, taskId: input.activity.shape === 'normalized' ? input.activity.taskId : undefined }, payload: input });\n void this.t\n .perform({\n op: 'report_activity',\n channelId: input.channelId,\n sequence,\n activity: input.activity,\n })\n .catch((err) => this.logger.warn('reportActivity failed', err));\n }\n\n reportExecutionTelemetry(frame: ExecutionTelemetryFrame): void {\n this.t.sendExecutionTelemetry?.(frame);\n }\n\n reportTurnActivity(input: ReportTurnActivityInput): TurnActivityReporter {\n return new TurnActivityReporter({\n ...input,\n deliver: (report) => this.reportActivity(report),\n });\n }\n\n /**\n * The counter every activity report carries. It belongs to the connection\n * rather than to a producer: both readers use it only to drop anything not\n * newer, so two producers on one agent numbering independently would silently\n * erase each other, and the failure would present as a missing report rather\n * than as a wrong one. Nothing outside this client can supply or observe it.\n */\n private nextActivitySequence(): number {\n if (this.activitySequence >= Number.MAX_SAFE_INTEGER) throw new BorgeeError('activity sequence exhausted', 'bpp.activity_sequence_exhausted');\n this.activitySequence += 1;\n return this.activitySequence;\n }\n\n // \u2500\u2500\u2500 Task CRUD (BPP semantic actions) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Semantic actions rather than REST: the blueprint's protocol red line\n // (plugin-protocol.md 1.3) is that a plugin does not reach past the semantic\n // layer to REST; the server centralizes permission checks at dispatch.\n\n async createTask(input: CreateTaskInput): Promise<Task> {\n return (await this.t.perform({\n op: 'create_task',\n channelId: input.channelId,\n title: input.title,\n description: input.description,\n assigneeId: input.assigneeId,\n heartbeat_interval_ms: input.heartbeatIntervalMs,\n heartbeat_prompt: input.heartbeatPrompt,\n })) as Task;\n }\n\n async listTasks(input: { channelId: string }): Promise<Task[]> {\n return (await this.t.perform({ op: 'list_tasks', channelId: input.channelId })) as Task[];\n }\n\n async listGuildTasks(input: { guildId: string }): Promise<Task[]> {\n return (await this.t.perform({ op: 'list_tasks', guildId: input.guildId })) as Task[];\n }\n\n async getTask(input: { taskId: string }): Promise<Task> {\n return (await this.t.perform({ op: 'get_task', taskId: input.taskId })) as Task;\n }\n\n async updateTask(input: UpdateTaskInput): Promise<Task> {\n // An empty patch always draws a 400 (\"No updates\") from the server.\n // Rejecting it here gives the caller an error naming the fields it can\n // set, and the round trip never happens.\n if (input.status === undefined && input.assigneeId === undefined && input.title === undefined && input.description === undefined && input.heartbeatIntervalMs === undefined && input.heartbeatPrompt === undefined) {\n throw new BorgeeError(\n 'updateTask requires at least one of: status, assigneeId, title, description, heartbeatIntervalMs, heartbeatPrompt',\n 'bpp.task_no_updates',\n );\n }\n return (await this.t.perform({\n op: 'update_task',\n taskId: input.taskId,\n status: input.status,\n assigneeId: input.assigneeId,\n title: input.title,\n description: input.description,\n heartbeat_interval_ms: input.heartbeatIntervalMs,\n heartbeat_prompt: input.heartbeatPrompt,\n })) as Task;\n }\n\n // \u2500\u2500\u2500 Task properties \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 // One key per call. The server has no whole-object property write, so two\n // agents writing different keys of the same task never overwrite each other.\n\n async setTaskProperty(input: SetTaskPropertyInput): Promise<Task> {\n return (await this.t.perform({\n op: 'set_task_property',\n taskId: input.taskId,\n key: input.key,\n value: input.value,\n })) as Task;\n }\n\n async deleteTaskProperty(input: DeleteTaskPropertyInput): Promise<Task> {\n return (await this.t.perform({\n op: 'delete_task_property',\n taskId: input.taskId,\n key: input.key,\n })) as Task;\n }\n\n /**\n * The registered property keys with their labels and render kinds. Read this\n * rather than hardcoding keys \u2014 the server can register a new property\n * without an SDK release.\n */\n async listTaskPropertyDefinitions(): Promise<TaskPropertyDefinition[]> {\n return (await this.t.perform({ op: 'list_task_property_definitions' })) as TaskPropertyDefinition[];\n }\n\n reportTyping(channelId: string): void {\n void this.t\n .perform({ op: 'report_typing', channelId })\n .catch((err) => this.logger.warn('reportTyping failed', err));\n }\n\n startTyping(channelId: string): () => void {\n const emit = () => this.reportTyping(channelId);\n emit();\n const interval = setInterval(emit, 2000);\n interval.unref?.(); // don't keep the process alive if stop() is missed (browsers: no-op)\n return () => clearInterval(interval);\n }\n\n on<K extends keyof EventMap>(event: K, handler: (e: EventMap[K]) => void): Unsubscribe {\n this.listeners[event].add(handler);\n return () => {\n this.listeners[event].delete(handler);\n };\n }\n\n onServerRequest(handler: ServerRequestHandler | undefined): void {\n this.t.setServerRequestHandler?.(handler);\n }\n\n onStopTurn(handler: StopTurnHandler | undefined): void {\n this.t.setStopTurnHandler?.(handler);\n }\n\n onStopBackgroundRun(handler: StopBackgroundRunHandler | undefined): void {\n this.t.setStopBackgroundRunHandler?.(handler);\n }\n\n private emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void {\n for (const h of this.listeners[event]) {\n try {\n h(payload);\n } catch (error) {\n this.logger.error('client.observer_failed', { event, error });\n }\n }\n }\n\n private handlers(): InboundHandlers {\n return {\n onInbound: (e) => this.emit('message', e),\n onConfigUpdate: (u) => this.emit('configUpdate', u),\n applyConfigUpdate: this.opts.configUpdateHandler,\n onPermissionDenied: (d) => this.emit('permissionDenied', d),\n onStateChange: (s) => {\n if (s.status === 'online' && !this._agentId) this._agentId = this.t.getResolvedAgentId?.() ?? '';\n this._state = s;\n this.emit('connectionState', s);\n },\n onExecutionTelemetryAck: (ack) => this.emit('executionTelemetryAck', ack),\n };\n }\n\n private context(): TransportContext {\n const options = this.opts;\n return {\n baseUrl: this.opts.baseUrl,\n apiKey: this.opts.apiKey,\n agentId: this._agentId,\n pluginId: this.opts.pluginId,\n get providerOutputMode() { return options.providerOutputMode; },\n get normalizedActivitySync() { return options.normalizedActivitySync; },\n get sessionControl() { return options.sessionControl; },\n get sessionBindings() { return options.sessionBindings; },\n get sessionDirectory() { return options.sessionDirectory; },\n get sessionManagement() { return options.sessionManagement; },\n get sessionRelations() { return options.sessionRelations; },\n get sessionObservation() { return options.sessionObservation; },\n get connectionLiveness() { return options.connectionLiveness; },\n get sessionInputOperations() { return options.sessionInputOperations; },\n logger: this.logger,\n configApplyTimeoutMs: this.opts.configApplyTimeoutMs,\n };\n }\n}\n\nexport function createBorgeePlugin(opts: BorgeePluginOptions): BorgeePluginClient {\n return new Client(opts, new BppTransport());\n}\n\nexport function createBorgeePluginWithTransport(opts: BorgeePluginOptions, transport: Transport): BorgeePluginClient {\n return new Client(opts, transport);\n}\n", "import type { BorgeePluginClient } from './client.js';\n\n/**\n * How long updates coalesce before one reaches the wire. An update arriving\n * during the window replaces the pending body rather than queueing behind it,\n * so a producer emitting per token costs at most four writes a second.\n */\nconst THROTTLE_MS = 250;\n\n/**\n * One message that is written while it is still being produced: sent once, then\n * edited in place until it is sealed.\n *\n * The message exists in the channel from the first flush onward, so everything\n * it shows is already published \u2014 this is not a private buffer. A producer that\n * must not publish something has to keep it out of `update()`.\n *\n * Every write goes through one chain, so an edit can never overtake the send\n * that assigns the id it edits. After `finalize()` or `discard()` the controller\n * is sealed and ignores further updates; a producer with more to say opens\n * another controller rather than reviving this one.\n */\nexport class DraftMessageController {\n private messageId: string | null = null;\n private currentBody = '';\n private pendingBody: string | null = null;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private sealed = false;\n private writeChain: Promise<void> = Promise.resolve();\n\n constructor(\n private readonly client: BorgeePluginClient,\n private readonly channelId: string,\n private readonly replyToId?: string,\n private readonly source?: Parameters<BorgeePluginClient['sendMessage']>[1],\n ) {}\n\n /**\n * Offer the whole body as it currently reads \u2014 not a delta. Nothing is written\n * for up to {@link THROTTLE_MS}, and only the last body offered in that window\n * is; blank text is ignored, which is why a producer that has not yet emitted\n * anything visible never creates an empty message.\n */\n update(text: string): void {\n if (this.sealed || !text.trim()) return;\n this.pendingBody = text;\n if (this.timer) return;\n this.timer = setTimeout(() => {\n this.timer = null;\n void this.flushPending().catch(() => {});\n }, THROTTLE_MS);\n }\n\n /**\n * Seal the draft at `finalText` and resolve once that text is on the wire.\n * Empty final text means the draft said nothing worth keeping, so the message\n * is deleted rather than left showing a body the producer has disowned.\n */\n async finalize(finalText: string): Promise<void> {\n this.sealed = true;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n if (finalText.trim()) {\n this.pendingBody = finalText;\n await this.flushPending();\n this.messageId = null;\n return;\n }\n\n await this.enqueue(async () => {\n if (!this.messageId) return;\n await this.client.deleteMessage({ messageId: this.messageId }, ...(this.source ? [this.source] as const : [] as const));\n this.messageId = null;\n });\n }\n\n /** Seal the draft and remove whatever it published. */\n async discard(): Promise<void> {\n this.sealed = true;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.pendingBody = null;\n await this.enqueue(async () => {\n if (!this.messageId) return;\n await this.client.deleteMessage({ messageId: this.messageId }, ...(this.source ? [this.source] as const : [] as const));\n this.messageId = null;\n });\n }\n\n /** Whether a message has actually been published yet. */\n get hasMessage(): boolean {\n return this.messageId !== null;\n }\n\n private async flushPending(): Promise<void> {\n await this.enqueue(async () => {\n const body = this.pendingBody;\n if (!body || body === this.currentBody) return;\n\n if (this.messageId) {\n await this.client.editMessage({ messageId: this.messageId, body }, ...(this.source ? [this.source] as const : [] as const));\n } else {\n const posted = await this.client.sendMessage({\n channelId: this.channelId,\n body,\n replyToId: this.replyToId,\n }, ...(this.source ? [this.source] as const : [] as const));\n this.messageId = posted.messageId;\n }\n this.currentBody = body;\n });\n }\n\n /**\n * Run `op` after every write queued before it. The same callback handles both\n * settlements deliberately: a rejected write must not wedge the chain, and a\n * producer that keeps typing after one failed edit still gets its next one.\n */\n private enqueue(op: () => Promise<void>): Promise<void> {\n this.writeChain = this.writeChain.then(op, op);\n return this.writeChain;\n }\n}\n", "import { createHash } from 'node:crypto';\nimport { isPublicAgentTimelineEvent, type PublicAgentTimelineEvent } from '@borgee/agent-remote-protocol';\nimport { redactInteractionRequest, redactInteractionResponse, type AgentQuestionnaireResponse, type ProviderObservation } from '@borgee/agent-provider-sdk';\nimport { discoverTimelineLocators } from './normalized-resource-locators.js';\n\nexport const NORMALIZED_TIMELINE_MAX_BYTES = 1024 * 1024;\nexport const NORMALIZED_TIMELINE_MAX_ITEMS = 4096;\nexport interface NativeInputScope { providerId: string; nativeSessionId: string; visibilityKey: string }\nexport type InputEvidenceStatus = 'changed' | 'unchanged' | 'conflict' | 'wrong_scope' | 'capacity' | 'invalid';\nexport interface PublicInput { questionnaireResponse?: AgentQuestionnaireResponse; clientMessageId?: string; taskId?: string; origin?: { kind: 'borgee' | 'native' | 'agent' | 'unknown' } }\nconst scopeKey = (scope: NativeInputScope): string => JSON.stringify([scope.providerId, scope.nativeSessionId, scope.visibilityKey]);\n\n/** Binding-local acceptance evidence; public history never supplies this authority. */\nexport class VerifiedSessionInputs {\n private readonly values = new Map<string, PublicInput>();\n private bytes = 0;\n private readonly tasks = new Map<string, string>();\n constructor(private readonly scope: NativeInputScope) {}\n\n /** Boolean convenience for callers that only need to know whether metadata changed. */\n accept(scope: NativeInputScope, nativeMessageId: string, input: PublicInput & { text?: string | null }): boolean {\n const { text: _text, ...metadata } = input;\n return this.enrich(scope, nativeMessageId, metadata) === 'changed';\n }\n enrich(scope: NativeInputScope, nativeMessageId: string, input: PublicInput): InputEvidenceStatus {\n if (scopeKey(scope) !== scopeKey(this.scope)) return 'wrong_scope';\n if (!nativeMessageId || !Object.values(input).some(value => value !== undefined)) return 'invalid';\n const existing = this.values.get(nativeMessageId);\n if (existing) {\n if (existing.clientMessageId && input.clientMessageId && existing.clientMessageId !== input.clientMessageId\n || existing.taskId && input.taskId && existing.taskId !== input.taskId\n || existing.questionnaireResponse && input.questionnaireResponse && JSON.stringify(existing.questionnaireResponse) !== JSON.stringify(input.questionnaireResponse)\n || existing.origin && input.origin && existing.origin.kind !== 'unknown' && input.origin.kind !== 'unknown' && existing.origin.kind !== input.origin.kind) return 'conflict';\n input = { ...existing, ...Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined)),\n ...(existing.origin && input.origin?.kind === 'unknown' ? { origin: existing.origin } : {}) };\n if (existing.clientMessageId === input.clientMessageId && existing.taskId === input.taskId && existing.origin?.kind === input.origin?.kind\n && JSON.stringify(existing.questionnaireResponse) === JSON.stringify(input.questionnaireResponse)) return 'unchanged';\n }\n const bytes = Buffer.byteLength(JSON.stringify([nativeMessageId, input])) - (existing ? Buffer.byteLength(JSON.stringify([nativeMessageId, existing])) : 0);\n if (!existing && this.values.size >= 4096 || this.bytes + bytes > NORMALIZED_TIMELINE_MAX_BYTES) return 'capacity';\n this.values.set(nativeMessageId, structuredClone(input)); this.bytes += bytes;\n return 'changed';\n }\n\n /** Boolean convenience for callers that only need task-attribution acceptance. */\n attribute(scope: NativeInputScope, sourceKey: string, taskId: string): boolean {\n const status = this.attributeResult(scope, sourceKey, taskId);\n return status === 'changed' || status === 'unchanged';\n }\n attributeResult(scope: NativeInputScope, sourceKey: string, taskId: string): InputEvidenceStatus {\n if (scopeKey(scope) !== scopeKey(this.scope)) return 'wrong_scope';\n if (!sourceKey || !taskId) return 'invalid';\n const previous = this.tasks.get(sourceKey);\n if (previous) return previous === taskId ? 'unchanged' : 'conflict';\n const bytes = Buffer.byteLength(JSON.stringify([sourceKey, taskId]));\n if (this.tasks.size >= 4096 || this.bytes + bytes > NORMALIZED_TIMELINE_MAX_BYTES) return 'capacity';\n this.tasks.set(sourceKey, taskId); this.bytes += bytes; return 'changed';\n }\n\n task(scope: NativeInputScope, sourceKey: string): string | undefined {\n return scopeKey(scope) === scopeKey(this.scope) ? this.tasks.get(sourceKey) : undefined;\n }\n\n read(scope: NativeInputScope, nativeMessageId: string | undefined): PublicInput | undefined {\n return nativeMessageId && scopeKey(scope) === scopeKey(this.scope) ? structuredClone(this.values.get(nativeMessageId)) : undefined;\n }\n}\n\nexport interface PublicTimelineObservation {\n source_key: string;\n occurred_at: number;\n native_revision?: number;\n task_id?: string;\n event: PublicAgentTimelineEvent;\n}\n\n/** Format the complete candidate before any publisher, gate, trace, or journal mutation. */\nexport interface TimelineFormatOptions { agentId: string; channelId: string; scope: NativeInputScope; inputs?: VerifiedSessionInputs }\nexport function formatTimelineReplacement(observations: readonly ProviderObservation[], options: TimelineFormatOptions): PublicTimelineObservation[] {\n if (!Array.isArray(observations) || observations.length > NORMALIZED_TIMELINE_MAX_ITEMS) throw new Error('timeline_replacement_unavailable');\n const sources = new Set<string>();\n const result = observations.map(observation => {\n if (sources.has(observation.sourceKey)) throw new Error('timeline_replacement_unavailable');\n sources.add(observation.sourceKey);\n return formatTimelineObservation(observation, options);\n });\n if (Buffer.byteLength(JSON.stringify(result)) > NORMALIZED_TIMELINE_MAX_BYTES) throw new Error('timeline_replacement_unavailable');\n return result;\n}\n\n/** The sole public Timeline formatter for live observations and history cuts. */\nexport function formatTimelineObservation(observation: ProviderObservation, options: TimelineFormatOptions): PublicTimelineObservation {\n if (observation.type !== 'observation' || observation.event.type !== 'timeline' || observation.event.provider !== options.scope.providerId\n || !observation.sourceKey || Buffer.byteLength(observation.sourceKey) > 1024\n || !Number.isSafeInteger(observation.occurredAt) || observation.occurredAt < 0 || observation.occurredAt > 8_640_000_000_000_000\n || observation.nativeRevision !== undefined && (!Number.isSafeInteger(observation.nativeRevision) || observation.nativeRevision < 0)) throw new Error('timeline_replacement_unavailable');\n const native = observation.event;\n let item = structuredClone(native.item);\n let taskId = options.inputs?.task(options.scope, observation.sourceKey);\n if (item.type === 'user_message') {\n const verified = options.inputs?.read(options.scope, item.messageId);\n taskId ??= verified?.taskId;\n const origin = verified?.origin ?? (item.origin?.kind === 'borgee' ? undefined : item.origin);\n item = { type: 'user_message', text: item.text,\n ...(item.messageId ? { messageId: item.messageId } : {}),\n ...(verified?.clientMessageId ? { clientMessageId: verified.clientMessageId } : {}),\n ...(origin ? { origin } : {}),\n ...(verified?.questionnaireResponse ? { questionnaireResponse: verified.questionnaireResponse } : {}) };\n } else if (item.type === 'interaction') {\n item = { type: 'interaction', request: redactInteractionRequest(item.request), response: redactInteractionResponse(item.request, item.response) };\n }\n const event = { type: 'timeline', providerId: native.provider, item, ...(native.turnId ? { turnId: native.turnId } : {}),\n resources: discoverTimelineLocators(item).map(({ locator, normalizedLocator }) => ({ locator,\n resourceId: createHash('sha256').update(JSON.stringify([options.agentId, options.channelId, normalizedLocator])).digest('hex'), status: 'unavailable' })) };\n if (!isPublicAgentTimelineEvent(event)) throw new Error('timeline_replacement_unavailable');\n return { source_key: observation.sourceKey, occurred_at: observation.occurredAt,\n ...(taskId ? { task_id: taskId } : {}),\n ...(observation.nativeRevision === undefined ? {} : { native_revision: observation.nativeRevision }), event };\n}\n", "import { posix } from 'node:path';\n\nimport type { AgentTimelineItem } from '@borgee/agent-provider-sdk';\n\nexport interface MarkdownLocator {\n locator: string;\n normalizedLocator: string;\n}\n\nconst FORBIDDEN_SCHEMES = new Set([\n 'data',\n 'file',\n 'ftp',\n 'ftps',\n 'http',\n 'https',\n 'javascript',\n 'ws',\n 'wss',\n]);\n\nexport function discoverMarkdownLocators(markdown: string): MarkdownLocator[] {\n const discovered: MarkdownLocator[] = [];\n const seen = new Set<string>();\n for (let offset = 0; offset < markdown.length; offset += 1) {\n if (markdown[offset] !== ']' || markdown[offset + 1] !== '(' || isEscaped(markdown, offset)) continue;\n const parsed = readDestination(markdown, offset + 2);\n if (!parsed) continue;\n offset = parsed.end;\n const normalizedLocator = normalizeFileLocator(parsed.locator);\n if (!normalizedLocator || seen.has(normalizedLocator)) continue;\n seen.add(normalizedLocator);\n discovered.push({ locator: parsed.locator, normalizedLocator });\n }\n return discovered;\n}\n\nexport function discoverTimelineLocators(item: AgentTimelineItem): MarkdownLocator[] {\n if (item.type === 'assistant_message') return discoverMarkdownLocators(item.text);\n if (item.type !== 'tool_call' || item.status !== 'completed') return [];\n if (item.detail.type === 'write' || item.detail.type === 'edit') {\n const normalizedLocator = normalizeFileLocator(item.detail.filePath);\n return normalizedLocator ? [{ locator: item.detail.filePath, normalizedLocator }] : [];\n }\n if (item.detail.type === 'other') return discoverMarkdownLocators(item.detail.description);\n return [];\n}\n\nexport function normalizeFileLocator(locator: string): string | undefined {\n const trimmed = locator.trim();\n if (\n !trimmed\n || trimmed.includes('\\0')\n || trimmed.includes('\\\\')\n || trimmed.startsWith('//')\n || trimmed.startsWith('#')\n || posix.isAbsolute(trimmed)\n ) return undefined;\n\n const schemeMatch = /^([a-z][a-z\\d+.-]*):(.*)$/i.exec(trimmed);\n if (schemeMatch) {\n const scheme = schemeMatch[1]?.toLowerCase();\n const opaque = schemeMatch[2];\n if (!scheme || !opaque || FORBIDDEN_SCHEMES.has(scheme) || opaque.startsWith('//') || opaque.startsWith('/')) {\n return undefined;\n }\n if (hasTraversalSegment(opaque)) return undefined;\n return `${scheme}:${opaque}`;\n }\n\n if (hasTraversalSegment(trimmed)) return undefined;\n const normalized = posix.normalize(trimmed);\n return normalized.startsWith('./') ? normalized.slice(2) : normalized;\n}\n\nfunction hasTraversalSegment(locator: string): boolean {\n return locator.split('/').some((segment) => segment === '..');\n}\n\nfunction readDestination(markdown: string, start: number): { locator: string; end: number } | undefined {\n let cursor = start;\n while (/\\s/.test(markdown[cursor] ?? '')) cursor += 1;\n if (markdown[cursor] === '<') {\n const end = markdown.indexOf('>', cursor + 1);\n if (end === -1) return undefined;\n const closing = markdown.indexOf(')', end + 1);\n if (closing === -1) return undefined;\n return { locator: markdown.slice(cursor + 1, end), end: closing };\n }\n\n const destinationStart = cursor;\n let depth = 0;\n while (cursor < markdown.length) {\n const character = markdown[cursor] as string;\n if (character === '\\n' || character === '\\r') return undefined;\n if (character === '(' && !isEscaped(markdown, cursor)) depth += 1;\n if (character === ')' && !isEscaped(markdown, cursor)) {\n if (depth === 0) break;\n depth -= 1;\n }\n if (/\\s/.test(character) && depth === 0) break;\n cursor += 1;\n }\n if (cursor === destinationStart) return undefined;\n const locator = markdown.slice(destinationStart, cursor);\n while (cursor < markdown.length && markdown[cursor] !== ')') cursor += 1;\n return markdown[cursor] === ')' ? { locator, end: cursor } : undefined;\n}\n\nfunction isEscaped(value: string, offset: number): boolean {\n let slashCount = 0;\n for (let index = offset - 1; index >= 0 && value[index] === '\\\\'; index -= 1) slashCount += 1;\n return slashCount % 2 === 1;\n}\n", "import { createHash } from 'node:crypto';\nimport type { ProviderObservation } from '@borgee/agent-provider-sdk';\n\n/** Private native identities are independent of public transport sequences. */\nexport class NormalizedObservationGate {\n private readonly sources = new Map<string, Map<number | null, string>>();\n private readonly diagnosed = new Set<string>();\n\n hasSource(sourceKey: string): boolean {\n return this.sources.has(sourceKey);\n }\n\n accept(observation: ProviderObservation): ProviderObservation | undefined {\n if (!Number.isSafeInteger(observation.occurredAt) || observation.occurredAt < 0 || observation.occurredAt > 8_640_000_000_000_000) return;\n const revision = observation.nativeRevision ?? null;\n const revisions = this.sources.get(observation.sourceKey);\n const previous = revisions?.get(revision);\n const fingerprint = createHash('sha256').update(JSON.stringify({ ...observation, delivery: 'live' }, (_key, value) => value && typeof value === 'object' && !Array.isArray(value)\n ? Object.fromEntries(Object.entries(value).sort(([a], [b]) => a.localeCompare(b))) : value)).digest('hex');\n const reason = previous\n ? previous === fingerprint ? 'duplicate' : 'identity_conflict'\n : revisions?.size && observation.event.type === 'timeline' && ['assistant_message', 'reasoning', 'user_message', 'error', 'interaction'].includes(observation.event.item.type)\n ? 'unsupported_text_revision' : undefined;\n if (reason === 'duplicate') return;\n if (reason) {\n const key = JSON.stringify([observation.sourceKey, revision, reason]);\n if (this.diagnosed.has(key)) return;\n this.diagnosed.add(key);\n return { ...observation, sourceKey: `${observation.sourceKey}:${reason}`, resourceReferences: undefined,\n event: { type: 'timeline', provider: observation.event.provider,\n ...('turnId' in observation.event ? { turnId: observation.event.turnId } : {}),\n item: { type: 'error', message: reason === 'identity_conflict' ? 'Conflicting native observation identity; the original content was preserved.' : 'Native text revision cannot replace this live activity; the original content was preserved.' } } };\n }\n if (revisions) revisions.set(revision, fingerprint);\n else this.sources.set(observation.sourceKey, new Map([[revision, fingerprint]]));\n return observation;\n }\n}\n", "import { formatTimelineReplacement, formatTimelineObservation, type TimelineFormatOptions } from './normalized-timeline.js';\nimport { validSessionCapabilities } from './bpp/normalized-session-capabilities.js';\nimport { isNormalizedAgentSnapshot } from './normalized-snapshot.js';\nimport type { AgentSnapshot } from '@borgee/agent-remote-protocol';\nimport type { AgentCapabilities } from '@borgee/agent-provider-sdk';\nimport { NormalizedObservationGate } from './normalized-observation.js';\nimport { createHash } from 'node:crypto';\nimport { discoverTimelineLocators } from './normalized-resource-locators.js';\nimport { recordProtocolTrace } from './protocol-trace.js';\nimport { PROTOCOL_VERSION, isInteractionRequestedMessage, isInteractionResolvedMessage, isPublicAgentTimelineEvent, isPublicAgentNonTimelineEvent, type InteractionRequestedMessage, type InteractionResolvedMessage, type PublicAgentTimelineEvent, type PublicAgentNonTimelineEvent } from '@borgee/agent-remote-protocol';\nimport { redactInteractionRequest, redactInteractionResponse, type AgentStreamEvent, type ProviderObservation, type AgentInteractionRequest } from '@borgee/agent-provider-sdk';\nimport type { BorgeePluginClient } from './client.js';\n\nexport type NormalizedPublicEvent = PublicAgentTimelineEvent | PublicAgentNonTimelineEvent | InteractionRequestedMessage | InteractionResolvedMessage | AgentSnapshot;\nexport interface NormalizedActivityPublisherOptions {\n client: Pick<BorgeePluginClient, 'reportActivity'>;\n channelId: string;\n taskId?: string;\n agentId: string;\n}\n\n/** Publishes provider-neutral observations; native projection belongs to the adapter. */\nexport class NormalizedActivityPublisher {\n private closed = false;\n private readonly gate = new NormalizedObservationGate();\n private requests = new Map<string, AgentInteractionRequest>();\n constructor(private readonly options: NormalizedActivityPublisherOptions) {}\n\n /** Scoped Session Timeline publication strips candidate authority through the canonical formatter. */\n observeTimeline(value: ProviderObservation, options: TimelineFormatOptions, sessionControlBindingId?: string, timelineEpoch?: string): void {\n if (this.closed || options.agentId !== this.options.agentId || options.channelId !== this.options.channelId) return;\n const candidate = formatTimelineObservation(value, options);\n const observation = this.gate.accept(value);\n if (!observation) return;\n const row = observation === value ? candidate : formatTimelineObservation(observation, options);\n this.publishWithTask(row.event, row.task_id, row.occurred_at, options.scope.providerId, undefined, sessionControlBindingId, timelineEpoch);\n }\n\n /** Whether this Timeline source must use the existing public duplicate and revision checks. */\n hasTimelineSource(value: ProviderObservation): boolean { return value.event.type === 'timeline' && this.gate.hasSource(value.sourceKey); }\n\n /** Register a successfully published history cut without delivering live activity. */\n adoptTimeline(observations: readonly ProviderObservation[], options: TimelineFormatOptions): void {\n if (this.closed || options.agentId !== this.options.agentId || options.channelId !== this.options.channelId) return;\n formatTimelineReplacement(observations, options);\n for (const observation of observations) this.gate.accept(observation);\n }\n\n observe(value: AgentStreamEvent | ProviderObservation, sessionCapabilities?: AgentCapabilities, sessionControlBindingId?: string, timelineEpoch?: string, sessionControlDefault?: boolean): void {\n if (this.closed) return;\n const observation = value.type === 'observation' ? this.gate.accept(value) : undefined;\n if (value.type === 'observation' && !observation) return;\n if (observation && observation !== value) recordProtocolTrace({ stage: 'sdk.publisher', kind: 'observation_conflict', correlation: { channelId: this.options.channelId, taskId: this.options.taskId, agentId: this.options.agentId }, outcome: 'diagnosed' });\n const input = observation?.event ?? value as AgentStreamEvent;\n const occurredAt = observation?.occurredAt;\n const { provider, ...rest } = input;\n if (input.type === 'interaction_requested') {\n this.publish({ protocolVersion: PROTOCOL_VERSION, type: input.type, payload: { agentId: this.options.agentId, request: input.request } }, occurredAt, provider, sessionCapabilities, sessionControlBindingId, timelineEpoch, sessionControlDefault);\n } else if (input.type === 'interaction_resolved') {\n this.publish({ protocolVersion: PROTOCOL_VERSION, type: input.type, payload: { agentId: this.options.agentId, requestId: input.requestId, response: input.response } }, occurredAt, provider, sessionCapabilities, sessionControlBindingId, timelineEpoch, sessionControlDefault);\n } else {\n this.publish({ ...rest, providerId: provider, ...(input.type === 'timeline' ? { resources: discoverTimelineLocators(input.item).map(({ locator, normalizedLocator }) => ({\n locator, resourceId: createHash('sha256').update(JSON.stringify([this.options.agentId, this.options.channelId, normalizedLocator])).digest('hex'), status: 'unavailable',\n })) } : {}) }, occurredAt, provider, sessionCapabilities, sessionControlBindingId, timelineEpoch, sessionControlDefault);\n }\n }\n\n publish(input: unknown, occurredAt?: number, providerId?: string, sessionCapabilities?: AgentCapabilities, sessionControlBindingId?: string, timelineEpoch?: string, sessionControlDefault?: boolean): void {\n this.publishWithTask(input, this.options.taskId, occurredAt, providerId, sessionCapabilities, sessionControlBindingId, timelineEpoch, sessionControlDefault);\n }\n\n private publishWithTask(input: unknown, taskId: string | undefined, occurredAt?: number, providerId?: string, sessionCapabilities?: AgentCapabilities, sessionControlBindingId?: string, timelineEpoch?: string, sessionControlDefault?: boolean): void {\n if (occurredAt !== undefined && (!Number.isSafeInteger(occurredAt) || occurredAt < 0 || occurredAt > 8_640_000_000_000_000)) return;\n const correlation = { channelId: this.options.channelId, taskId, agentId: this.options.agentId };\n recordProtocolTrace({ stage: 'sdk.publisher', kind: 'input', correlation, payload: input, outcome: this.closed ? 'closed' : 'validating' });\n if (this.closed) return;\n const reject = (reason: string): void => recordProtocolTrace({ stage: 'sdk.publisher', kind: 'rejected', correlation, payload: input, reason });\n let event: NormalizedPublicEvent;\n if (isNormalizedAgentSnapshot(input)) {\n if (input.payload.id !== this.options.agentId || input.payload.providerId !== input.payload.runtimeInfo.providerId) { reject('agent_mismatch'); return; }\n const { persistence: _persistence, ...payload } = structuredClone(input.payload);\n const { persistence: _runtimePersistence, ...runtimeInfo } = payload.runtimeInfo;\n const pendingInteractions = payload.pendingInteractions.map(redactInteractionRequest);\n this.requests = new Map(pendingInteractions.map(request => [request.requestId, request]));\n event = { ...input, payload: { ...payload, runtimeInfo, pendingInteractions } };\n } else if (isInteractionRequestedMessage(input)) {\n if (input.payload.agentId !== this.options.agentId) { reject('agent_mismatch'); return; }\n const request = redactInteractionRequest(input.payload.request);\n this.requests.set(request.requestId, request);\n event = { ...input, payload: { ...input.payload, request } };\n } else if (isInteractionResolvedMessage(input)) {\n if (input.payload.agentId !== this.options.agentId) { reject('agent_mismatch'); return; }\n const request = this.requests.get(input.payload.requestId);\n if (!request || request.kind !== input.payload.response.kind) { reject('unknown_interaction'); return; }\n event = { ...input, payload: { ...input.payload, response: redactInteractionResponse(request, input.payload.response) } };\n this.requests.delete(input.payload.requestId);\n } else if (isPublicAgentTimelineEvent(input)) {\n event = input.item.type === 'interaction' ? { ...input, item: { ...input.item, request: redactInteractionRequest(input.item.request), response: redactInteractionResponse(input.item.request, input.item.response) } } : input;\n } else if (isPublicAgentNonTimelineEvent(input)) {\n if (input.type === 'runtime_updated') {\n const { persistence: _persistence, ...runtimeInfo } = input.runtimeInfo;\n event = { ...input, runtimeInfo };\n } else event = input;\n }\n else {\n reject('invalid_event');\n event = { type: 'timeline', providerId: typeof providerId === 'string' && providerId.length > 0 && new TextEncoder().encode(providerId).length <= 128 ? providerId : 'unknown',\n item: { type: 'error', message: 'Normalized event unavailable: invalid_event.' }, resources: [] };\n }\n const capabilities = event.type === 'runtime_updated' && validSessionCapabilities(sessionCapabilities) ? structuredClone(sessionCapabilities) : undefined;\n recordProtocolTrace({ stage: 'sdk.publisher', kind: 'accepted', correlation, payload: event });\n try {\n this.options.client.reportActivity({ channelId: this.options.channelId, activity: { shape: 'normalized', ...(timelineEpoch ? { timelineEpoch } : {}), protocolVersion: PROTOCOL_VERSION, taskId, ...((event.type === 'runtime_updated' || event.type === 'agent_snapshot') && sessionControlDefault !== undefined ? { sessionControlDefault } : {}), ...(capabilities === undefined ? {} : { sessionCapabilities: capabilities }), ...(sessionControlBindingId ? { sessionControlBindingId } : {}), ...(providerId === undefined ? {} : { providerId }), ...(occurredAt === undefined ? {} : { occurredAt }), event } });\n } catch {\n // Observational publication cannot change the durable turn.\n }\n }\n\n close(): void { this.closed = true; this.requests.clear(); }\n}\n", "import { createHash, randomUUID } from 'node:crypto';\nimport { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport type { AgentStreamEvent, AgentUsageAccounting } from '@borgee/agent-provider-sdk';\nimport type { ExecutionGrant, ExecutionTelemetryAck, ExecutionTelemetryFrame } from './types.js';\nimport { recordProtocolTrace } from './protocol-trace.js';\n\nexport interface NormalizedTelemetryTransport {\n report(frame: ExecutionTelemetryFrame): void;\n onAck(handler: (ack: ExecutionTelemetryAck) => void): () => void;\n onReady?(handler: () => void): () => void;\n}\nexport interface NormalizedExecutionTelemetryOptions {\n outboxPath: string;\n scope: { serverUrl: string; agentId: string };\n transport: NormalizedTelemetryTransport;\n retryIntervalMs?: number;\n retryLimit?: number;\n}\ninterface StoredExecution {\n grant: ExecutionGrant;\n bindingId: string;\n inputMessageId?: string;\n channelId?: string;\n turnId?: string;\n started: boolean;\n finished: boolean;\n nextCallIndex: number;\n measurements: Record<string, AgentUsageAccounting>;\n pending: ExecutionTelemetryFrame[];\n}\ninterface Store { version: 1; scope: string; executions: Record<string, StoredExecution>; completed: Record<string, { bindingId: string; contextHash: string }> }\nexport interface NormalizedExecutionBinding { observe(event: AgentStreamEvent, occurredAt?: number): void; close(): void }\nconst counters = ['inputTokens', 'outputTokens', 'cacheReadTokens', 'cacheWriteTokens'] as const;\nfunction signature(value: AgentUsageAccounting): string {\n return JSON.stringify([value.measurementId, value.scope, value.provider, value.model, ...counters.map(key => value[key])]);\n}\nfunction valid(value: AgentUsageAccounting): boolean {\n return Boolean(value && typeof value.measurementId === 'string' && value.measurementId.length > 0 && value.measurementId.length <= 512\n && (value.scope === 'turn' || value.scope === 'llm_call') && typeof value.provider === 'string' && value.provider.length > 0\n && typeof value.model === 'string' && value.model.length > 0 && counters.every(key => Number.isSafeInteger(value[key]) && value[key] >= 0));\n}\n\nfunction acquireWriter(path: string): () => void {\n const lock = `${path}.lock`;\n mkdirSync(dirname(path), { recursive: true, mode: 0o700 });\n const owner = JSON.stringify({ pid: process.pid, token: randomUUID() });\n try { writeFileSync(lock, owner, { mode: 0o600, flag: 'wx' }); }\n catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'EEXIST') throw error;\n throw new Error('Normalized accounting already has an active writer or an unreconciled lock. Confirm that no writer is running before removing the lock to resume accounting.');\n }\n return () => { try { if (readFileSync(lock, 'utf8') === owner) unlinkSync(lock); } catch { /* Missing locks do not affect durable records. */ } };\n}\n\n/** Durable accounting consumes settled normalized measurements; native interpretation belongs to providers. */\nexport class NormalizedExecutionTelemetry {\n private readonly path: string;\n private readonly releaseWriter: () => void;\n private readonly store: Store;\n private readonly attempts = new Map<string, number>();\n private readonly inFlight = new Set<string>();\n private timer?: ReturnType<typeof setTimeout>;\n private readonly subscriptions: Array<() => void>;\n private disposed = false;\n private faulted = false;\n\n constructor(private readonly options: NormalizedExecutionTelemetryOptions) {\n const scope = createHash('sha256').update(JSON.stringify(options.scope)).digest('hex');\n this.path = `${options.outboxPath}.${scope}`;\n this.releaseWriter = acquireWriter(this.path);\n try {\n this.store = existsSync(this.path) ? JSON.parse(readFileSync(this.path, 'utf8')) as Store : { version: 1, scope, executions: {}, completed: {} };\n if (this.store.version !== 1 || this.store.scope !== scope || !this.store.executions || typeof this.store.executions !== 'object') throw new Error('Invalid normalized accounting outbox.');\n this.store.completed ??= {};\n for (const execution of Object.values(this.store.executions)) {\n if (!execution.grant?.executionId || !Array.isArray(execution.pending) || !execution.measurements || !Number.isSafeInteger(execution.nextCallIndex)) throw new Error('Invalid normalized accounting execution.');\n }\n this.subscriptions = [options.transport.onAck(ack => {\n try { this.acknowledge(ack); }\n catch { this.faulted = true; console.error('[borgee] normalized accounting unavailable: acknowledgement could not be persisted.'); recordProtocolTrace({ stage: 'sdk.accounting', kind: 'outbox', outcome: 'unavailable', reason: 'ack_persistence_failed', correlation: { agentId: options.scope.agentId } }); }\n })];\n if (options.transport.onReady) this.subscriptions.push(options.transport.onReady(() => { this.attempts.clear(); this.inFlight.clear(); this.flush(); }));\n this.flush();\n } catch (error) { this.releaseWriter(); throw error; }\n }\n\n bind(input: { bindingId: string; inputMessageId?: string; channelId?: string; grant?: ExecutionGrant }): NormalizedExecutionBinding {\n let closed = false;\n if (!input.grant) return { observe: () => {}, close: () => { closed = true; } };\n const grant = { ...input.grant };\n if (!grant.executionId || !grant.telemetryContext) throw new Error('Invalid execution grant.');\n const completed = Object.hasOwn(this.store.completed, grant.executionId) ? this.store.completed[grant.executionId] : undefined;\n if (completed) {\n if (completed.bindingId !== input.bindingId || completed.contextHash !== createHash('sha256').update(grant.telemetryContext).digest('hex')) throw new Error('Completed execution binding differs.');\n return { observe: () => {}, close: () => {} };\n }\n let execution = Object.hasOwn(this.store.executions, grant.executionId) ? this.store.executions[grant.executionId] : undefined;\n if (execution && execution.bindingId !== input.bindingId) throw new Error('Execution grant already belongs to another binding.');\n if (execution && execution.grant.telemetryContext !== grant.telemetryContext) throw new Error('Execution grant context changed.');\n if (!execution) {\n if (Object.keys(this.store.completed).length + Object.keys(this.store.executions).length >= 10_000) throw new Error('Normalized accounting retention capacity reached; a new state store requires operator reconciliation.');\n execution = { grant, bindingId: input.bindingId, inputMessageId: input.inputMessageId, channelId: input.channelId, started: false, finished: false, nextCallIndex: 0, measurements: {}, pending: [] };\n this.store.executions[grant.executionId] = execution;\n this.persist();\n }\n return { observe: (event, occurredAt) => { if (!closed && !this.disposed && !this.faulted) this.observe(execution, event, occurredAt); }, close: () => { closed = true; } };\n }\n\n private observe(execution: StoredExecution, event: AgentStreamEvent, occurredAt?: number): void {\n if (execution.finished) return;\n if ('turnId' in event && event.turnId && execution.turnId && event.turnId !== execution.turnId) return;\n if (event.type === 'turn_started' && !execution.started) {\n execution.started = true;\n execution.turnId = event.turnId;\n this.enqueue(execution, { type: 'execution_started', eventId: randomUUID(), ...execution.grant, startedAt: occurredAt ?? Date.now() });\n }\n if (!execution.started) return;\n if (event.type === 'usage_updated' || event.type === 'turn_completed') {\n for (const measurement of event.usage?.accounting ?? []) this.measure(execution, measurement, occurredAt);\n }\n if (event.type === 'turn_completed' || event.type === 'turn_failed' || event.type === 'turn_canceled') {\n execution.finished = true;\n this.enqueue(execution, { type: 'execution_finished', eventId: randomUUID(), ...execution.grant, succeeded: event.type === 'turn_completed', endedAt: occurredAt ?? Date.now() });\n }\n }\n\n private measure(execution: StoredExecution, measurement: AgentUsageAccounting, occurredAt?: number): void {\n if (!valid(measurement)) throw new Error('Invalid normalized accounting measurement.');\n const key = createHash('sha256').update(measurement.measurementId).digest('hex');\n const previous = execution.measurements[key];\n if (previous) {\n if (signature(previous) !== signature(measurement)) {\n recordProtocolTrace({ stage: 'sdk.accounting', kind: 'measurement', outcome: 'rejected', reason: 'conflicting_measurement', correlation: { channelId: execution.channelId, agentId: this.options.scope.agentId, taskId: execution.bindingId, executionId: execution.grant.executionId, measurementId: measurement.measurementId } });\n throw new Error('Conflicting normalized accounting measurement.');\n }\n return;\n }\n const value = structuredClone(measurement);\n execution.measurements[key] = value;\n const callIndex = value.scope === 'llm_call' ? execution.nextCallIndex++ : undefined;\n this.enqueue(execution, {\n type: 'execution_usage', eventId: randomUUID(), ...execution.grant,\n usageGranularity: value.scope === 'llm_call' ? 'llm_call' : 'execution_aggregate',\n ...(callIndex !== undefined ? { callIndex } : {}), provider: value.provider, model: value.model,\n inputTokens: value.inputTokens, outputTokens: value.outputTokens, cacheReadTokens: value.cacheReadTokens, cacheWriteTokens: value.cacheWriteTokens, observedAt: occurredAt ?? Date.now(),\n }, value.measurementId);\n }\n\n private enqueue(execution: StoredExecution, frame: ExecutionTelemetryFrame, measurementId?: string): void {\n execution.pending.push(frame);\n if (measurementId) this.measurementByEvent(frame.eventId, execution, measurementId);\n this.persist();\n this.trace(execution, frame, 'queued');\n this.flush();\n }\n\n private measurementByEvent(eventId: string, execution: StoredExecution, measurementId?: string): string | undefined {\n const metadata = execution as StoredExecution & { measurementEvents?: Record<string, string> };\n if (measurementId) (metadata.measurementEvents ??= {})[eventId] = measurementId;\n return metadata.measurementEvents?.[eventId];\n }\n\n private trace(execution: StoredExecution, frame: ExecutionTelemetryFrame, outcome: string): void {\n const { telemetryContext: _secret, ...payload } = frame;\n recordProtocolTrace({ stage: 'sdk.accounting', kind: frame.type, outcome,\n correlation: { channelId: execution.channelId, agentId: this.options.scope.agentId, executionId: execution.grant.executionId, taskId: execution.bindingId, inputMessageId: execution.inputMessageId, measurementId: this.measurementByEvent(frame.eventId, execution) }, payload });\n }\n\n private persist(): void {\n try {\n mkdirSync(dirname(this.path), { recursive: true, mode: 0o700 });\n const temporary = `${this.path}.${randomUUID()}.tmp`;\n const serialized = JSON.stringify(this.store);\n if (Buffer.byteLength(serialized) > 16 * 1024 * 1024) throw new Error('Normalized accounting outbox capacity exceeded.');\n writeFileSync(temporary, serialized, { mode: 0o600, flag: 'wx' });\n renameSync(temporary, this.path);\n chmodSync(this.path, 0o600);\n } catch (error) { this.faulted = true; throw error; }\n }\n\n /** A reconnect resets bounded attempts; an ordinary flush never creates a new event identity. */\n flush(): void {\n if (this.disposed || this.faulted) return;\n if (this.timer) clearTimeout(this.timer);\n this.timer = undefined;\n for (const execution of Object.values(this.store.executions)) {\n const frame = execution.pending[0];\n if (!frame || this.inFlight.has(frame.eventId)) continue;\n const attempts = this.attempts.get(frame.eventId) ?? 0;\n if (attempts >= (this.options.retryLimit ?? 5)) continue;\n this.attempts.set(frame.eventId, attempts + 1);\n this.inFlight.add(frame.eventId);\n try { this.options.transport.report(structuredClone(frame)); }\n catch { this.inFlight.delete(frame.eventId); }\n }\n if (Object.values(this.store.executions).some(execution => execution.pending[0] && (this.attempts.get(execution.pending[0].eventId) ?? 0) < (this.options.retryLimit ?? 5))) {\n this.timer = setTimeout(() => { this.timer = undefined; this.inFlight.clear(); this.flush(); }, this.options.retryIntervalMs ?? 2_000);\n this.timer.unref?.();\n }\n }\n\n private acknowledge(ack: ExecutionTelemetryAck): void {\n if (this.disposed || this.faulted) return;\n for (const execution of Object.values(this.store.executions)) {\n const frame = execution.pending[0];\n if (!frame || frame.eventId !== ack.eventId) continue;\n execution.pending.shift();\n if (execution.finished && execution.pending.length === 0) {\n this.store.completed[execution.grant.executionId] = { bindingId: execution.bindingId, contextHash: createHash('sha256').update(execution.grant.telemetryContext).digest('hex') };\n delete this.store.executions[execution.grant.executionId];\n }\n this.persist();\n this.trace(execution, frame, 'acknowledged');\n this.attempts.delete(frame.eventId);\n this.inFlight.delete(frame.eventId);\n this.flush();\n return;\n }\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n if (this.timer) clearTimeout(this.timer);\n for (const unsubscribe of this.subscriptions) unsubscribe();\n this.releaseWriter();\n }\n}\n", "import { NormalizedObservationGate } from './normalized-observation.js';\nimport { randomUUID } from 'node:crypto';\nimport type { AgentTimelineItem, ProviderObservation } from '@borgee/agent-provider-sdk';\nimport type { TimelineReplacement } from './session-observation-types.js';\nimport { formatTimelineReplacement, VerifiedSessionInputs, type NativeInputScope } from './normalized-timeline.js';\nimport { validTimelineReplacement } from './bpp/session-observation.js';\n\n/** Session history cache fed by the owning observer; publication never consumes another stream. */\nexport class SessionTimeline {\n readonly inputs: VerifiedSessionInputs;\n epoch: string = randomUUID();\n publication?: { epoch: string; replacementId: string };\n private observations: ProviderObservation[] = [];\n private bytes = 0;\n private complete = true;\n private gate = new NormalizedObservationGate();\n constructor(readonly scope: NativeInputScope, private readonly agentId: string, private readonly channelId: string) { this.inputs = new VerifiedSessionInputs(scope); }\n append(observation: ProviderObservation): void {\n if (observation.event.type !== 'timeline') return;\n const accepted = this.gate.accept(observation);\n if (!accepted) return;\n observation = accepted;\n const existing = this.observations.findIndex(row => row.sourceKey === observation.sourceKey);\n const previous = this.observations[existing];\n if (previous?.nativeRevision !== undefined && observation.nativeRevision !== undefined && observation.nativeRevision < previous.nativeRevision) return;\n const bytes = Buffer.byteLength(JSON.stringify(observation));\n const previousBytes = existing >= 0 ? Buffer.byteLength(JSON.stringify(this.observations[existing])) : 0;\n if (existing < 0 && this.observations.length >= 4096 || this.bytes - previousBytes + bytes > 1024 * 1024) { this.complete = false; return; }\n if (existing >= 0) this.observations[existing] = structuredClone(observation);\n else this.observations.push(structuredClone(observation));\n this.bytes += bytes - previousBytes;\n }\n replace(observations: ProviderObservation[]): boolean {\n this.complete = false;\n try {\n formatTimelineReplacement(observations, { scope: this.scope, inputs: this.inputs, agentId: this.agentId, channelId: this.channelId });\n const bytes = Buffer.byteLength(JSON.stringify(observations));\n if (bytes > 1024 * 1024) return false;\n // Native truth must survive a temporarily unavailable public sink.\n this.observations = structuredClone(observations); this.bytes = bytes; this.complete = true;\n this.gate = new NormalizedObservationGate(); this.observations.forEach(row => this.gate.accept(row));\n return true;\n } catch { return false; }\n }\n /** Missing cached observations cannot establish a unique input occurrence. */\n get inputEvidenceComplete(): boolean { return this.complete; }\n /** Questionnaire authority comes from the complete native history of this Session. */\n questionnaire(messageId: string): Extract<AgentTimelineItem, { type: 'questionnaire' }> | undefined {\n if (!this.complete) return undefined;\n const matches = this.observations.flatMap(({ event }) => event.type === 'timeline' && event.provider === this.scope.providerId\n && event.item.type === 'questionnaire' && event.item.messageId === messageId ? [event.item] : []);\n if (!matches.length || matches.some(item => JSON.stringify(item) !== JSON.stringify(matches[0]))) return undefined;\n return structuredClone(matches[0]);\n }\n /** Read occurrence identities from the same bounded canonical history, never a second index. */\n inputOccurrences(query: { messageId?: string; token?: string; turnId?: string }): Array<{ messageId: string; turnId?: string; live: boolean }> {\n const matches = new Map<string, { messageId: string; turnId?: string; live: boolean }>();\n for (const { event, delivery } of this.observations) {\n if (event.type !== 'timeline' || event.provider !== this.scope.providerId || event.item.type !== 'user_message' || !event.item.messageId\n || query.messageId !== undefined && event.item.messageId !== query.messageId\n || query.token !== undefined && event.item.clientMessageId !== query.token\n || query.turnId !== undefined && event.turnId !== query.turnId) continue;\n const value = { messageId: event.item.messageId, ...(event.turnId ? { turnId: event.turnId } : {}) };\n const key = JSON.stringify(value);\n matches.set(key, { ...value, live: delivery === 'live' || matches.get(key)?.live === true });\n }\n return [...matches.values()];\n }\n /** A native echo identifies an occurrence only within its receipt-confirmed turn. */\n inputOccurrence(turnId: string, token: string): string | undefined {\n if (!this.inputEvidenceComplete) return undefined;\n const matches = this.inputOccurrences({ turnId, token });\n return matches.length === 1 ? matches[0]!.messageId : undefined;\n }\n\n publish(send: (value: TimelineReplacement, observations: readonly ProviderObservation[]) => boolean): boolean {\n if (!this.complete) return false;\n try {\n const event: TimelineReplacement = { replacement_id: randomUUID(), previous_epoch: this.epoch, epoch: randomUUID(),\n observations: formatTimelineReplacement(this.observations, { scope: this.scope, inputs: this.inputs, agentId: this.agentId, channelId: this.channelId }) };\n if (!validTimelineReplacement(event) || !send(event, this.observations)) return false;\n this.epoch = event.epoch; this.publication = { epoch: event.epoch, replacementId: event.replacement_id }; return true;\n } catch { return false; }\n }\n}\n", "import type { ProviderObservation } from '@borgee/agent-provider-sdk';\nimport type { InputAssociationResult, InputOwnership } from './input-ownership.js';\nimport type { SessionTimeline } from './session-timeline.js';\n\nexport type SessionHistoryProjection<Owner extends string> = Omit<InputAssociationResult<Owner>, 'owned'>;\n\nexport interface SessionLiveProjection<Owner extends string> {\n publicObservation: ProviderObservation;\n association: InputAssociationResult<Owner>;\n}\n\n/** Composes canonical facts and proven ownership without acquiring a native observer. */\nexport class SessionObservationProjection<Owner extends string> {\n constructor(\n readonly timeline: SessionTimeline,\n readonly ownership: InputOwnership<Owner>,\n private readonly taskForOwner: (owner: Owner) => string | undefined,\n ) {}\n\n /** The adapter applies its native gate before projecting; public facts do not require an owner. */\n observeLive(observation: ProviderObservation): SessionLiveProjection<Owner> {\n if (observation.delivery !== 'live') throw new Error('Live observation projection requires live delivery.');\n this.timeline.append(observation);\n return { publicObservation: observation, association: this.ownership.observeLive(observation) };\n }\n\n /** History reconciles metadata only; authoritative recovery remains an explicit ownership operation. */\n appendHistory(observation: ProviderObservation): SessionHistoryProjection<Owner> {\n this.timeline.append(observation);\n return this.reconcileHistory();\n }\n\n replaceHistory(observations: ProviderObservation[]): SessionHistoryProjection<Owner> | undefined {\n if (!this.timeline.replace(observations)) return undefined;\n return this.reconcileHistory();\n }\n\n reconcileHistory(): SessionHistoryProjection<Owner> {\n const { owned: _owned, ...metadata } = this.ownership.observeHistory();\n return metadata;\n }\n\n /** Adapters retain execution scheduling and decide when a proven effect is attributed. */\n attributeOwned(owned: InputAssociationResult<Owner>['owned'][number]): { taskId?: string; changed: boolean } {\n const taskId = this.taskForOwner(owned.owner);\n const changed = !!taskId && owned.observation.event.type === 'timeline'\n && this.timeline.inputs.attributeResult(this.timeline.scope, owned.observation.sourceKey, taskId) === 'changed';\n return { taskId, changed };\n }\n}\n", "import { PROTOCOL_VERSION } from '@borgee/agent-remote-protocol';\nimport type { AgentActivity } from './types.js';\nimport type { NormalizedActivityPublisher } from './normalized-activity.js';\nimport type { SessionTimeline } from './session-timeline.js';\n\ntype TimelineActivity = Extract<AgentActivity, { shape: 'normalized_timeline_replacement' | 'normalized_timeline_recovery' }>;\n\nexport interface SessionTimelinePublicationOptions {\n timeline: SessionTimeline;\n publisher: Pick<NormalizedActivityPublisher, 'adoptTimeline'>;\n bindingId: string;\n agentId: string;\n channelId: string;\n /** Success has the adapter's existing send semantics, not an implied remote acknowledgment. */\n send(activity: TimelineActivity): boolean;\n}\n\n/** Adopts a cut only after its send succeeds; SessionTimeline owns epoch advancement. */\nexport function publishSessionTimeline(options: SessionTimelinePublicationOptions): boolean {\n const { timeline, publisher, bindingId, agentId, channelId, send } = options;\n const published = timeline.publish((event, observations) => {\n if (!send({ shape: 'normalized_timeline_replacement', protocolVersion: PROTOCOL_VERSION,\n sessionControlBindingId: bindingId, timelineEpoch: event.epoch, event })) return false;\n publisher.adoptTimeline(observations, { scope: timeline.scope, inputs: timeline.inputs, agentId, channelId });\n return true;\n });\n if (!published) send({ shape: 'normalized_timeline_recovery', sessionControlBindingId: bindingId,\n timelineEpoch: timeline.epoch, status: 'unavailable', reason: 'timeline_unavailable' });\n return published;\n}\n", "import type { AgentMessageReceipt, AgentQuestionnaireResponse, ProviderObservation } from '@borgee/agent-provider-sdk';\nimport type { InputEvidenceStatus } from './normalized-timeline.js';\nimport type { SessionTimeline } from './session-timeline.js';\n\nexport interface InputAdmission<Owner extends string> {\n key: string;\n owner: Owner;\n clientMessageId?: string;\n taskId?: string;\n issuedToken?: string;\n allocatedMessageId?: string;\n expectedTurnId?: string;\n questionnaireResponse?: AgentQuestionnaireResponse;\n}\nexport interface InputAssociationResult<Owner extends string> {\n status: InputEvidenceStatus;\n owned: Array<{ owner: Owner; observation: ProviderObservation }>;\n correlations: Array<{ key: string; nativeMessageId?: string; status: InputEvidenceStatus }>;\n unavailableOwners: Owner[];\n}\nexport interface InputOwnershipLimits { maxInputs?: number; maxObservations?: number; maxBytes?: number }\n\ninterface Association<Owner extends string> extends InputAdmission<Owner> { receipt?: AgentMessageReceipt; proven: boolean; allocatedObserved?: boolean; acceptedOccurrence?: { messageId: string; turnId?: string }; correlationConflict?: boolean }\ninterface Execution { active: boolean; turnId?: string; unavailable: boolean }\n\n/** Binding-local input evidence, independent of public publication and execution lifetime. */\nexport class InputOwnership<Owner extends string> {\n private readonly inputs = new Map<string, Association<Owner>>();\n private readonly owners = new Map<Owner, Execution>();\n private pending: ProviderObservation[] = [];\n private pendingBytes = 0;\n private invalidated = false;\n private readonly maxInputs: number;\n private readonly maxObservations: number;\n private readonly maxBytes: number;\n constructor(private readonly timeline: SessionTimeline, limits: InputOwnershipLimits = {}) {\n this.maxInputs = Math.min(limits.maxInputs ?? 32, 32);\n this.maxObservations = Math.min(limits.maxObservations ?? 256, 256);\n this.maxBytes = Math.min(limits.maxBytes ?? 1048576, 1048576);\n if (![this.maxInputs, this.maxObservations, this.maxBytes].every(value => Number.isSafeInteger(value) && value > 0)) throw new Error('Invalid input evidence limits.');\n }\n register(input: InputAdmission<Owner>): InputAssociationResult<Owner> {\n if (this.invalidated || typeof input.owner !== 'string' || !input.owner || !input.key || [input.clientMessageId, input.issuedToken, input.allocatedMessageId, input.expectedTurnId, input.taskId].some(value => value !== undefined && !value)) return this.result('invalid');\n const known = this.inputs.get(input.key);\n if (known) {\n const same = known.owner === input.owner && known.clientMessageId === input.clientMessageId && known.taskId === input.taskId\n && known.issuedToken === input.issuedToken && known.allocatedMessageId === input.allocatedMessageId && known.expectedTurnId === input.expectedTurnId\n && JSON.stringify(known.questionnaireResponse) === JSON.stringify(input.questionnaireResponse);\n return this.result(same ? 'unchanged' : 'conflict');\n }\n if (this.owners.get(input.owner)?.active === false) return this.result('invalid');\n if (Buffer.byteLength(JSON.stringify([...this.owners, ...(!this.owners.has(input.owner) ? [[input.owner, { active: true, unavailable: false }]] : [])])) > this.maxBytes) return this.result('capacity');\n if (this.inputs.size >= this.maxInputs || this.owners.size >= 4096 && !this.owners.has(input.owner)\n || Buffer.byteLength(JSON.stringify([...this.inputs.values()])) + Buffer.byteLength(JSON.stringify(input)) > this.maxBytes) return this.result('capacity');\n if ([...this.inputs.values()].some(value => input.issuedToken && value.issuedToken === input.issuedToken\n || input.allocatedMessageId && value.allocatedMessageId === input.allocatedMessageId)) return this.result('conflict');\n this.inputs.set(input.key, { ...structuredClone(input), proven: false });\n if (!this.owners.has(input.owner)) this.owners.set(input.owner, { active: true, unavailable: false });\n return this.result('changed');\n }\n confirm(key: string, receipt: void | AgentMessageReceipt): InputAssociationResult<Owner> {\n const input = this.inputs.get(key);\n if (this.invalidated || !input) return this.result('invalid');\n if (!receipt) return this.result();\n if (receipt.messageId !== undefined && !receipt.messageId || receipt.turnId !== undefined && !receipt.turnId) return this.result('invalid');\n if (receipt.turnId && (input.receipt?.turnId && input.receipt.turnId !== receipt.turnId || input.expectedTurnId && input.expectedTurnId !== receipt.turnId)) return this.result('conflict');\n const messageConflict = !!(receipt.messageId && (input.receipt?.messageId && input.receipt.messageId !== receipt.messageId || input.allocatedMessageId && input.allocatedMessageId !== receipt.messageId));\n const messageId = messageConflict ? input.receipt?.messageId : receipt.messageId ?? input.receipt?.messageId;\n const turnId = receipt.turnId ?? input.receipt?.turnId;\n if (!messageId && !turnId) {\n if (messageConflict) { input.correlationConflict = true; return { ...this.result('conflict'), correlations: [{ key, status: 'conflict' }] }; }\n return this.result('invalid');\n }\n const merged: AgentMessageReceipt = messageId ? { messageId, ...(turnId ? { turnId } : {}) } : { turnId: turnId! };\n if (Buffer.byteLength(JSON.stringify([...this.inputs.values()].map(value => value === input ? { ...value, receipt: merged } : value))) > this.maxBytes) return this.result('capacity');\n const changed = input.receipt?.messageId !== merged.messageId || input.receipt?.turnId !== merged.turnId;\n if (merged.turnId) {\n const claim = this.claim(input.owner, merged.turnId);\n if (claim === 'conflict' || claim === 'capacity') return this.result(claim);\n }\n input.receipt = merged;\n input.correlationConflict ||= messageConflict;\n if (merged.messageId || merged.turnId) input.proven = true;\n const result = this.reconcile(changed ? 'changed' : 'unchanged');\n this.drain(result);\n return result;\n }\n /** The binding appends and gates live observations before this ownership-only route. */\n observeLive(observation: ProviderObservation): InputAssociationResult<Owner> {\n if (this.invalidated || observation.delivery !== 'live') return this.result('invalid');\n if (observation.event.provider !== this.timeline.scope.providerId) return this.result('wrong_scope');\n const event = observation.event;\n if (event.type === 'timeline' && event.item.type === 'user_message' && event.turnId && event.item.messageId) {\n for (const input of this.inputs.values()) {\n if (input.allocatedMessageId === event.item.messageId || input.issuedToken && input.issuedToken === event.item.clientMessageId) input.proven = true;\n if (input.allocatedMessageId === event.item.messageId && (!input.expectedTurnId || input.expectedTurnId === event.turnId)) input.allocatedObserved = true;\n }\n }\n const result = this.reconcile();\n this.drain(result);\n const turnId = 'turnId' in observation.event ? observation.event.turnId : undefined;\n if (!turnId) return result;\n const owner = [...this.owners.entries()].find(([, value]) => value.turnId === turnId);\n if (owner) {\n if (owner[1].active && !owner[1].unavailable) result.owned.push({ owner: owner[0], observation: structuredClone(observation) });\n } else if ([...this.owners.values()].some(value => value.active && !value.turnId && !value.unavailable)) {\n const bytes = Buffer.byteLength(JSON.stringify(observation));\n if (this.pending.length >= this.maxObservations || this.pendingBytes + bytes > this.maxBytes) {\n for (const value of this.owners.values()) if (value.active && !value.turnId) value.unavailable = true;\n this.pending = []; this.pendingBytes = 0; result.status = 'capacity';\n result.unavailableOwners = [...this.owners].filter(([, value]) => value.unavailable).map(([owner]) => owner);\n } else { this.pending.push(structuredClone(observation)); this.pendingBytes += bytes; }\n }\n return result;\n }\n /** History can complete metadata but cannot deliver execution side effects. */\n observeHistory(): InputAssociationResult<Owner> { return this.invalidated ? this.result('invalid') : this.reconcile('unchanged', true); }\n /** Authoritative Session recovery can prove an admitted receipt without replaying history. */\n restoreHistory(): InputAssociationResult<Owner> { return this.invalidated ? this.result('invalid') : this.reconcile('unchanged', true, true); }\n /** Retire obsolete live replay at a native recovery boundary while retaining receipts. */\n retireObservations(): void { this.pending = []; this.pendingBytes = 0; }\n releaseOwner(owner: Owner): void {\n const execution = this.owners.get(owner);\n if (execution) execution.active = false;\n for (const [key, input] of this.inputs) if (input.owner === owner && (input.acceptedOccurrence || !input.clientMessageId)) this.inputs.delete(key);\n if (![...this.owners.values()].some(value => value.active && !value.turnId)) { this.pending = []; this.pendingBytes = 0; }\n }\n rejectInput(key: string): InputAssociationResult<Owner> {\n const input = this.inputs.get(key);\n if (!input || this.invalidated) return this.result('invalid');\n if (input.proven) return this.result();\n this.inputs.delete(key);\n if (![...this.inputs.values()].some(value => value.owner === input.owner)) { this.releaseOwner(input.owner); this.owners.delete(input.owner); }\n return this.result('changed');\n }\n /** Route invalidation revokes pending authority, while retained verified history survives. */\n invalidate(): void { this.invalidated = true; this.inputs.clear(); this.owners.clear(); this.pending = []; this.pendingBytes = 0; }\n dispose(): void { this.invalidate(); }\n turnId(owner: Owner): string | undefined { return this.owners.get(owner)?.turnId; }\n private claim(owner: Owner, turnId: string): InputEvidenceStatus {\n const execution = this.owners.get(owner)!;\n if (execution.turnId && execution.turnId !== turnId || [...this.owners].some(([other, value]) => other !== owner && value.turnId === turnId)) return 'conflict';\n if (execution.turnId === turnId) return 'unchanged';\n const bytes = Buffer.byteLength(JSON.stringify([...this.owners].map(([key, value]) => [key, key === owner ? { ...value, turnId } : value])));\n if (bytes > this.maxBytes) { execution.unavailable = true; return 'capacity'; }\n execution.turnId = turnId;\n return 'changed';\n }\n private reconcile(status: InputEvidenceStatus = 'unchanged', historyOnly = false, recoverReceipt = false): InputAssociationResult<Owner> {\n const result = this.result(status);\n for (const input of this.inputs.values()) {\n if (input.correlationConflict) { result.correlations.push({ key: input.key, status: 'conflict' }); continue; }\n const messageId = input.receipt?.messageId ?? (input.allocatedObserved ? input.allocatedMessageId : undefined);\n if (!messageId && !(input.issuedToken && input.receipt?.turnId)) continue;\n if (!this.timeline.inputEvidenceComplete) {\n result.correlations.push({ key: input.key, status: 'capacity' }); result.status = 'capacity'; continue;\n }\n const matches = messageId ? this.timeline.inputOccurrences({ messageId })\n : input.issuedToken && input.receipt?.turnId\n ? this.timeline.inputOccurrences({ token: input.issuedToken, turnId: input.receipt.turnId }) : [];\n if (!matches.length) continue;\n if (matches.length !== 1) { result.correlations.push({ key: input.key, status: 'conflict' }); continue; }\n const occurrence = matches[0]!;\n if (input.acceptedOccurrence && (input.acceptedOccurrence.messageId !== occurrence.messageId || input.acceptedOccurrence.turnId !== occurrence.turnId)) {\n result.correlations.push({ key: input.key, status: 'conflict' }); continue;\n }\n const expected = input.receipt?.turnId ?? input.expectedTurnId;\n if (expected && occurrence.turnId !== expected || !input.receipt?.messageId && !input.receipt?.turnId && !occurrence.turnId) {\n result.correlations.push({ key: input.key, status: 'conflict' }); continue;\n }\n input.proven = true;\n if (occurrence.turnId && (!historyOnly && occurrence.live || recoverReceipt && input.receipt?.messageId)) {\n const claim = this.claim(input.owner, occurrence.turnId);\n if (claim === 'conflict') { result.correlations.push({ key: input.key, nativeMessageId: occurrence.messageId, status: claim }); continue; }\n if (claim === 'changed' && result.status === 'unchanged') result.status = claim;\n if (claim === 'capacity') { result.status = claim; result.unavailableOwners = this.result().unavailableOwners; }\n }\n const acceptedOccurrence = { messageId: occurrence.messageId, ...(occurrence.turnId ? { turnId: occurrence.turnId } : {}) };\n if (Buffer.byteLength(JSON.stringify([...this.inputs.values()].map(value => value === input ? { ...value, acceptedOccurrence } : value))) > this.maxBytes) {\n result.correlations.push({ key: input.key, status: 'capacity' }); result.status = 'capacity'; continue;\n }\n const enriched = this.timeline.inputs.enrich(this.timeline.scope, occurrence.messageId, {\n clientMessageId: input.clientMessageId, taskId: input.taskId, questionnaireResponse: input.questionnaireResponse, ...(input.clientMessageId ? { origin: { kind: 'borgee' as const } } : {}),\n });\n result.correlations.push({ key: input.key, nativeMessageId: occurrence.messageId, status: enriched });\n if (enriched === 'changed' || enriched === 'unchanged') {\n input.acceptedOccurrence = acceptedOccurrence;\n if (!this.owners.get(input.owner)?.active) this.inputs.delete(input.key);\n }\n }\n return result;\n }\n private drain(result: InputAssociationResult<Owner>): void {\n const retained: ProviderObservation[] = [];\n for (const observation of this.pending) {\n const turnId = 'turnId' in observation.event ? observation.event.turnId : undefined;\n const entry = [...this.owners.entries()].find(([, value]) => value.turnId === turnId);\n if (!entry) { retained.push(observation); continue; }\n if (entry[1].active && !entry[1].unavailable) result.owned.push({ owner: entry[0], observation });\n }\n this.pending = retained;\n this.pendingBytes = retained.reduce((size, value) => size + Buffer.byteLength(JSON.stringify(value)), 0);\n }\n private result(status: InputEvidenceStatus = 'unchanged'): InputAssociationResult<Owner> {\n return { status, owned: [], correlations: [], unavailableOwners: [...this.owners].filter(([, value]) => value.unavailable).map(([owner]) => owner) };\n }\n}\n"],
|
|
5
|
+
"mappings": "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AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA;AAAA,MAC7C;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAA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",
|
|
6
|
+
"names": ["exports", "Hash", "HMAC", "hash", "hmac", "PerMessageDeflate", "data", "PerMessageDeflate", "Receiver", "PerMessageDeflate", "Sender", "extension", "createHash", "PerMessageDeflate", "Receiver", "Sender", "WebSocket", "key", "stream", "WebSocket", "stream", "createWebSocketStream", "err", "open", "protocol", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "WebSocketServer", "version", "map", "record", "TypeSystemPolicy", "Set", "Clear", "Delete", "Entries", "Get", "Has", "Set", "map", "HasPropertyKey", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsDate", "IsFunction", "IsIterator", "IsNull", "IsNumber", "IsObject", "IsString", "IsSymbol", "IsUint8Array", "IsUndefined", "value", "IsArray", "IsDate", "IsUint8Array", "IsObject", "value", "IsArray", "IsDate", "IsUint8Array", "IsObject", "keys", "Array", "IsObject", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsObject", "IsBoolean", "IsNumber", "IsString", "IsNull", "IsObject", "IsPromise", "IsRegExp", "IsString", "IsSymbol", "IsObject", "IsUndefined", "IsUint8Array", "IsArray", "IsBoolean", "IsBigInt", "IsAsyncIterator", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsNull", "IsNumber", "IsPromise", "IsObject", "RemoveOptionalFromRest", "RemoveOptionalFromType", "range", "pattern", "Boolean", "BigInt", "Number", "String", "Boolean", "Number", "BigInt", "String", "Visit", "schema", "IsNumber", "IsInteger", "IsBigInt", "IsString", "IsBoolean", "IsString", "keys", "FromUnion", "IsNumber", "IsInteger", "FromProperties", "FromMappedResult", "FromUnion", "IsArray", "IsObject", "Object", "Promise", "FromProperties", "FromMappedResult", "FromMappedResult", "FromRest", "FromProperties", "IsFunction", "IsAsyncIterator", "IsIterator", "IsObject", "Object", "IsArray", "Array", "IsPromise", "Promise", "map", "FromRest", "FromIntersect", "FromUnion", "FromTuple", "FromArray", "FromProperties", "IsArray", "IsObject", "keys", "Number", "FromProperties", "FromMappedResult", "keys", "Intersect", "schema", "Union", "target", "ByteMarker", "ArrayType", "Visit", "DateType", "ObjectType", "Uint8ArrayType", "type_exports", "IsAny", "IsArgument", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "IsInteger", "IsIntersect", "IsIterator", "IsKind", "IsKindOf", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsNumber", "IsObject", "IsOptional", "IsPromise", "IsReadonly", "IsRecord", "IsRef", "IsRegExp", "IsSchema", "IsString", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTransform", "IsTuple", "IsUint8Array", "IsUndefined", "IsUnion", "IsUnknown", "IsUnsafe", "IsVoid", "IsString", "IsSchema", "IsUndefined", "IsBigInt", "IsNumber", "IsBoolean", "IsReadonly", "IsObject", "IsOptional", "IsAny", "IsKindOf", "IsArgument", "IsArray", "IsAsyncIterator", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "HasPropertyKey", "IsInteger", "IsIntersect", "IsTransform", "IsIterator", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsPromise", "IsRecord", "keys", "IsRef", "IsRegExp", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTuple", "IsUnion", "IsUint8Array", "IsUnknown", "IsUnsafe", "IsVoid", "IsKind", "ExtendsResult", "type_exports", "FromArray", "Visit", "FromIntersect", "FromLiteral", "Number", "String", "FromTemplateLiteral", "FromTuple", "FromUnion", "FromProperties", "FromMappedResult", "FromMappedKey", "FromAny", "FromArray", "Visit", "value", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromInteger", "FromIntersect", "schema", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "ValueErrorType", "IsDefined", "FromAny", "FromArgument", "FromArray", "Visit", "value", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromImport", "FromInteger", "FromIntersect", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "FromKind", "_AssertError_Iterator", "FromObject", "Clone", "FromArray", "FromDate", "Clone", "FromAny", "FromArgument", "FromArray", "Visit", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromImport", "FromInteger", "FromIntersect", "schema", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "FromKind", "Create", "object", "keys", "schema", "Clone", "Create", "FromArray", "value", "Visit", "FromConstructor", "FromImport", "FromIntersect", "FromNever", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "FromArray", "value", "Visit", "FromImport", "FromIntersect", "schema", "Clone", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "value", "Default", "FromArray", "Visit", "FromBigInt", "FromBoolean", "FromDate", "FromImport", "FromInteger", "FromIntersect", "schema", "FromLiteral", "FromNull", "FromNumber", "FromObject", "FromRecord", "FromRef", "FromString", "FromSymbol", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "Clone", "Default", "FromArray", "value", "Visit", "FromIntersect", "FromImport", "FromNot", "FromObject", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "Default", "FromArray", "value", "Visit", "FromImport", "FromIntersect", "FromNot", "FromObject", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "FromArray", "Visit", "FromAsyncIterator", "FromConstructor", "schema", "FromFunction", "FromIntersect", "FromImport", "FromIterator", "FromNot", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "Clone", "FromArray", "Visit", "FromDate", "FromImport", "FromIntersect", "schema", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "Default", "Delete", "Get", "Has", "Set", "Escape", "Set", "Delete", "Has", "Get", "ObjectType", "DateType", "ArrayType", "Object", "String", "Delete", "ObjectType", "Visit", "ArrayType", "TypedArrayType", "ValueType", "Clone", "IsStandardObject", "ObjectType", "Clone", "Visit", "ArrayType", "TypedArrayType", "ValueType", "ParseRegistry", "Clone", "Default", "Delete", "Set", "Get", "value", "value_exports", "Clone", "Create", "Default", "FromComputed", "FromRef", "FromIntersect", "FromRest", "FromUnion", "FromPromise", "IsPromise", "Object", "Date", "Symbol", "Uint8Array", "FromArray", "FromValue", "FromProperties", "IsAsyncIterator", "IsIterator", "IsArray", "IsUint8Array", "Uint8Array", "IsDate", "Date", "IsObject", "Object", "IsFunction", "IsUndefined", "IsNull", "IsSymbol", "Symbol", "IsBigInt", "BigInt", "IsNumber", "IsBoolean", "IsString", "IsUndefined", "FromProperties", "FromMappedResult", "FromProperties", "FromMappedResult", "Object", "IsUndefined", "IsBoolean", "IsInteger", "IsNumber", "IsRegExp", "IsString", "record", "RecordKey", "String", "Number", "RecordValue", "FromConstructor", "FromFunction", "FromIntersect", "FromUnion", "FromTuple", "IsUndefined", "FromArray", "FromAsyncIterator", "FromIterator", "FromPromise", "FromObject", "FromProperties", "Object", "FromRecord", "RecordKey", "RecordValue", "FromArgument", "FromProperty", "IsFunction", "IsArray", "IsAsyncIterator", "IsIterator", "IsPromise", "IsObject", "FromTemplateLiteral", "FromRest", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperty", "FromProperties", "FromObject", "Object", "result", "IsObject", "IsArray", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperties", "FromObject", "Type", "keys", "Object", "UnionFromPropertyKeys", "result", "IsObject", "IsArray", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromComputed", "FromRef", "FromProperties", "FromObject", "Object", "FromRest", "IsObject", "IsBigInt", "IsBoolean", "IsInteger", "IsNull", "IsNumber", "IsString", "IsSymbol", "IsUndefined", "FromProperties", "FromMappedResult", "FromComputed", "FromRef", "FromProperties", "FromObject", "Object", "FromRest", "IsObject", "IsBigInt", "IsBoolean", "IsInteger", "IsNull", "IsNumber", "IsString", "IsSymbol", "IsUndefined", "FromProperties", "FromMappedResult", "FromType", "FromComputed", "FromArray", "Array", "FromAsyncIterator", "FromConstructor", "FromTypes", "FromFunction", "FromIntersect", "FromIterator", "FromObject", "Object", "FromRecord", "RecordValue", "FromTuple", "FromUnion", "IsArray", "IsAsyncIterator", "IsFunction", "IsIterator", "IsObject", "Not", "IsFunction", "IsUndefined", "RegExp", "IsString", "IsFunction", "decode", "Encode", "Decode", "type_exports", "Array", "BigInt", "Boolean", "Date", "Not", "Number", "Object", "Promise", "RegExp", "String", "Symbol", "Uint8Array", "type_exports", "NonEmptyString", "Strict", "NonNegativeInteger", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "value_exports", "issues", "identity", "version", "object", "rpc", "stream", "closeCode", "strict", "value_exports", "value_exports", "version", "value_exports", "object", "pending", "id", "object", "id", "keys", "result", "identity", "bytes", "bytes", "provider", "id", "object", "keys", "routeFields", "object", "id", "object", "result", "value", "sequence", "text", "randomUUID", "PROTOCOL_VERSION", "randomUUID", "pending", "WebSocket", "identity", "id", "valid", "bounded", "sent", "bytes", "text", "open", "sequence", "text", "NORMALIZED_TIMELINE_MAX_BYTES", "NORMALIZED_TIMELINE_MAX_ITEMS", "bytes", "createHash", "createHash", "provider", "createHash", "createHash", "randomUUID", "randomUUID", "createHash", "randomUUID", "randomUUID", "bytes", "bytes", "owner"]
|
|
7
7
|
}
|