@yoooclaw/cli 0.0.8 → 0.1.1
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 +5 -3
- package/dist/bin.cjs +109 -197
- package/dist/bin.cjs.map +10 -11
- package/dist/index.cjs +109 -197
- package/dist/index.cjs.map +10 -11
- package/package.json +7 -3
package/dist/bin.cjs.map
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/openclaw/dist/json-files-DMrq2IfK.js", "../node_modules/openclaw/dist/home-dir-BnP38vVl.js", "../node_modules/openclaw/dist/paths-Y4UT24Of.js", "../node_modules/openclaw/dist/pairing-token-C5g4QivV.js", "../node_modules/openclaw/dist/device-auth-BRUxebMD.js", "../node_modules/openclaw/dist/device-pairing-DeNkV6bj.js", "../node_modules/openclaw/dist/device-bootstrap-DKsEcfsd.js", "../node_modules/openclaw/dist/device-bootstrap-DTI1FU3A.js", "../node_modules/openclaw/dist/plugin-sdk/device-bootstrap.js", "../src/program.ts", "../src/command-tree.ts", "../src/context.ts", "../src/paths.ts", "../src/errors.ts", "../src/output/format.ts", "../src/version.ts", "../src/fs-utils.ts", "../src/prompt.ts", "../src/config/store.ts", "../src/config/schema.ts", "../src/credentials/store.ts", "../src/credentials/keychain.ts", "../src/credentials/refs.ts", "../src/commands/config.ts", "../src/commands/profile.ts", "../src/daemon/lock.ts", "../src/daemon/client.ts", "../src/commands/auth.ts", "../src/notification/query.ts", "../src/vendor/cli/helpers.ts", "../src/vendor/cli/ntf-query.ts", "../src/vendor/notification/storage.ts", "../src/vendor/notification/feishu-normalize.ts", "../src/vendor/ingest-context.ts", "../src/vendor/plugin/notifications.ts", "../src/vendor/tunnel/utils.ts", "../src/vendor/tunnel/http-proxy.ts", "../src/vendor/plugin/shared.ts", "../src/vendor/recording/storage.ts", "../src/vendor/recording/state-machine.ts", "../src/vendor/recording/transcript-document.ts", "../src/vendor/recording/downloader.ts", "../src/vendor/recording/asr.ts", "../src/vendor/auth/credentials.ts", "../src/vendor/profile/detect.ts", "../src/vendor/profile/paths.ts", "../src/vendor/profile/runtime-paths.ts", "../src/vendor/env.ts", "../src/vendor/recording/whisper-local.ts", "../src/vendor/recording/handler.ts", "../src/vendor/plugin/recordings.ts", "../src/vendor/light-rules/storage.ts", "../src/vendor/light/repeat.ts", "../src/vendor/light-rules/registry.ts", "../src/vendor/light/validators.ts", "../src/vendor/light-rules/names.ts", "../src/vendor/light-rules/gateway.ts", "../src/vendor/light/sender.ts", "../src/vendor/light/protocol.ts", "../src/vendor/tunnel/relay-client.ts", "../node_modules/ws/wrapper.mjs", "../src/vendor/tunnel/proxy.ts", "../src/vendor/tunnel/device-identity.ts", "../src/vendor/tunnel/ws-proxy.ts", "../src/shared.ts", "../src/commands/notification.ts", "../src/notification/sync.ts", "../src/commands/sync.ts", "../src/commands/recording.ts", "../src/image/storage.ts", "../src/commands/image.ts", "../src/log/reader.ts", "../src/commands/log.ts", "../src/commands/migrate.ts", "../src/commands/update.ts", "../src/commands/doctor.ts", "../src/commands/skills.ts", "../src/commands/daemon.ts", "../src/daemon/main.ts", "../src/daemon/logger.ts", "../src/daemon/runtime.ts", "../src/image/channel.ts", "../src/monitor/store.ts", "../src/daemon/light-send.ts", "../src/daemon/recording-events.ts", "../src/daemon/recording-bridge.ts", "../src/daemon/gateway-compat.ts", "../src/daemon/relay-dispatcher.ts", "../src/daemon/relay.ts", "../src/daemon/tunnel-supervisor.ts", "../src/commands/daemon-services.ts", "../src/commands/registry.ts", "../src/index.ts", "../src/bin.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"'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",
|
|
6
6
|
"'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",
|
|
7
7
|
"'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",
|
|
8
8
|
"'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",
|
|
9
9
|
"'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",
|
|
10
|
-
"'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.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._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._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 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._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._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",
|
|
10
|
+
"'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._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._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n if (\n this._maxFragments > 0 &&\n this._fragments.length >= this._maxFragments\n ) {\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 //\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 if (\n this._maxFragments > 0 &&\n this._fragments.length >= this._maxFragments\n ) {\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 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._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",
|
|
11
11
|
"/* 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",
|
|
12
12
|
"'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",
|
|
13
13
|
"'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",
|
|
14
|
-
"/* 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.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 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.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 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 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",
|
|
14
|
+
"/* 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=1048576] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=131072] 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: 1024 * 1024,\n maxFragments: 128 * 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",
|
|
15
15
|
"/* 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",
|
|
16
16
|
"'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",
|
|
17
|
-
"/* 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.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 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 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",
|
|
17
|
+
"/* 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=1048576] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=131072] 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: 1024 * 1024,\n maxFragments: 128 * 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",
|
|
18
18
|
"import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport { randomUUID } from \"node:crypto\";\n//#region src/infra/json-files.ts\nasync function readJsonFile(filePath) {\n\ttry {\n\t\tconst raw = await fs.readFile(filePath, \"utf8\");\n\t\treturn JSON.parse(raw);\n\t} catch {\n\t\treturn null;\n\t}\n}\nasync function writeJsonAtomic(filePath, value, options) {\n\tawait writeTextAtomic(filePath, JSON.stringify(value, null, 2), {\n\t\tmode: options?.mode,\n\t\tensureDirMode: options?.ensureDirMode,\n\t\tappendTrailingNewline: options?.trailingNewline\n\t});\n}\nasync function writeTextAtomic(filePath, content, options) {\n\tconst mode = options?.mode ?? 384;\n\tconst payload = options?.appendTrailingNewline && !content.endsWith(\"\\n\") ? `${content}\\n` : content;\n\tconst mkdirOptions = { recursive: true };\n\tif (typeof options?.ensureDirMode === \"number\") mkdirOptions.mode = options.ensureDirMode;\n\tawait fs.mkdir(path.dirname(filePath), mkdirOptions);\n\tconst parentDir = path.dirname(filePath);\n\tconst tmp = `${filePath}.${randomUUID()}.tmp`;\n\ttry {\n\t\tconst tmpHandle = await fs.open(tmp, \"w\", mode);\n\t\ttry {\n\t\t\tawait tmpHandle.writeFile(payload, { encoding: \"utf8\" });\n\t\t\tawait tmpHandle.sync();\n\t\t} finally {\n\t\t\tawait tmpHandle.close().catch(() => void 0);\n\t\t}\n\t\ttry {\n\t\t\tawait fs.chmod(tmp, mode);\n\t\t} catch {}\n\t\tawait fs.rename(tmp, filePath);\n\t\ttry {\n\t\t\tconst dirHandle = await fs.open(parentDir, \"r\");\n\t\t\ttry {\n\t\t\t\tawait dirHandle.sync();\n\t\t\t} finally {\n\t\t\t\tawait dirHandle.close().catch(() => void 0);\n\t\t\t}\n\t\t} catch {}\n\t\ttry {\n\t\t\tawait fs.chmod(filePath, mode);\n\t\t} catch {}\n\t} finally {\n\t\tawait fs.rm(tmp, { force: true }).catch(() => void 0);\n\t}\n}\nfunction createAsyncLock() {\n\tlet lock = Promise.resolve();\n\treturn async function withLock(fn) {\n\t\tconst prev = lock;\n\t\tlet release;\n\t\tlock = new Promise((resolve) => {\n\t\t\trelease = resolve;\n\t\t});\n\t\tawait prev;\n\t\ttry {\n\t\t\treturn await fn();\n\t\t} finally {\n\t\t\trelease?.();\n\t\t}\n\t};\n}\n//#endregion\nexport { writeTextAtomic as i, readJsonFile as n, writeJsonAtomic as r, createAsyncLock as t };\n",
|
|
19
19
|
"import path from \"node:path\";\nimport os from \"node:os\";\n//#region src/infra/home-dir.ts\nfunction normalize(value) {\n\tconst trimmed = value?.trim();\n\tif (!trimmed) return;\n\tif (trimmed === \"undefined\" || trimmed === \"null\") return;\n\treturn trimmed;\n}\nfunction resolveEffectiveHomeDir(env = process.env, homedir = os.homedir) {\n\tconst raw = resolveRawHomeDir(env, homedir);\n\treturn raw ? path.resolve(raw) : void 0;\n}\nfunction resolveOsHomeDir(env = process.env, homedir = os.homedir) {\n\tconst raw = resolveRawOsHomeDir(env, homedir);\n\treturn raw ? path.resolve(raw) : void 0;\n}\nfunction resolveRawHomeDir(env, homedir) {\n\tconst explicitHome = normalize(env.OPENCLAW_HOME);\n\tif (explicitHome) {\n\t\tif (explicitHome === \"~\" || explicitHome.startsWith(\"~/\") || explicitHome.startsWith(\"~\\\\\")) {\n\t\t\tconst fallbackHome = resolveRawOsHomeDir(env, homedir);\n\t\t\tif (fallbackHome) return explicitHome.replace(/^~(?=$|[\\\\/])/, fallbackHome);\n\t\t\treturn;\n\t\t}\n\t\treturn explicitHome;\n\t}\n\treturn resolveRawOsHomeDir(env, homedir);\n}\nfunction resolveRawOsHomeDir(env, homedir) {\n\tconst envHome = normalize(env.HOME);\n\tif (envHome) return envHome;\n\tconst userProfile = normalize(env.USERPROFILE);\n\tif (userProfile) return userProfile;\n\treturn normalizeSafe(homedir);\n}\nfunction normalizeSafe(homedir) {\n\ttry {\n\t\treturn normalize(homedir());\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction resolveRequiredHomeDir(env = process.env, homedir = os.homedir) {\n\treturn resolveEffectiveHomeDir(env, homedir) ?? path.resolve(process.cwd());\n}\nfunction resolveRequiredOsHomeDir(env = process.env, homedir = os.homedir) {\n\treturn resolveOsHomeDir(env, homedir) ?? path.resolve(process.cwd());\n}\nfunction expandHomePrefix(input, opts) {\n\tif (!input.startsWith(\"~\")) return input;\n\tconst home = normalize(opts?.home) ?? resolveEffectiveHomeDir(opts?.env ?? process.env, opts?.homedir ?? os.homedir);\n\tif (!home) return input;\n\treturn input.replace(/^~(?=$|[\\\\/])/, home);\n}\nfunction resolveHomeRelativePath(input, opts) {\n\tconst trimmed = input.trim();\n\tif (!trimmed) return trimmed;\n\tif (trimmed.startsWith(\"~\")) {\n\t\tconst expanded = expandHomePrefix(trimmed, {\n\t\t\thome: resolveRequiredHomeDir(opts?.env ?? process.env, opts?.homedir ?? os.homedir),\n\t\t\tenv: opts?.env,\n\t\t\thomedir: opts?.homedir\n\t\t});\n\t\treturn path.resolve(expanded);\n\t}\n\treturn path.resolve(trimmed);\n}\nfunction resolveOsHomeRelativePath(input, opts) {\n\tconst trimmed = input.trim();\n\tif (!trimmed) return trimmed;\n\tif (trimmed.startsWith(\"~\")) {\n\t\tconst expanded = expandHomePrefix(trimmed, {\n\t\t\thome: resolveRequiredOsHomeDir(opts?.env ?? process.env, opts?.homedir ?? os.homedir),\n\t\t\tenv: opts?.env,\n\t\t\thomedir: opts?.homedir\n\t\t});\n\t\treturn path.resolve(expanded);\n\t}\n\treturn path.resolve(trimmed);\n}\n//#endregion\nexport { resolveOsHomeRelativePath as a, resolveOsHomeDir as i, resolveEffectiveHomeDir as n, resolveRequiredHomeDir as o, resolveHomeRelativePath as r, resolveRequiredOsHomeDir as s, expandHomePrefix as t };\n",
|
|
20
20
|
"import { o as resolveRequiredHomeDir, r as resolveHomeRelativePath } from \"./home-dir-BnP38vVl.js\";\nimport fsSync from \"node:fs\";\nimport path from \"node:path\";\nimport os from \"node:os\";\n//#region src/config/paths.ts\n/**\n* Nix mode detection: When OPENCLAW_NIX_MODE=1, the gateway is running under Nix.\n* In this mode:\n* - No auto-install flows should be attempted\n* - Missing dependencies should produce actionable Nix-specific error messages\n* - Config is managed externally (read-only from Nix perspective)\n*/\nfunction resolveIsNixMode(env = process.env) {\n\treturn env.OPENCLAW_NIX_MODE === \"1\";\n}\nconst isNixMode = resolveIsNixMode();\nconst LEGACY_STATE_DIRNAMES = [\".clawdbot\", \".moldbot\"];\nconst NEW_STATE_DIRNAME = \".openclaw\";\nconst CONFIG_FILENAME = \"openclaw.json\";\nconst LEGACY_CONFIG_FILENAMES = [\"clawdbot.json\", \"moldbot.json\"];\nfunction resolveDefaultHomeDir() {\n\treturn resolveRequiredHomeDir(process.env, os.homedir);\n}\n/** Build a homedir thunk that respects OPENCLAW_HOME for the given env. */\nfunction envHomedir(env) {\n\treturn () => resolveRequiredHomeDir(env, os.homedir);\n}\nfunction legacyStateDirs(homedir = resolveDefaultHomeDir) {\n\treturn LEGACY_STATE_DIRNAMES.map((dir) => path.join(homedir(), dir));\n}\nfunction newStateDir(homedir = resolveDefaultHomeDir) {\n\treturn path.join(homedir(), NEW_STATE_DIRNAME);\n}\nfunction resolveLegacyStateDir(homedir = resolveDefaultHomeDir) {\n\treturn legacyStateDirs(homedir)[0] ?? newStateDir(homedir);\n}\nfunction resolveLegacyStateDirs(homedir = resolveDefaultHomeDir) {\n\treturn legacyStateDirs(homedir);\n}\nfunction resolveNewStateDir(homedir = resolveDefaultHomeDir) {\n\treturn newStateDir(homedir);\n}\n/**\n* State directory for mutable data (sessions, logs, caches).\n* Can be overridden via OPENCLAW_STATE_DIR.\n* Default: ~/.openclaw\n*/\nfunction resolveStateDir(env = process.env, homedir = envHomedir(env)) {\n\tconst effectiveHomedir = () => resolveRequiredHomeDir(env, homedir);\n\tconst override = env.OPENCLAW_STATE_DIR?.trim();\n\tif (override) return resolveUserPath(override, env, effectiveHomedir);\n\tconst newDir = newStateDir(effectiveHomedir);\n\tif (env.OPENCLAW_TEST_FAST === \"1\") return newDir;\n\tconst legacyDirs = legacyStateDirs(effectiveHomedir);\n\tif (fsSync.existsSync(newDir)) return newDir;\n\tconst existingLegacy = legacyDirs.find((dir) => {\n\t\ttry {\n\t\t\treturn fsSync.existsSync(dir);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\tif (existingLegacy) return existingLegacy;\n\treturn newDir;\n}\nfunction resolveUserPath(input, env = process.env, homedir = envHomedir(env)) {\n\treturn resolveHomeRelativePath(input, {\n\t\tenv,\n\t\thomedir\n\t});\n}\nconst STATE_DIR = resolveStateDir();\n/**\n* Config file path (JSON or JSON5).\n* Can be overridden via OPENCLAW_CONFIG_PATH.\n* Default: ~/.openclaw/openclaw.json (or $OPENCLAW_STATE_DIR/openclaw.json)\n*/\nfunction resolveCanonicalConfigPath(env = process.env, stateDir = resolveStateDir(env, envHomedir(env))) {\n\tconst override = env.OPENCLAW_CONFIG_PATH?.trim();\n\tif (override) return resolveUserPath(override, env, envHomedir(env));\n\treturn path.join(stateDir, CONFIG_FILENAME);\n}\n/**\n* Resolve the active config path by preferring existing config candidates\n* before falling back to the canonical path.\n*/\nfunction resolveConfigPathCandidate(env = process.env, homedir = envHomedir(env)) {\n\tif (env.OPENCLAW_TEST_FAST === \"1\") return resolveCanonicalConfigPath(env, resolveStateDir(env, homedir));\n\tconst existing = resolveDefaultConfigCandidates(env, homedir).find((candidate) => {\n\t\ttry {\n\t\t\treturn fsSync.existsSync(candidate);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\tif (existing) return existing;\n\treturn resolveCanonicalConfigPath(env, resolveStateDir(env, homedir));\n}\n/**\n* Active config path (prefers existing config files).\n*/\nfunction resolveConfigPath(env = process.env, stateDir = resolveStateDir(env, envHomedir(env)), homedir = envHomedir(env)) {\n\tconst override = env.OPENCLAW_CONFIG_PATH?.trim();\n\tif (override) return resolveUserPath(override, env, homedir);\n\tif (env.OPENCLAW_TEST_FAST === \"1\") return path.join(stateDir, CONFIG_FILENAME);\n\tconst stateOverride = env.OPENCLAW_STATE_DIR?.trim();\n\tconst existing = [path.join(stateDir, CONFIG_FILENAME), ...LEGACY_CONFIG_FILENAMES.map((name) => path.join(stateDir, name))].find((candidate) => {\n\t\ttry {\n\t\t\treturn fsSync.existsSync(candidate);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\tif (existing) return existing;\n\tif (stateOverride) return path.join(stateDir, CONFIG_FILENAME);\n\tconst defaultStateDir = resolveStateDir(env, homedir);\n\tif (path.resolve(stateDir) === path.resolve(defaultStateDir)) return resolveConfigPathCandidate(env, homedir);\n\treturn path.join(stateDir, CONFIG_FILENAME);\n}\nconst CONFIG_PATH = resolveConfigPathCandidate();\n/**\n* Resolve default config path candidates across default locations.\n* Order: explicit config path → state-dir-derived paths → new default.\n*/\nfunction resolveDefaultConfigCandidates(env = process.env, homedir = envHomedir(env)) {\n\tconst effectiveHomedir = () => resolveRequiredHomeDir(env, homedir);\n\tconst explicit = env.OPENCLAW_CONFIG_PATH?.trim();\n\tif (explicit) return [resolveUserPath(explicit, env, effectiveHomedir)];\n\tconst candidates = [];\n\tconst openclawStateDir = env.OPENCLAW_STATE_DIR?.trim();\n\tif (openclawStateDir) {\n\t\tconst resolved = resolveUserPath(openclawStateDir, env, effectiveHomedir);\n\t\tcandidates.push(path.join(resolved, CONFIG_FILENAME));\n\t\tcandidates.push(...LEGACY_CONFIG_FILENAMES.map((name) => path.join(resolved, name)));\n\t}\n\tconst defaultDirs = [newStateDir(effectiveHomedir), ...legacyStateDirs(effectiveHomedir)];\n\tfor (const dir of defaultDirs) {\n\t\tcandidates.push(path.join(dir, CONFIG_FILENAME));\n\t\tcandidates.push(...LEGACY_CONFIG_FILENAMES.map((name) => path.join(dir, name)));\n\t}\n\treturn candidates;\n}\nconst DEFAULT_GATEWAY_PORT = 18789;\n/**\n* Gateway lock directory (ephemeral).\n* Default: os.tmpdir()/openclaw-<uid> (uid suffix when available).\n*/\nfunction resolveGatewayLockDir(tmpdir = os.tmpdir) {\n\tconst base = tmpdir();\n\tconst uid = typeof process.getuid === \"function\" ? process.getuid() : void 0;\n\tconst suffix = uid != null ? `openclaw-${uid}` : \"openclaw\";\n\treturn path.join(base, suffix);\n}\nconst OAUTH_FILENAME = \"oauth.json\";\n/**\n* OAuth credentials storage directory.\n*\n* Precedence:\n* - `OPENCLAW_OAUTH_DIR` (explicit override)\n* - `$*_STATE_DIR/credentials` (canonical server/default)\n*/\nfunction resolveOAuthDir(env = process.env, stateDir = resolveStateDir(env, envHomedir(env))) {\n\tconst override = env.OPENCLAW_OAUTH_DIR?.trim();\n\tif (override) return resolveUserPath(override, env, envHomedir(env));\n\treturn path.join(stateDir, \"credentials\");\n}\nfunction resolveOAuthPath(env = process.env, stateDir = resolveStateDir(env, envHomedir(env))) {\n\treturn path.join(resolveOAuthDir(env, stateDir), OAUTH_FILENAME);\n}\nfunction parseGatewayPortEnvValue(raw) {\n\tconst trimmed = raw?.trim();\n\tif (!trimmed) return null;\n\tif (/^\\d+$/.test(trimmed)) {\n\t\tconst parsed = Number.parseInt(trimmed, 10);\n\t\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n\t}\n\tconst bracketedIpv6Match = trimmed.match(/^\\[[^\\]]+\\]:(\\d+)$/);\n\tif (bracketedIpv6Match?.[1]) {\n\t\tconst parsed = Number.parseInt(bracketedIpv6Match[1], 10);\n\t\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n\t}\n\tconst firstColon = trimmed.indexOf(\":\");\n\tconst lastColon = trimmed.lastIndexOf(\":\");\n\tif (firstColon <= 0 || firstColon !== lastColon) return null;\n\tconst suffix = trimmed.slice(firstColon + 1);\n\tif (!/^\\d+$/.test(suffix)) return null;\n\tconst parsed = Number.parseInt(suffix, 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n}\nfunction resolveGatewayPort(cfg, env = process.env) {\n\tconst envRaw = env.OPENCLAW_GATEWAY_PORT?.trim();\n\tconst envPort = parseGatewayPortEnvValue(envRaw);\n\tif (envPort !== null) return envPort;\n\tconst configPort = cfg?.gateway?.port;\n\tif (typeof configPort === \"number\" && Number.isFinite(configPort)) {\n\t\tif (configPort > 0) return configPort;\n\t}\n\treturn DEFAULT_GATEWAY_PORT;\n}\n//#endregion\nexport { resolveStateDir as _, resolveCanonicalConfigPath as a, resolveDefaultConfigCandidates as c, resolveIsNixMode as d, resolveLegacyStateDir as f, resolveOAuthPath as g, resolveOAuthDir as h, isNixMode as i, resolveGatewayLockDir as l, resolveNewStateDir as m, DEFAULT_GATEWAY_PORT as n, resolveConfigPath as o, resolveLegacyStateDirs as p, STATE_DIR as r, resolveConfigPathCandidate as s, CONFIG_PATH as t, resolveGatewayPort as u };\n",
|
|
@@ -62,10 +62,9 @@
|
|
|
62
62
|
"/**\n * 宿主检测。\n *\n * - detectHostKind():旧的路径/状态目录家族检测(openclaw | qclaw),行为与 host.ts 完全一致。\n * - resolveClawKind():新的渠道 Profile 选择(openclaw | arkclaw | jvsclaw),\n * 优先级 PHONE_NOTIFICATIONS_CLAW_PROFILE 环境变量 > 持久化 profile >\n * jvsclaw 直解 tgz 痕迹 > openclaw。\n */\nimport { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { ClawKind, HostKind } from \"./types.js\";\nimport {\n DEFAULT_JVSCLAW_STATE_DIR,\n loadQClawMeta,\n hasOpenClawMarkers,\n resolveConfigPathFromEnv,\n resolvePersistedProfileStateDirs,\n resolvePluginConfigPathOverrideFromEnv,\n resolveStateDirFromEnv,\n trimToUndefined,\n} from \"./paths.js\";\n\nfunction detectHostKindFromPath(value: string | undefined): HostKind | undefined {\n if (!value) {\n return undefined;\n }\n const normalized = value.replace(/\\\\/g, \"/\").toLowerCase();\n if (\n normalized.endsWith(\"/.qclaw\") ||\n normalized.includes(\"/.qclaw/\") ||\n normalized.endsWith(\"/.qclow\") ||\n normalized.includes(\"/.qclow/\")\n ) {\n return \"qclaw\";\n }\n if (normalized.endsWith(\"/.openclaw\") || normalized.includes(\"/.openclaw/\")) {\n return \"openclaw\";\n }\n return undefined;\n}\n\nexport function detectHostKind(): HostKind {\n if (\n trimToUndefined(process.env.QCLAW_STATE_DIR) ||\n trimToUndefined(process.env.QCLAW_CONFIG_PATH) ||\n trimToUndefined(process.env.QCLAW_HOME)\n ) {\n return \"qclaw\";\n }\n\n const pathHintKind =\n detectHostKindFromPath(resolveStateDirFromEnv()) ??\n detectHostKindFromPath(resolveConfigPathFromEnv());\n if (pathHintKind) {\n return pathHintKind;\n }\n\n if (hasOpenClawMarkers()) {\n return \"openclaw\";\n }\n\n if (loadQClawMeta()) {\n return \"qclaw\";\n }\n\n return \"openclaw\";\n}\n\nconst VALID_CLAW_KINDS: ReadonlySet<string> = new Set<ClawKind>([\n \"openclaw\",\n \"arkclaw\",\n \"jvsclaw\",\n]);\nconst PLUGIN_ID = \"phone-notifications\";\n\n/** 读取持久化到可写 stateDir/.env 的 PHONE_NOTIFICATIONS_CLAW_PROFILE。 */\nfunction readPersistedClawProfile(): string | undefined {\n for (const stateDir of resolvePersistedProfileStateDirs()) {\n let content: string;\n try {\n content = readFileSync(join(stateDir, \".env\"), \"utf-8\");\n } catch {\n continue;\n }\n for (const line of content.split(\"\\n\")) {\n const eq = line.indexOf(\"=\");\n if (eq < 1) continue;\n if (line.slice(0, eq).trim() === \"PHONE_NOTIFICATIONS_CLAW_PROFILE\") {\n return line.slice(eq + 1).trim();\n }\n }\n }\n return undefined;\n}\n\nfunction hasJvsclawEnvHint(): boolean {\n return Boolean(\n trimToUndefined(process.env.JVSCLAW_STATE_DIR) ||\n trimToUndefined(process.env.JVSCLAW_CONFIG_PATH) ||\n trimToUndefined(process.env.JVSCLAW_HOME),\n );\n}\n\nfunction readPluginLinkSecret(configPath: string | undefined): string | undefined {\n if (!configPath) return undefined;\n\n let config: unknown;\n try {\n config = JSON.parse(readFileSync(configPath, \"utf-8\"));\n } catch {\n return undefined;\n }\n\n const entries = readObject(readObject(config, \"plugins\"), \"entries\");\n const pluginEntry = readObject(entries, PLUGIN_ID);\n const pluginConfig = readObject(pluginEntry, \"config\");\n const linkSecret = pluginConfig?.link_secret;\n return typeof linkSecret === \"string\"\n ? linkSecret.trim() || undefined\n : undefined;\n}\n\nfunction hasJvsclawLinkSecret(): boolean {\n const paths = [\n resolvePluginConfigPathOverrideFromEnv(),\n resolveConfigPathFromEnv(),\n join(DEFAULT_JVSCLAW_STATE_DIR, \"openclaw.json\"),\n ].filter((value, index, arr): value is string => Boolean(value) && arr.indexOf(value) === index);\n\n return paths.some((configPath) => Boolean(readPluginLinkSecret(configPath)));\n}\n\nfunction readObject(\n value: unknown,\n key: string,\n): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const nested = (value as Record<string, unknown>)[key];\n return nested && typeof nested === \"object\"\n ? (nested as Record<string, unknown>)\n : undefined;\n}\n\n/**\n * 选择渠道 Profile。\n * 优先级:PHONE_NOTIFICATIONS_CLAW_PROFILE 环境变量 > 持久化的 .env(安装脚本 --channel)\n * > jvsclaw 直解 tgz 的运行期/配置痕迹 > 默认 openclaw。\n * 安装脚本带 --channel 时写入 .env,运行期零歧义;jvsclaw 线上直解 tgz 时没有这一步,\n * 需要从 JVSCLAW_* env 或宿主注入的 link_secret 识别。\n */\nexport function resolveClawKind(): ClawKind {\n const fromEnv = trimToUndefined(process.env.PHONE_NOTIFICATIONS_CLAW_PROFILE)?.toLowerCase();\n if (fromEnv && VALID_CLAW_KINDS.has(fromEnv)) {\n return fromEnv as ClawKind;\n }\n\n const persisted = readPersistedClawProfile()?.toLowerCase();\n if (persisted && VALID_CLAW_KINDS.has(persisted)) {\n return persisted as ClawKind;\n }\n\n if (hasJvsclawEnvHint() || hasJvsclawLinkSecret()) {\n return \"jvsclaw\";\n }\n\n // 自动检测兜底:qclaw 与 openclaw 同属 apiKey 家族,统一归为 openclaw。\n return \"openclaw\";\n}\n",
|
|
63
63
|
"/**\n * 宿主原始路径解析。\n *\n * 注意:这里解析的是宿主暴露的目录,不保证可写。JvsClaw 可能把\n * JVSCLAW_STATE_DIR / JVSCLAW_HOME 指向只读 rootfs(例如 /opt/jvs-claw)。\n * 插件自己的可写目录必须通过 runtime-paths.ts 解析。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\ninterface QClawMeta {\n stateDir?: string;\n configPath?: string;\n}\n\nexport const DEFAULT_JVSCLAW_STATE_DIR = \"/home/admin/.openclaw\";\nexport const PHONE_NOTIFICATIONS_STATE_DIR_ENV = \"PHONE_NOTIFICATIONS_STATE_DIR\";\nexport const PHONE_NOTIFICATIONS_CONFIG_PATH_ENV = \"PHONE_NOTIFICATIONS_CONFIG_PATH\";\n\nexport function trimToUndefined(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nexport function homeDir(): string {\n return process.env.HOME || process.env.USERPROFILE || \"/tmp\";\n}\n\nexport function expandUserPath(value: string | undefined): string | undefined {\n if (!value) {\n return undefined;\n }\n if (value === \"~\") {\n return homeDir();\n }\n if (value.startsWith(\"~/\")) {\n return join(homeDir(), value.slice(2));\n }\n return value;\n}\n\nfunction candidateMetaPaths(): string[] {\n const home = homeDir();\n return [\n join(home, \".qclaw\", \"qclaw.json\"),\n join(home, \".qclow\", \"qclaw.json\"),\n ];\n}\n\nexport function loadQClawMeta(): QClawMeta | undefined {\n for (const metaPath of candidateMetaPaths()) {\n if (!existsSync(metaPath)) {\n continue;\n }\n try {\n const parsed = JSON.parse(readFileSync(metaPath, \"utf-8\")) as QClawMeta;\n return {\n stateDir: expandUserPath(trimToUndefined(parsed?.stateDir)),\n configPath: expandUserPath(trimToUndefined(parsed?.configPath)),\n };\n } catch {\n // ignore invalid metadata and keep trying\n }\n }\n return undefined;\n}\n\n/** 插件可写状态目录的显式覆盖。与宿主原始 stateDir 分离。 */\nexport function resolvePluginStateDirOverrideFromEnv(): string | undefined {\n return expandUserPath(\n trimToUndefined(process.env[PHONE_NOTIFICATIONS_STATE_DIR_ENV]),\n );\n}\n\n/** 插件使用的配置文件显式覆盖。与宿主原始 configPath 分离。 */\nexport function resolvePluginConfigPathOverrideFromEnv(): string | undefined {\n return expandUserPath(\n trimToUndefined(process.env[PHONE_NOTIFICATIONS_CONFIG_PATH_ENV]),\n );\n}\n\n/** 解析宿主暴露的原始状态目录环境变量。返回值不保证可写。 */\nexport function resolveStateDirFromEnv(): string | undefined {\n return expandUserPath(\n trimToUndefined(process.env.JVSCLAW_STATE_DIR) ??\n trimToUndefined(process.env.JVSCLAW_HOME) ??\n trimToUndefined(process.env.OPENCLAW_STATE_DIR) ??\n trimToUndefined(process.env.QCLAW_STATE_DIR) ??\n trimToUndefined(process.env.OPENCLAW_ROOT) ??\n trimToUndefined(process.env.OPENCLAW_HOME) ??\n trimToUndefined(process.env.QCLAW_HOME),\n );\n}\n\n/** 解析宿主暴露的原始配置文件环境变量。返回值不保证可写。 */\nexport function resolveConfigPathFromEnv(): string | undefined {\n return expandUserPath(\n trimToUndefined(process.env.JVSCLAW_CONFIG_PATH) ??\n trimToUndefined(process.env.OPENCLAW_CONFIG_PATH) ??\n trimToUndefined(process.env.QCLAW_CONFIG_PATH),\n );\n}\n\nexport function hasOpenClawMarkers(): boolean {\n const baseDir = join(homeDir(), \".openclaw\");\n return [\n join(baseDir, \"openclaw.json\"),\n join(baseDir, \"credentials.json\"),\n join(baseDir, \"extensions\"),\n ].some((candidate) => existsSync(candidate));\n}\n\n/**\n * 解析宿主原始状态目录。仅用于必须与宿主运行时交互的场景,例如 Gateway\n * 设备配对。插件文件写入请使用 runtime-paths.ts 的 resolveStateDir()。\n */\nexport function resolveHostStateDir(stateDir?: string): string {\n const explicitDir = expandUserPath(trimToUndefined(stateDir));\n if (explicitDir) {\n return explicitDir;\n }\n\n const envDir = resolveStateDirFromEnv();\n if (envDir) {\n return envDir;\n }\n\n if (hasOpenClawMarkers()) {\n return join(homeDir(), \".openclaw\");\n }\n\n const meta = loadQClawMeta();\n if (meta?.stateDir) {\n return meta.stateDir;\n }\n if (meta?.configPath) {\n return dirname(meta.configPath);\n }\n\n return join(homeDir(), \".openclaw\");\n}\n\n/** 解析宿主原始配置文件路径。返回值不保证位于可写目录。 */\nexport function resolveHostConfigPath(\n stateDir = resolveHostStateDir(),\n): string {\n const envConfigPath = resolveConfigPathFromEnv();\n if (envConfigPath) {\n return envConfigPath;\n }\n\n const meta = loadQClawMeta();\n if (\n meta?.configPath &&\n (!meta.stateDir || !stateDir || meta.stateDir === stateDir)\n ) {\n return meta.configPath;\n }\n\n return join(stateDir, \"openclaw.json\");\n}\n\n/**\n * 返回可能持久化 PHONE_NOTIFICATIONS_CLAW_PROFILE 的目录。\n * detect.ts 使用这些候选路径判断渠道,避免因宿主只读根目录而漏读 JvsClaw 配置。\n */\nexport function resolvePersistedProfileStateDirs(): string[] {\n const dirs: string[] = [];\n const add = (dir: string | undefined) => {\n if (dir && !dirs.includes(dir)) {\n dirs.push(dir);\n }\n };\n\n add(resolvePluginStateDirOverrideFromEnv());\n add(DEFAULT_JVSCLAW_STATE_DIR);\n add(resolveHostStateDir());\n return dirs;\n}\n",
|
|
64
64
|
"/**\n * 插件可写路径解析。\n *\n * 宿主原始目录与插件可写目录在 OpenClaw / QClaw 下通常相同,但 JvsClaw\n * 可能把宿主目录指向只读 rootfs。所有插件文件写入都应经过这里。\n */\nimport { join } from \"node:path\";\nimport { resolveClawKind } from \"./detect.js\";\nimport {\n DEFAULT_JVSCLAW_STATE_DIR,\n resolveHostConfigPath,\n resolveHostStateDir,\n resolvePluginConfigPathOverrideFromEnv,\n resolvePluginStateDirOverrideFromEnv,\n} from \"./paths.js\";\n\n/**\n * 解析插件可写状态目录。\n *\n * PHONE_NOTIFICATIONS_STATE_DIR 是明确的可写覆盖;JVSCLAW_STATE_DIR 等变量\n * 只描述宿主原始目录,不参与 JvsClaw 插件文件写入。\n */\nexport function resolveStateDir(hostStateDir?: string): string {\n const override = resolvePluginStateDirOverrideFromEnv();\n if (override) {\n return override;\n }\n\n if (resolveClawKind() === \"jvsclaw\") {\n return DEFAULT_JVSCLAW_STATE_DIR;\n }\n\n return resolveHostStateDir(hostStateDir);\n}\n\n/** 解析插件应使用的配置文件路径。 */\nexport function resolveConfigPath(hostStateDir?: string): string {\n const override = resolvePluginConfigPathOverrideFromEnv();\n if (override) {\n return override;\n }\n\n if (resolveClawKind() === \"jvsclaw\") {\n return join(resolveStateDir(hostStateDir), \"openclaw.json\");\n }\n\n return resolveHostConfigPath(resolveHostStateDir(hostStateDir));\n}\n\n/** 解析插件可写状态目录中的文件。 */\nexport function resolveStateFile(\n filename: string,\n hostStateDir?: string,\n): string {\n return join(resolveStateDir(hostStateDir), filename);\n}\n",
|
|
65
|
-
"import { randomBytes } from \"node:crypto\";\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { readCredentials } from \"./auth/credentials.js\";\nimport { resolveStateFile } from \"./host.js\";\n\n// 容错解析:先按换行切分,再按 KEY= 边界切分,恢复历史上把多条记录粘在同一行的 .env。\n// lookbehind 限定前一个字符不是标识符字符,避免在 key 内部错误切分。\nfunction parseEnvContent(content: string): Map<string, string> {\n const entries = new Map<string, string>();\n const tokens = content\n .split(/\\r?\\n/)\n .flatMap((line) => line.split(/(?<![A-Z0-9_])(?=[A-Z_][A-Z0-9_]*=)/));\n for (const token of tokens) {\n const trimmed = token.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n const eq = trimmed.indexOf(\"=\");\n if (eq < 1) continue;\n const key = trimmed.slice(0, eq).trim();\n if (!/^[A-Z_][A-Z0-9_]*$/.test(key)) continue;\n entries.set(key, trimmed.slice(eq + 1).trim());\n }\n return entries;\n}\n\nfunction writeDotEnv(key: string, value: string): void {\n const path = resolveStateFile(\".env\");\n mkdirSync(dirname(path), { recursive: true });\n const existing = existsSync(path) ? readFileSync(path, \"utf-8\") : \"\";\n const entries = parseEnvContent(existing);\n entries.set(key, value);\n const output =\n Array.from(entries, ([k, v]) => `${k}=${v}`).join(\"\\n\") + \"\\n\";\n const tmpPath = `${path}.tmp.${process.pid}.${randomBytes(4).toString(\"hex\")}`;\n try {\n // JvsClaw may leave an existing .env read-only while its state directory\n // remains writable. Replacing a sibling temp file avoids reopening it.\n writeFileSync(tmpPath, output, { encoding: \"utf-8\", mode: 0o600 });\n renameSync(tmpPath, path);\n } catch (error) {\n try {\n rmSync(tmpPath, { force: true });\n } catch {\n // ignore tmp cleanup failure\n }\n throw error;\n }\n}\n\nexport type EnvName = \"development\" | \"test\" | \"production\";\n\nconst DEFAULT_ENV_HOSTS: Record<EnvName, string> = {\n development: \"openclaw-service-dev.yoooclaw.com\",\n test: \"openclaw-service-test.yoooclaw.com\",\n production: \"openclaw-service.yoooclaw.com\",\n};\n\ninterface EnvUrls {\n lightApiUrl: string;\n appNameMapUrl: string;\n relayTunnelUrl: string;\n modelProxyLongRecordingSubmitTaskUrl: string;\n modelProxyLongRecordingQueryTaskResultBaseUrl: string;\n
|
|
65
|
+
"import { randomBytes } from \"node:crypto\";\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { readCredentials } from \"./auth/credentials.js\";\nimport { resolveStateFile } from \"./host.js\";\n\n// 容错解析:先按换行切分,再按 KEY= 边界切分,恢复历史上把多条记录粘在同一行的 .env。\n// lookbehind 限定前一个字符不是标识符字符,避免在 key 内部错误切分。\nfunction parseEnvContent(content: string): Map<string, string> {\n const entries = new Map<string, string>();\n const tokens = content\n .split(/\\r?\\n/)\n .flatMap((line) => line.split(/(?<![A-Z0-9_])(?=[A-Z_][A-Z0-9_]*=)/));\n for (const token of tokens) {\n const trimmed = token.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n const eq = trimmed.indexOf(\"=\");\n if (eq < 1) continue;\n const key = trimmed.slice(0, eq).trim();\n if (!/^[A-Z_][A-Z0-9_]*$/.test(key)) continue;\n entries.set(key, trimmed.slice(eq + 1).trim());\n }\n return entries;\n}\n\nfunction writeDotEnv(key: string, value: string): void {\n const path = resolveStateFile(\".env\");\n mkdirSync(dirname(path), { recursive: true });\n const existing = existsSync(path) ? readFileSync(path, \"utf-8\") : \"\";\n const entries = parseEnvContent(existing);\n entries.set(key, value);\n const output =\n Array.from(entries, ([k, v]) => `${k}=${v}`).join(\"\\n\") + \"\\n\";\n const tmpPath = `${path}.tmp.${process.pid}.${randomBytes(4).toString(\"hex\")}`;\n try {\n // JvsClaw may leave an existing .env read-only while its state directory\n // remains writable. Replacing a sibling temp file avoids reopening it.\n writeFileSync(tmpPath, output, { encoding: \"utf-8\", mode: 0o600 });\n renameSync(tmpPath, path);\n } catch (error) {\n try {\n rmSync(tmpPath, { force: true });\n } catch {\n // ignore tmp cleanup failure\n }\n throw error;\n }\n}\n\nexport type EnvName = \"development\" | \"test\" | \"production\";\n\nconst DEFAULT_ENV_HOSTS: Record<EnvName, string> = {\n development: \"openclaw-service-dev.yoooclaw.com\",\n test: \"openclaw-service-test.yoooclaw.com\",\n production: \"openclaw-service.yoooclaw.com\",\n};\n\ninterface EnvUrls {\n lightApiUrl: string;\n appNameMapUrl: string;\n relayTunnelUrl: string;\n modelProxyLongRecordingSubmitTaskUrl: string;\n modelProxyLongRecordingQueryTaskResultBaseUrl: string;\n gatewayConnectStatusUrl: string;\n /** jvsclaw 实例就绪/密文换 apiKey 接口(复用插件现有接口 host)。 */\n clawManagerInstanceReadyUrl: string;\n}\n\nfunction normalizeHost(host: string | undefined): string | undefined {\n const trimmed = host?.trim();\n if (!trimmed) return undefined;\n return trimmed\n .replace(/^https?:\\/\\//, \"\")\n .replace(/^wss?:\\/\\//, \"\")\n .replace(/\\/+$/, \"\");\n}\n\nfunction getEnvHost(env: EnvName): string {\n let host: string | undefined;\n switch (env) {\n case \"development\":\n host = process.env.OPENCLAW_HOST_DEVELOPMENT;\n break;\n case \"test\":\n host = process.env.OPENCLAW_HOST_TEST;\n break;\n case \"production\":\n host = process.env.OPENCLAW_HOST_PRODUCTION;\n break;\n }\n return normalizeHost(host) ?? DEFAULT_ENV_HOSTS[env];\n}\n\nfunction buildEnvUrls(host: string): EnvUrls {\n const https = `https://${host}`;\n const wss = `wss://${host}`;\n return {\n lightApiUrl: `${https}/api/message/tob/sendMessage`,\n relayTunnelUrl: `${wss}/message/messages/ws/plugin`,\n appNameMapUrl: `${https}/api/application-config/app-package/config-all`,\n modelProxyLongRecordingSubmitTaskUrl: `${https}/api/model-proxy/long-recording/submit-task`,\n modelProxyLongRecordingQueryTaskResultBaseUrl: `${https}/api/model-proxy/long-recording/query-task-result`,\n gatewayConnectStatusUrl: `${https}/api/message/messageBridge/plugin/gateway-connect-status`,\n clawManagerInstanceReadyUrl: `${https}/claw-manager/internal/claw-manager/instance/ready`,\n };\n}\n\nconst VALID_ENVS: ReadonlySet<string> = new Set<string>([\n \"development\",\n \"test\",\n \"production\",\n]);\n\nfunction readDotEnv(): Record<string, string> {\n const path = resolveStateFile(\".env\");\n if (!existsSync(path)) return {};\n return Object.fromEntries(parseEnvContent(readFileSync(path, \"utf-8\")));\n}\n\n/** 读取持久化到 .env 的环境名称;仅反映本地配置,不考虑进程环境变量。 */\nexport function readPersistedEnvName(): EnvName | undefined {\n const fromDotEnv = readDotEnv()[\"PHONE_NOTIFICATIONS_ENV\"]?.trim();\n if (fromDotEnv && VALID_ENVS.has(fromDotEnv)) return fromDotEnv as EnvName;\n return undefined;\n}\n\n/** 读取当前环境名称。优先级:PHONE_NOTIFICATIONS_ENV 环境变量 > .env > credentials.json > 默认 production */\nexport function loadEnvName(): EnvName {\n const fromEnvVar = process.env.PHONE_NOTIFICATIONS_ENV?.trim();\n if (fromEnvVar && VALID_ENVS.has(fromEnvVar)) return fromEnvVar as EnvName;\n\n const fromDotEnv = readPersistedEnvName();\n if (fromDotEnv) return fromDotEnv;\n\n const { env } = readCredentials();\n if (env && VALID_ENVS.has(env)) return env as EnvName;\n\n return \"production\";\n}\n\n/** 持久化当前环境到 .env */\nexport function saveEnvName(env: EnvName): void {\n if (!VALID_ENVS.has(env)) {\n throw new Error(\n `无效的环境名称: ${env},可选值: ${[...VALID_ENVS].join(\", \")}`,\n );\n }\n writeDotEnv(\"PHONE_NOTIFICATIONS_ENV\", env);\n}\n\n/** 获取当前环境的 URL 配置 */\nexport function getEnvUrls(env?: EnvName): EnvUrls {\n return buildEnvUrls(getEnvHost(env ?? loadEnvName()));\n}\n\n/** 获取所有可用环境名称 */\nexport function getAvailableEnvs(): EnvName[] {\n return [\"development\", \"test\", \"production\"];\n}\n",
|
|
66
66
|
"/**\n * 本地 Whisper 转写模块(arc-long-recording §6.4)\n *\n * 插件内置 Whisper 推理能力:\n * 1. 自动检测运行环境与硬件配置(§6.4.1)\n * 2. 选择最优推理后端(§6.4.2)\n * 3. 根据可用内存自动选择模型规格(§6.4.3)\n * 4. 首次使用时下载模型文件(§6.4.5)\n * 5. 通过 whisper.cpp CLI 执行本地离线转写\n */\n\nimport { execSync, execFileSync, spawnSync, type SpawnSyncReturns } from \"node:child_process\";\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n statSync,\n createWriteStream,\n unlinkSync,\n copyFileSync,\n openSync,\n readSync,\n closeSync,\n} from \"node:fs\";\nimport { join, dirname, basename } from \"node:path\";\nimport { pipeline } from \"node:stream/promises\";\nimport { Readable } from \"node:stream\";\nimport { platform, arch, totalmem, cpus, freemem } from \"node:os\";\nimport type {\n WhisperLocalConfig,\n WhisperModelSize,\n WhisperModelSource,\n WhisperBackend,\n WhisperEnvironmentInfo,\n} from \"../types.js\";\nimport type { Logger } from \"../logger.js\";\nimport type { TranscriptionResult, TranscriptSegment } from \"./asr.js\";\n\n// ─── Constants ───\n\nconst WHISPER_MODELS_DIR = \"whisper-models\";\nconst WHISPER_BIN_DIR = \"whisper-bin\";\n\n/** Hugging Face GGML 模型下载 URL 模板(海外) */\nconst HF_MODEL_URL_TEMPLATE =\n \"https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-{model}.bin\";\n\n/** 国内 ModelScope 镜像 URL 模板(lihuoo/whisper.cpp-asr-model-collection) */\nconst MODELSCOPE_MODEL_URL_TEMPLATE =\n \"https://modelscope.cn/models/lihuoo/whisper.cpp-asr-model-collection/resolve/master/{model}.bin\";\n\n/** 连通性探测超时(ms) */\nconst PROBE_TIMEOUT_MS = 5_000;\n\n/** 模型规格 → 文件名映射 */\nconst MODEL_FILENAMES: Record<WhisperModelSize, string> = {\n tiny: \"ggml-tiny.bin\",\n base: \"ggml-base.bin\",\n small: \"ggml-small.bin\",\n medium: \"ggml-medium.bin\",\n \"large-v3\": \"ggml-large-v3.bin\",\n};\n\n/** 模型规格 → 推理内存需求 GB(§6.4.3) */\nconst MODEL_MEMORY_REQUIREMENTS: Record<WhisperModelSize, number> = {\n tiny: 1,\n base: 1.5,\n small: 3,\n medium: 6,\n \"large-v3\": 11,\n};\n\n/** 模型规格 → 磁盘占用(字节,近似值) */\nconst MODEL_DISK_SIZES: Record<WhisperModelSize, number> = {\n tiny: 75 * 1024 * 1024,\n base: 140 * 1024 * 1024,\n small: 460 * 1024 * 1024,\n medium: 1500 * 1024 * 1024,\n \"large-v3\": 3000 * 1024 * 1024,\n};\n\n/** whisper.cpp JSON 输出格式 */\ninterface WhisperCppJsonOutput {\n transcription?: Array<{\n timestamps?: { from: string; to: string };\n offsets?: { from: number; to: number };\n text: string;\n }>;\n}\n\n// ─── Public API ───\n\n/**\n * 检测运行环境与硬件配置(§6.4.1)\n *\n * 检测操作系统、CPU 架构、GPU、可用内存,\n * 推荐最优推理后端与模型规格。\n */\nexport function detectEnvironment(logger: Logger): WhisperEnvironmentInfo {\n const os = platform() as \"darwin\" | \"linux\" | \"win32\";\n const cpuArch = arch() as \"arm64\" | \"x64\";\n const isAppleSilicon = os === \"darwin\" && cpuArch === \"arm64\";\n const hasCuda = detectCuda(logger);\n\n // 推荐后端(§6.4.2)\n let recommendedBackend: WhisperBackend;\n if (isAppleSilicon) {\n recommendedBackend = \"coreml\";\n } else if (hasCuda) {\n recommendedBackend = \"cuda\";\n } else {\n recommendedBackend = \"cpu\";\n }\n\n // 可用内存\n const availableMemoryGB = getAvailableMemoryGB(recommendedBackend, logger);\n const physicalCores = getPhysicalCoreCount();\n\n // 推荐模型\n const recommendedModel = selectModelByMemory(availableMemoryGB, isAppleSilicon);\n\n const info: WhisperEnvironmentInfo = {\n os,\n arch: cpuArch,\n isAppleSilicon,\n hasCuda,\n recommendedBackend,\n availableMemoryGB: Math.round(availableMemoryGB * 10) / 10,\n recommendedModel,\n physicalCores,\n };\n\n logger.info(\n `[whisper-local] 环境检测完成: os=${os}, arch=${cpuArch}, ` +\n `appleSilicon=${isAppleSilicon}, cuda=${hasCuda}, ` +\n `backend=${recommendedBackend}, memory=${info.availableMemoryGB}GB, ` +\n `model=${recommendedModel}, cores=${physicalCores}`,\n );\n\n return info;\n}\n\n/**\n * 根据可用内存自动选择模型规格(§6.4.3)\n *\n * 策略:优先匹配可用内存最大能承载的模型(向下取最近档位)。\n * Apple Silicon CoreML 后端内存效率更高,同档位需求降低 ~30%。\n */\nexport function selectModelByMemory(\n availableGB: number,\n isAppleSilicon: boolean = false,\n): WhisperModelSize {\n // Apple Silicon CoreML 内存效率提升约 30%\n const effectiveGB = isAppleSilicon ? availableGB / 0.7 : availableGB;\n\n if (effectiveGB >= 12) return \"large-v3\";\n if (effectiveGB >= 8) return \"medium\";\n if (effectiveGB >= 6) return \"small\";\n if (effectiveGB >= 4) return \"base\";\n return \"tiny\";\n}\n\n/**\n * 解析模型存储目录\n */\nexport function resolveModelsDir(dataDir: string): string {\n const dir = join(dataDir, WHISPER_MODELS_DIR);\n mkdirSync(dir, { recursive: true });\n return dir;\n}\n\n/**\n * 解析 whisper.cpp 二进制目录\n */\nexport function resolveBinDir(dataDir: string): string {\n const dir = join(dataDir, WHISPER_BIN_DIR);\n mkdirSync(dir, { recursive: true });\n return dir;\n}\n\n/**\n * 检查模型文件是否已下载(§6.4.5)\n */\nexport function isModelDownloaded(modelsDir: string, modelSize: WhisperModelSize): boolean {\n const modelPath = join(modelsDir, MODEL_FILENAMES[modelSize]);\n if (!existsSync(modelPath)) return false;\n\n // 简单校验:文件大小至少为预期大小的 80%(防止下载不完整)\n try {\n const stat = statSync(modelPath);\n const expectedSize = MODEL_DISK_SIZES[modelSize];\n return stat.size >= expectedSize * 0.8;\n } catch {\n return false;\n }\n}\n\n/**\n * 下载 Whisper 模型文件(§6.4.5)\n *\n * 下载源选择策略:\n * - modelMirrorUrl 存在 → 使用自定义 URL\n * - modelSource = \"huggingface\" → 直接使用 Hugging Face\n * - modelSource = \"domestic\" → 直接使用国内镜像(ModelScope)\n * - modelSource = \"auto\"(默认)→ 先探测 Hugging Face 连通性(5s 超时),\n * 可达则用 HF,不可达则回退国内镜像\n */\nexport async function downloadModel(\n modelsDir: string,\n modelSize: WhisperModelSize,\n logger: Logger,\n modelSource?: WhisperModelSource,\n mirrorUrl?: string,\n): Promise<{ ok: boolean; modelPath: string; error?: string }> {\n const filename = MODEL_FILENAMES[modelSize];\n const modelPath = join(modelsDir, filename);\n\n // 已存在且完整 → 跳过\n if (isModelDownloaded(modelsDir, modelSize)) {\n logger.info(`[whisper-local] 模型已存在,跳过下载: ${filename}`);\n return { ok: true, modelPath };\n }\n\n // 解析下载 URL\n const url = await resolveModelUrl(modelSize, modelSource, mirrorUrl, logger);\n\n logger.info(\n `[whisper-local] 开始下载模型: ${modelSize} (${formatBytes(MODEL_DISK_SIZES[modelSize])})`,\n );\n logger.info(`[whisper-local] 下载 URL: ${url}`);\n\n const result = await downloadFromUrl(url, modelPath, logger);\n\n // auto 模式且 HF 失败 → 尝试国内镜像回退\n if (\n !result.ok &&\n !mirrorUrl &&\n (modelSource === \"auto\" || !modelSource) &&\n url.includes(\"huggingface.co\")\n ) {\n const fallbackUrl = MODELSCOPE_MODEL_URL_TEMPLATE.replace(\"{model}\", modelSize);\n logger.info(\n `[whisper-local] Hugging Face 下载失败,回退至国内镜像(ModelScope): ${fallbackUrl}`,\n );\n return downloadFromUrl(fallbackUrl, modelPath, logger);\n }\n\n return result;\n}\n\n/**\n * 解析模型下载 URL\n */\nasync function resolveModelUrl(\n modelSize: WhisperModelSize,\n modelSource: WhisperModelSource | undefined,\n mirrorUrl: string | undefined,\n logger: Logger,\n): Promise<string> {\n // 自定义 URL 优先级最高\n if (mirrorUrl) {\n return `${mirrorUrl.replace(/\\/$/, \"\")}/${MODEL_FILENAMES[modelSize]}`;\n }\n\n const source = modelSource ?? \"auto\";\n\n switch (source) {\n case \"huggingface\":\n return HF_MODEL_URL_TEMPLATE.replace(\"{model}\", modelSize);\n case \"domestic\":\n return MODELSCOPE_MODEL_URL_TEMPLATE.replace(\"{model}\", modelSize);\n case \"auto\": {\n // 探测 Hugging Face 连通性\n const hfReachable = await probeUrl(\"https://huggingface.co\", logger);\n if (hfReachable) {\n logger.info(\"[whisper-local] Hugging Face 可达,使用海外源\");\n return HF_MODEL_URL_TEMPLATE.replace(\"{model}\", modelSize);\n }\n logger.info(\"[whisper-local] Hugging Face 不可达,使用国内镜像(ModelScope)\");\n return MODELSCOPE_MODEL_URL_TEMPLATE.replace(\"{model}\", modelSize);\n }\n default:\n return HF_MODEL_URL_TEMPLATE.replace(\"{model}\", modelSize);\n }\n}\n\n/**\n * 探测 URL 连通性(HEAD 请求,短超时)\n */\nasync function probeUrl(url: string, logger: Logger): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), PROBE_TIMEOUT_MS);\n try {\n const res = await fetch(url, {\n method: \"HEAD\",\n signal: controller.signal,\n });\n return res.ok || res.status === 301 || res.status === 302;\n } finally {\n clearTimeout(timer);\n }\n } catch (err: any) {\n logger.info(\n `[whisper-local] 连通性探测失败: ${url} (${err?.name ?? err?.message ?? \"unknown\"})`,\n );\n return false;\n }\n}\n\n/**\n * 从指定 URL 下载模型文件至本地\n */\nasync function downloadFromUrl(\n url: string,\n modelPath: string,\n logger: Logger,\n): Promise<{ ok: boolean; modelPath: string; error?: string }> {\n const tmpPath = `${modelPath}.downloading`;\n\n try {\n mkdirSync(dirname(modelPath), { recursive: true });\n\n const controller = new AbortController();\n // 模型下载超时:30 分钟(large-v3 约 3GB)\n const timer = setTimeout(() => controller.abort(), 30 * 60 * 1000);\n\n try {\n const res = await fetch(url, { signal: controller.signal });\n\n if (!res.ok) {\n return {\n ok: false,\n modelPath,\n error: `模型下载失败: HTTP ${res.status} ${res.statusText}`,\n };\n }\n\n if (!res.body) {\n return { ok: false, modelPath, error: \"模型下载失败: 响应体为空\" };\n }\n\n const contentLength = Number(res.headers.get(\"content-length\") ?? 0);\n const writeStream = createWriteStream(tmpPath);\n const readable = Readable.fromWeb(res.body as any);\n\n // 下载进度日志\n let downloaded = 0;\n let lastLogPercent = 0;\n readable.on(\"data\", (chunk: Buffer) => {\n downloaded += chunk.length;\n if (contentLength > 0) {\n const percent = Math.floor((downloaded / contentLength) * 100);\n if (percent >= lastLogPercent + 10) {\n logger.info(\n `[whisper-local] 下载进度: ${percent}% (${formatBytes(downloaded)} / ${formatBytes(contentLength)})`,\n );\n lastLogPercent = percent;\n }\n }\n });\n\n await pipeline(readable, writeStream);\n } finally {\n clearTimeout(timer);\n }\n\n // 重命名为正式文件\n const { renameSync } = await import(\"node:fs\");\n renameSync(tmpPath, modelPath);\n\n const fileSize = statSync(modelPath).size;\n logger.info(\n `[whisper-local] 模型下载完成: ${basename(modelPath)} (${formatBytes(fileSize)})`,\n );\n\n return { ok: true, modelPath };\n } catch (err: any) {\n // 清理临时文件\n try {\n if (existsSync(tmpPath)) unlinkSync(tmpPath);\n } catch { /* ignore */ }\n\n const msg = err?.name === \"AbortError\"\n ? \"模型下载超时(30 分钟)\"\n : (err?.message ?? String(err));\n logger.error(`[whisper-local] 模型下载失败: ${msg}`);\n return { ok: false, modelPath, error: msg };\n }\n}\n\n/**\n * 查找 whisper.cpp CLI 二进制文件\n *\n * 按以下优先级查找:\n * 1. 插件数据目录下的 whisper-bin/\n * 2. 系统 PATH 中的 whisper-cli / whisper-cpp / whisper\n */\nexport function findWhisperBinary(dataDir: string, logger: Logger): string | null {\n // 1. 检查插件 bin 目录\n const binDir = resolveBinDir(dataDir);\n const binNames = platform() === \"win32\"\n ? [\"whisper-cli.exe\", \"whisper.exe\", \"main.exe\"]\n : [\"whisper-cli\", \"whisper\", \"main\"];\n\n for (const name of binNames) {\n const binPath = join(binDir, name);\n if (existsSync(binPath)) {\n logger.info(`[whisper-local] 找到本地二进制: ${binPath}`);\n return binPath;\n }\n }\n\n // 2. 检查系统 PATH\n const pathNames = platform() === \"win32\"\n ? [\"whisper-cli\", \"whisper-cpp\", \"whisper\"]\n : [\"whisper-cli\", \"whisper-cpp\", \"whisper\"];\n\n for (const name of pathNames) {\n try {\n const cmd = platform() === \"win32\" ? \"where\" : \"which\";\n const result = execSync(`${cmd} ${name}`, { encoding: \"utf-8\", stdio: \"pipe\" }).trim();\n if (result) {\n logger.info(`[whisper-local] 找到系统 PATH 二进制: ${result}`);\n return result.split(\"\\n\")[0].trim();\n }\n } catch {\n // not found, continue\n }\n }\n\n logger.warn(\"[whisper-local] 未找到 whisper.cpp 二进制文件\");\n return null;\n}\n\n/**\n * 使用本地 Whisper 执行转写(§6.4)\n *\n * @param audioFilePath 本地音频文件绝对路径\n * @param localConfig 本地 Whisper 配置\n * @param dataDir 插件数据目录(存放模型和二进制)\n * @param logger 日志\n */\nexport async function transcribeWithWhisperLocal(\n audioFilePath: string,\n localConfig: WhisperLocalConfig,\n dataDir: string,\n logger: Logger,\n): Promise<TranscriptionResult> {\n // 1. 检测环境\n const env = detectEnvironment(logger);\n\n // 2. 确定后端、模型、线程数\n const backend = localConfig.backend ?? env.recommendedBackend;\n const modelSize = localConfig.model ?? env.recommendedModel;\n const threads = localConfig.threads ?? env.physicalCores;\n const language = localConfig.language ?? \"auto\";\n const translate = localConfig.translate ?? false;\n\n logger.info(\n `[whisper-local] 转写参数: backend=${backend}, model=${modelSize}, ` +\n `threads=${threads}, language=${language}, translate=${translate}`,\n );\n\n // 3. 查找 whisper.cpp 二进制\n const whisperBin = findWhisperBinary(dataDir, logger);\n if (!whisperBin) {\n return {\n ok: false,\n error:\n \"未找到 whisper.cpp 二进制文件。请安装 whisper.cpp 并确保 whisper-cli 在 PATH 中,\" +\n `或将二进制文件放入 ${resolveBinDir(dataDir)}`,\n };\n }\n\n // 4. 确保模型已下载\n const modelsDir = resolveModelsDir(dataDir);\n if (!isModelDownloaded(modelsDir, modelSize)) {\n logger.info(`[whisper-local] 模型 ${modelSize} 未下载,开始下载...`);\n const downloadResult = await downloadModel(\n modelsDir,\n modelSize,\n logger,\n localConfig.modelSource,\n localConfig.modelMirrorUrl,\n );\n if (!downloadResult.ok) {\n return { ok: false, error: `模型下载失败: ${downloadResult.error}` };\n }\n }\n\n const modelPath = join(modelsDir, MODEL_FILENAMES[modelSize]);\n\n // 5. 音频格式转换(whisper.cpp 仅支持 16kHz mono WAV)\n // 通过 magic bytes 判断真实格式,不依赖扩展名\n let inputPath = audioFilePath;\n let tmpWavPath: string | null = null;\n\n const actualFmt = detectAudioFormat(audioFilePath);\n if (actualFmt !== \".wav\") {\n tmpWavPath = audioFilePath.replace(/\\.[^.]+$/, \".whisper.wav\");\n logger.info(\n `[whisper-local] 转换音频格式: ${audioFilePath} (${actualFmt ?? \"未知\"}) → WAV (16kHz mono)`,\n );\n\n const convertResult = convertToWav(audioFilePath, tmpWavPath, actualFmt, logger);\n if (!convertResult.ok) {\n return { ok: false, error: convertResult.error! };\n }\n inputPath = tmpWavPath;\n }\n\n // 6. 构建 whisper.cpp CLI 参数\n const args = buildWhisperArgs({\n audioFilePath: inputPath,\n modelPath,\n language,\n translate,\n threads,\n backend,\n });\n\n logger.info(`[whisper-local] 执行: ${whisperBin} ${args.join(\" \")}`);\n\n // 7. 执行转写\n try {\n const startMs = Date.now();\n let result: SpawnSyncReturns<string>;\n\n try {\n result = spawnSync(whisperBin, args, {\n encoding: \"utf-8\" as const,\n timeout: 60 * 60 * 1000, // 1 小时超时(5 小时录音)\n maxBuffer: 100 * 1024 * 1024, // 100MB stdout buffer\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n } catch (err: any) {\n cleanupTmpWav(tmpWavPath);\n return { ok: false, error: `whisper.cpp 执行失败: ${err?.message ?? err}` };\n }\n\n if (result.status !== 0) {\n cleanupTmpWav(tmpWavPath);\n const stderr = result.stderr?.slice(0, 500) ?? \"\";\n return {\n ok: false,\n error: `whisper.cpp 退出码 ${result.status}: ${stderr}`,\n };\n }\n\n const elapsed = Date.now() - startMs;\n logger.info(`[whisper-local] 转写耗时: ${Math.round(elapsed / 1000)}s`);\n\n // 8. 读取 JSON 输出文件(--output-json 将结果写入 {inputPath}.json)\n const jsonPath = inputPath + \".json\";\n let jsonContent: string;\n\n if (existsSync(jsonPath)) {\n jsonContent = readFileSync(jsonPath, \"utf-8\");\n // 清理 JSON 文件\n try { unlinkSync(jsonPath); } catch { /* ignore */ }\n } else {\n // 回退:尝试解析 stdout(部分 whisper.cpp 版本可能输出到 stdout)\n jsonContent = result.stdout;\n }\n\n cleanupTmpWav(tmpWavPath);\n\n return parseWhisperOutput(jsonContent, logger);\n } catch (err: any) {\n cleanupTmpWav(tmpWavPath);\n return { ok: false, error: `whisper.cpp 转写异常: ${err?.message ?? err}` };\n }\n}\n\n/**\n * 获取本地 Whisper 状态信息(供 App 查询环境检测结果)\n */\nexport function getWhisperLocalStatus(\n dataDir: string,\n logger: Logger,\n): {\n environment: WhisperEnvironmentInfo;\n binaryFound: boolean;\n binaryPath: string | null;\n downloadedModels: WhisperModelSize[];\n} {\n const env = detectEnvironment(logger);\n const binaryPath = findWhisperBinary(dataDir, logger);\n const modelsDir = resolveModelsDir(dataDir);\n\n const allModels: WhisperModelSize[] = [\"tiny\", \"base\", \"small\", \"medium\", \"large-v3\"];\n const downloadedModels = allModels.filter((m) => isModelDownloaded(modelsDir, m));\n\n return {\n environment: env,\n binaryFound: binaryPath !== null,\n binaryPath,\n downloadedModels,\n };\n}\n\n// ─── Internal Helpers ───\n\n/**\n * 检测 CUDA 是否可用(§6.4.1)\n */\nfunction detectCuda(logger: Logger): boolean {\n try {\n // 尝试运行 nvidia-smi\n execSync(\"nvidia-smi\", { encoding: \"utf-8\", stdio: \"pipe\", timeout: 5000 });\n logger.info(\"[whisper-local] 检测到 NVIDIA GPU (nvidia-smi)\");\n return true;\n } catch {\n // nvidia-smi 不存在或执行失败\n }\n\n // 检查 CUDA runtime 库\n if (platform() === \"linux\") {\n try {\n const ldconfig = execSync(\"ldconfig -p 2>/dev/null | grep libcudart\", {\n encoding: \"utf-8\",\n stdio: \"pipe\",\n timeout: 5000,\n });\n if (ldconfig.includes(\"libcudart\")) {\n logger.info(\"[whisper-local] 检测到 CUDA runtime (ldconfig)\");\n return true;\n }\n } catch { /* ignore */ }\n }\n\n return false;\n}\n\n/**\n * 获取可用内存(GB)\n *\n * CUDA 后端使用 VRAM,其余使用系统 RAM。\n */\nfunction getAvailableMemoryGB(backend: WhisperBackend, logger: Logger): number {\n if (backend === \"cuda\") {\n // 尝试获取 GPU VRAM\n try {\n const output = execSync(\n \"nvidia-smi --query-gpu=memory.free --format=csv,noheader,nounits\",\n { encoding: \"utf-8\", stdio: \"pipe\", timeout: 5000 },\n );\n const freeVramMB = parseInt(output.trim().split(\"\\n\")[0], 10);\n if (!Number.isNaN(freeVramMB) && freeVramMB > 0) {\n return freeVramMB / 1024;\n }\n } catch {\n logger.warn(\"[whisper-local] 无法获取 GPU VRAM,使用系统 RAM 代替\");\n }\n }\n\n // 使用系统可用内存(取 total 的 80% 和 free 的较大值作为可用估计)\n const totalGB = totalmem() / (1024 * 1024 * 1024);\n const freeGB = freemem() / (1024 * 1024 * 1024);\n return Math.max(freeGB, totalGB * 0.6);\n}\n\n/**\n * 获取物理 CPU 核心数\n */\nfunction getPhysicalCoreCount(): number {\n const cpuList = cpus();\n if (cpuList.length === 0) return 4; // fallback\n\n // 简单估算:逻辑核 / 2(假设超线程)\n // macOS ARM 无超线程,直接使用逻辑核数\n if (platform() === \"darwin\" && arch() === \"arm64\") {\n // Apple Silicon: P-cores only (exclude E-cores for inference)\n // 简化处理:使用总核数\n return cpuList.length;\n }\n\n return Math.max(1, Math.floor(cpuList.length / 2));\n}\n\n/**\n * 通过文件头 magic bytes 检测音频的真实格式\n * @returns 正确的文件扩展名(如 .aiff, .wav, .m4a),或 null\n */\nfunction detectAudioFormat(filePath: string): string | null {\n try {\n const fd = openSync(filePath, \"r\");\n const buf = Buffer.alloc(12);\n readSync(fd, buf, 0, 12, 0);\n closeSync(fd);\n\n const header = buf.toString(\"ascii\", 0, 4);\n const header8 = buf.toString(\"ascii\", 0, 8);\n\n // RIFF....WAVE = WAV\n if (header === \"RIFF\" && buf.toString(\"ascii\", 8, 12) === \"WAVE\") return \".wav\";\n // FORM....AIFF / FORM....AIFC = AIFF\n if (header === \"FORM\") {\n const sub = buf.toString(\"ascii\", 8, 12);\n if (sub === \"AIFF\" || sub === \"AIFC\") return \".aiff\";\n }\n // ftyp = MP4/M4A/AAC container\n if (buf.toString(\"ascii\", 4, 8) === \"ftyp\") return \".m4a\";\n // ID3 or 0xFF 0xFB = MP3\n if (header.startsWith(\"ID3\") || (buf[0] === 0xff && (buf[1] & 0xe0) === 0xe0)) return \".mp3\";\n // OggS = Ogg (Vorbis/Opus)\n if (header === \"OggS\") return \".ogg\";\n // fLaC = FLAC\n if (header === \"fLaC\") return \".flac\";\n\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * 将音频文件转换为 whisper.cpp 所需的 16kHz mono WAV 格式\n *\n * 转换链(按优先级):\n * 1. ffmpeg — 支持全格式,含 OGG/Opus\n * 2. opusdec — 专用于 OGG/Opus(来自 brew install opus-tools)\n * 3. afconvert — macOS 内置,支持 AIFF/M4A/AAC;需正确文件扩展名\n *\n * @param actualFmt detectAudioFormat 检测到的真实格式(如 \".ogg\", \".aiff\"),可为 null\n */\nfunction convertToWav(\n inputPath: string,\n outputPath: string,\n actualFmt: string | null,\n logger: Logger,\n): { ok: boolean; error?: string } {\n // 尝试 ffmpeg(可自动检测格式,不依赖扩展名)\n try {\n const ffmpegResult = spawnSync(\"ffmpeg\", [\n \"-y\", \"-i\", inputPath,\n \"-ar\", \"16000\", \"-ac\", \"1\", \"-c:a\", \"pcm_s16le\",\n outputPath,\n ], {\n encoding: \"utf-8\",\n timeout: 120_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n\n if (ffmpegResult.status === 0 && existsSync(outputPath)) {\n logger.info(`[whisper-local] ffmpeg 转换完成: ${outputPath}`);\n return { ok: true };\n }\n } catch {\n // ffmpeg 不可用,继续尝试其他方式\n }\n\n // 2. opusdec — 专用于 OGG/Opus(ffmpeg 不可用时)\n if (actualFmt === \".ogg\") {\n try {\n const opusResult = spawnSync(\n \"opusdec\",\n [\"--rate\", \"16000\", \"--mono\", inputPath, outputPath],\n { encoding: \"utf-8\", timeout: 120_000, stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n );\n if (opusResult.status === 0 && existsSync(outputPath)) {\n logger.info(`[whisper-local] opusdec 转换完成: ${outputPath}`);\n return { ok: true };\n }\n } catch { /* opusdec 不可用,继续 */ }\n }\n\n // 3. macOS afconvert — 支持 AIFF/M4A/AAC,不支持 OGG\n if (process.platform === \"darwin\" && actualFmt !== \".ogg\") {\n // afconvert 依赖扩展名判断输入格式,先确保扩展名正确\n let actualInputPath = inputPath;\n let tmpCopy: string | null = null;\n const detectedExt = actualFmt;\n\n if (detectedExt && !inputPath.endsWith(detectedExt)) {\n // 扩展名不匹配,创建带正确扩展名的临时副本\n tmpCopy = inputPath + \".detected\" + detectedExt;\n try {\n copyFileSync(inputPath, tmpCopy);\n actualInputPath = tmpCopy;\n logger.info(\n `[whisper-local] 检测到实际格式 ${detectedExt},临时重命名`,\n );\n } catch {\n tmpCopy = null;\n }\n }\n\n try {\n const afResult = spawnSync(\"afconvert\", [\n \"-f\", \"WAVE\", \"-d\", \"LEI16@16000\", \"-c\", \"1\",\n actualInputPath, outputPath,\n ], {\n encoding: \"utf-8\",\n timeout: 120_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n\n // 清理临时副本\n if (tmpCopy && existsSync(tmpCopy)) {\n try { unlinkSync(tmpCopy); } catch { /* ignore */ }\n }\n\n if (afResult.status === 0 && existsSync(outputPath)) {\n logger.info(`[whisper-local] afconvert 转换完成: ${outputPath}`);\n return { ok: true };\n }\n\n const stderr = afResult.stderr?.slice(0, 200) ?? \"\";\n return { ok: false, error: `afconvert 转换失败 (exit ${afResult.status}): ${stderr}` };\n } catch (err: any) {\n // 清理临时副本\n if (tmpCopy && existsSync(tmpCopy)) {\n try { unlinkSync(tmpCopy); } catch { /* ignore */ }\n }\n return { ok: false, error: `afconvert 不可用: ${err?.message}` };\n }\n }\n\n const fmtHint = actualFmt === \".ogg\"\n ? \"OGG/Opus 格式需要 ffmpeg 或 opus-tools(brew install opus-tools)\"\n : \"请安装 ffmpeg(brew install ffmpeg)或确保音频文件为 WAV 格式\";\n return { ok: false, error: `无法将音频转换为 WAV 格式。${fmtHint}` };\n}\n\n/** 清理临时 WAV 文件 */\nfunction cleanupTmpWav(path: string | null): void {\n if (path && existsSync(path)) {\n try { unlinkSync(path); } catch { /* ignore */ }\n }\n}\n\n/**\n * 构建 whisper.cpp CLI 参数\n */\nfunction buildWhisperArgs(params: {\n audioFilePath: string;\n modelPath: string;\n language: string;\n translate: boolean;\n threads: number;\n backend: WhisperBackend;\n}): string[] {\n const args: string[] = [\n \"--model\", params.modelPath,\n \"--file\", params.audioFilePath,\n \"--output-json\", // JSON 格式输出到 {audioFilePath}.json\n \"--no-prints\", // 抑制模型信息输出\n \"--threads\", String(params.threads),\n ];\n\n // 语言\n if (params.language && params.language !== \"auto\") {\n args.push(\"--language\", params.language);\n } else {\n args.push(\"--language\", \"auto\");\n }\n\n // 翻译为英文\n if (params.translate) {\n args.push(\"--translate\");\n }\n\n return args;\n}\n\n/**\n * 解析 whisper.cpp JSON 输出\n */\nfunction parseWhisperOutput(\n stdout: string,\n logger: Logger,\n): TranscriptionResult {\n if (!stdout || !stdout.trim()) {\n return { ok: false, error: \"whisper.cpp 无输出\" };\n }\n\n try {\n const data = JSON.parse(stdout.trim()) as WhisperCppJsonOutput;\n\n if (!data.transcription || !Array.isArray(data.transcription)) {\n // 可能是纯文本输出\n return {\n ok: true,\n text: stdout.trim(),\n segments: [],\n };\n }\n\n const segments: TranscriptSegment[] = [];\n const textParts: string[] = [];\n\n for (const item of data.transcription) {\n const text = item.text?.trim() ?? \"\";\n if (!text) continue;\n\n textParts.push(text);\n\n const startMs = item.offsets?.from ?? parseTimestamp(item.timestamps?.from);\n const endMs = item.offsets?.to ?? parseTimestamp(item.timestamps?.to);\n\n segments.push({\n start_ms: startMs,\n end_ms: endMs,\n text,\n });\n }\n\n const fullText = textParts.join(\" \");\n\n logger.info(\n `[whisper-local] 转写完成: ${fullText.length} 字, ${segments.length} 段`,\n );\n\n return {\n ok: true,\n text: fullText,\n segments,\n };\n } catch (err: any) {\n logger.warn(`[whisper-local] JSON 解析失败,尝试纯文本: ${err?.message}`);\n\n // Fallback: 将 stdout 视为纯文本\n return {\n ok: true,\n text: stdout.trim(),\n segments: [],\n };\n }\n}\n\n/**\n * 解析 whisper.cpp 时间戳字符串 \"HH:MM:SS,mmm\" → 毫秒\n */\nfunction parseTimestamp(ts?: string): number {\n if (!ts) return 0;\n // \"00:00:05,000\" or \"00:00:05.000\"\n const match = ts.match(/^(\\d+):(\\d+):(\\d+)[,.](\\d+)$/);\n if (!match) return 0;\n const [, h, m, s, ms] = match;\n return (\n parseInt(h, 10) * 3600000 +\n parseInt(m, 10) * 60000 +\n parseInt(s, 10) * 1000 +\n parseInt(ms, 10)\n );\n}\n\n/**\n * 格式化字节数\n */\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;\n}\n",
|
|
67
|
-
"/**\n *
|
|
68
|
-
"/**\n * 录音同步处理器(§2 阶段 4–5)\n *\n * 统一处理 recordings.sync 请求:\n * 1. 元数据入库\n * 2. 从 OSS 下载音频 + 打点文件\n * 3. 更新状态 → synced\n * 4. 如已配置 ASR → 自动触发转写\n */\n\nimport type {\n RecordingMetadata,\n RecordingSyncResult,\n AsrConfig,\n RecordingTranscriptItem,\n RecordingTransferStatus,\n} from \"../types.js\";\nimport type { Logger } from \"../logger.js\";\nimport { RecordingStorage } from \"./storage.js\";\nimport { downloadRecordingFiles } from \"./downloader.js\";\nimport { isAsrConfigured, runTranscriptionWorkflow } from \"./asr.js\";\nimport { canStartTranscription } from \"./state-machine.js\";\nimport { deleteAccountOssFile } from \"./account-oss.js\";\n\nexport interface RecordingStatusEvent {\n recordingId: string;\n transfer_status: RecordingTransferStatus;\n audioFile?: string;\n srtFile?: string;\n transcriptDataFile?: string;\n transcriptFile?: string;\n transcript?: RecordingTranscriptItem[];\n summary?: string;\n title: string;\n updatedAt: string;\n error?: string;\n}\n\nexport interface RecordingSyncOptions {\n notifyStatus?: (event: RecordingStatusEvent) => void;\n}\n\nfunction emitRecordingStatus(\n recordingId: string,\n storage: RecordingStorage,\n logger: Logger,\n notifyStatus?: RecordingSyncOptions[\"notifyStatus\"],\n error?: string,\n extras?: Pick<RecordingStatusEvent, \"transcript\" | \"summary\" | \"title\">,\n): void {\n if (!notifyStatus) {\n return;\n }\n\n const entry = storage.findById(recordingId);\n if (!entry) {\n return;\n }\n\n const title = extras?.title?.trim()\n || entry.title?.trim()\n || entry.metadata.name?.trim()\n || entry.id;\n const persistedError = entry.lastError?.trim() || undefined;\n\n try {\n notifyStatus({\n recordingId: entry.id,\n transfer_status: entry.status,\n audioFile: entry.audioFile,\n srtFile: entry.srtFile,\n transcriptDataFile: entry.transcriptDataFile,\n transcriptFile: entry.transcriptFile,\n transcript: extras?.transcript,\n summary: extras?.summary,\n title,\n updatedAt: entry.updatedAt,\n error: error ?? persistedError,\n });\n } catch (err: any) {\n logger.error(\n `[recording-status] 状态事件发送失败: ${recordingId}, ${err?.message ?? err}`,\n );\n }\n}\n\nasync function runRecordingSyncInBackground(\n metadata: RecordingMetadata,\n recordingId: string,\n storage: RecordingStorage,\n asrConfig: AsrConfig | undefined,\n logger: Logger,\n options: RecordingSyncOptions,\n): Promise<void> {\n const audioDestPath = storage.getAudioFilePath(\n recordingId,\n metadata.oss_audio_url,\n );\n const srtDestPath = storage.getSrtFilePath(recordingId);\n\n logger.info(\n `[recording-sync] 开始下载录音文件: ${recordingId}, audio=${metadata.oss_audio_url}`,\n );\n\n const downloadResult = await downloadRecordingFiles(\n metadata.oss_audio_url,\n metadata.oss_srt_url,\n audioDestPath,\n srtDestPath,\n logger,\n );\n\n if (!downloadResult.audio.ok) {\n const error = `音频下载失败: ${downloadResult.audio.error}`;\n logger.error(`[recording-sync] ${error}: ${recordingId}`);\n storage.updateStatus(recordingId, \"sync_failed\");\n storage.setLastError(recordingId, error);\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n error,\n );\n return;\n }\n\n storage.setLastError(recordingId, undefined);\n storage.setAudioFile(\n recordingId,\n storage.buildAudioFilename(recordingId, metadata.oss_audio_url),\n );\n if (downloadResult.srt?.ok) {\n storage.setSrtFile(recordingId, storage.buildSrtFilename(recordingId));\n }\n\n storage.updateStatus(recordingId, \"synced\");\n logger.info(`[recording-sync] 录音已同步: ${recordingId}`);\n emitRecordingStatus(recordingId, storage, logger, options.notifyStatus);\n\n if (isAsrConfigured(asrConfig) && canStartTranscription(\"synced\")) {\n await triggerTranscription(\n recordingId,\n storage,\n asrConfig!,\n logger,\n options,\n );\n }\n}\n\n/**\n * 处理 recordings.sync 请求的核心逻辑\n */\nexport async function handleRecordingSync(\n recordingId: string,\n metadata: RecordingMetadata,\n storage: RecordingStorage,\n asrConfig: AsrConfig | undefined,\n logger: Logger,\n options: RecordingSyncOptions = {},\n): Promise<RecordingSyncResult> {\n const existing = storage.findById(recordingId);\n const shouldDownloadAndSync =\n !existing\n || existing.metadata.oss_audio_url !== metadata.oss_audio_url\n || !existing.audioFile\n || existing.status === \"syncing_openclaw\"\n || existing.status === \"sync_failed\";\n\n storage.ingest(recordingId, metadata);\n if (shouldDownloadAndSync) {\n runRecordingSyncInBackground(\n metadata,\n recordingId,\n storage,\n asrConfig,\n logger,\n options,\n ).catch((err) => {\n const error = `录音同步失败: ${err?.message ?? err}`;\n logger.error(`[recording-sync] ${error}: ${recordingId}`);\n const current = storage.findById(recordingId);\n if (current?.status === \"syncing_openclaw\") {\n storage.updateStatus(recordingId, \"sync_failed\");\n }\n storage.setLastError(recordingId, error);\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n error,\n );\n });\n } else {\n logger.info(\n `[recording-sync] 录音已存在且音频未变化,跳过重复下载: ${recordingId}`,\n );\n emitRecordingStatus(recordingId, storage, logger, options.notifyStatus);\n\n const current = storage.findById(recordingId);\n if (current?.status === \"synced\" && isAsrConfigured(asrConfig)) {\n triggerTranscription(\n recordingId,\n storage,\n asrConfig!,\n logger,\n options,\n ).catch((err) => {\n logger.error(\n `[asr-trigger] 转写触发失败: ${recordingId}, ${err?.message ?? err}`,\n );\n });\n }\n }\n\n const current = storage.findById(recordingId);\n return {\n ok: true,\n recordingId,\n transfer_status: current?.status ?? \"syncing_openclaw\",\n ...(current?.lastError ? { error: current.lastError } : {}),\n };\n}\n\n/**\n * 触发 ASR 转写(可从 sync handler 自动触发或手动重试调用)\n */\nexport async function triggerTranscription(\n recordingId: string,\n storage: RecordingStorage,\n asrConfig: AsrConfig,\n logger: Logger,\n options: RecordingSyncOptions = {},\n): Promise<void> {\n const entry = storage.findById(recordingId);\n if (!entry) {\n logger.warn(`[asr-trigger] 录音不存在: ${recordingId}`);\n return;\n }\n\n if (!canStartTranscription(entry.status)) {\n logger.warn(\n `[asr-trigger] 当前状态不允许转写: ${recordingId} (status=${entry.status})`,\n );\n return;\n }\n\n // 状态 → transcribing\n storage.updateStatus(recordingId, \"transcribing\");\n storage.setLastError(recordingId, undefined);\n emitRecordingStatus(recordingId, storage, logger, options.notifyStatus);\n\n const audioFilePath = storage.getAudioFilePath(recordingId);\n\n let result: Awaited<ReturnType<typeof runTranscriptionWorkflow>>;\n try {\n result = await runTranscriptionWorkflow({\n audioFilePath,\n audioOssUrl: entry.metadata.oss_audio_url,\n config: asrConfig,\n markers: entry.metadata.markers ?? [],\n recordingName: entry.metadata.name,\n durationSec: entry.metadata.duration_sec,\n createdAt: entry.metadata.created_at,\n transcriptDataDir: storage.getTranscriptDataDir(),\n transcriptsDir: storage.getTranscriptsDir(),\n summariesDir: storage.getSummariesDir(),\n recordingId,\n logger,\n });\n } catch (err: any) {\n const error = `转写任务异常: ${err?.message ?? err}`;\n logger.error(`[asr-trigger] ${error}: ${recordingId}`);\n result = { ok: false, error };\n }\n\n if (result.ok && result.transcriptFilename) {\n if (result.transcriptDataFilename) {\n storage.setTranscriptDataFile(recordingId, result.transcriptDataFilename);\n }\n storage.setTranscriptFile(recordingId, result.transcriptFilename);\n if (result.summaryFilename) {\n storage.setSummaryFile(recordingId, result.summaryFilename);\n }\n storage.setTitle(recordingId, result.title);\n storage.updateStatus(recordingId, \"transcribed\");\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n undefined,\n {\n transcript: result.transcript ?? [],\n summary: result.summary,\n title: result.title ?? \"\",\n },\n );\n logger.info(\n `[asr-trigger] 转写完成: ${recordingId}, summary=\"${result.summary}\"`,\n );\n\n // ASR 成功后删除 OSS 上的音频文件(imp-account-user-controllers-api §5.7)\n const ossAudioUrl = entry.metadata.oss_audio_url?.trim();\n if (ossAudioUrl) {\n void deleteAccountOssFile(ossAudioUrl, logger).catch((err) => {\n logger.warn(\n `[asr-trigger] OSS 音频清理异常 (非致命): ${recordingId}, ${err?.message ?? err}`,\n );\n });\n }\n } else {\n const error = result.error ?? \"ASR 转写失败\";\n storage.updateStatus(recordingId, \"transcribe_failed\");\n storage.setLastError(recordingId, error);\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n error,\n );\n logger.error(\n `[asr-trigger] 转写失败: ${recordingId}, error=${error}`,\n );\n }\n}\n",
|
|
67
|
+
"/**\n * 录音同步处理器(§2 阶段 4–5)\n *\n * 统一处理 recordings.sync 请求:\n * 1. 元数据入库\n * 2. 从 OSS 下载音频 + 打点文件\n * 3. 更新状态 → synced\n * 4. 如已配置 ASR → 自动触发转写\n */\n\nimport type {\n RecordingMetadata,\n RecordingSyncResult,\n AsrConfig,\n RecordingTranscriptItem,\n RecordingTransferStatus,\n} from \"../types.js\";\nimport type { Logger } from \"../logger.js\";\nimport { RecordingStorage } from \"./storage.js\";\nimport { downloadRecordingFiles } from \"./downloader.js\";\nimport { isAsrConfigured, runTranscriptionWorkflow } from \"./asr.js\";\nimport { canStartTranscription } from \"./state-machine.js\";\n\nexport interface RecordingStatusEvent {\n recordingId: string;\n transfer_status: RecordingTransferStatus;\n audioFile?: string;\n srtFile?: string;\n transcriptDataFile?: string;\n transcriptFile?: string;\n transcript?: RecordingTranscriptItem[];\n summary?: string;\n title: string;\n updatedAt: string;\n error?: string;\n}\n\nexport interface RecordingSyncOptions {\n notifyStatus?: (event: RecordingStatusEvent) => void;\n}\n\nfunction emitRecordingStatus(\n recordingId: string,\n storage: RecordingStorage,\n logger: Logger,\n notifyStatus?: RecordingSyncOptions[\"notifyStatus\"],\n error?: string,\n extras?: Pick<RecordingStatusEvent, \"transcript\" | \"summary\" | \"title\">,\n): void {\n if (!notifyStatus) {\n return;\n }\n\n const entry = storage.findById(recordingId);\n if (!entry) {\n return;\n }\n\n const title = extras?.title?.trim()\n || entry.title?.trim()\n || entry.metadata.name?.trim()\n || entry.id;\n const persistedError = entry.lastError?.trim() || undefined;\n\n try {\n notifyStatus({\n recordingId: entry.id,\n transfer_status: entry.status,\n audioFile: entry.audioFile,\n srtFile: entry.srtFile,\n transcriptDataFile: entry.transcriptDataFile,\n transcriptFile: entry.transcriptFile,\n transcript: extras?.transcript,\n summary: extras?.summary,\n title,\n updatedAt: entry.updatedAt,\n error: error ?? persistedError,\n });\n } catch (err: any) {\n logger.error(\n `[recording-status] 状态事件发送失败: ${recordingId}, ${err?.message ?? err}`,\n );\n }\n}\n\nasync function runRecordingSyncInBackground(\n metadata: RecordingMetadata,\n recordingId: string,\n storage: RecordingStorage,\n asrConfig: AsrConfig | undefined,\n logger: Logger,\n options: RecordingSyncOptions,\n): Promise<void> {\n const audioDestPath = storage.getAudioFilePath(\n recordingId,\n metadata.oss_audio_url,\n );\n const srtDestPath = storage.getSrtFilePath(recordingId);\n\n logger.info(\n `[recording-sync] 开始下载录音文件: ${recordingId}, audio=${metadata.oss_audio_url}`,\n );\n\n const downloadResult = await downloadRecordingFiles(\n metadata.oss_audio_url,\n metadata.oss_srt_url,\n audioDestPath,\n srtDestPath,\n logger,\n );\n\n if (!downloadResult.audio.ok) {\n const error = `音频下载失败: ${downloadResult.audio.error}`;\n logger.error(`[recording-sync] ${error}: ${recordingId}`);\n storage.updateStatus(recordingId, \"sync_failed\");\n storage.setLastError(recordingId, error);\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n error,\n );\n return;\n }\n\n storage.setLastError(recordingId, undefined);\n storage.setAudioFile(\n recordingId,\n storage.buildAudioFilename(recordingId, metadata.oss_audio_url),\n );\n if (downloadResult.srt?.ok) {\n storage.setSrtFile(recordingId, storage.buildSrtFilename(recordingId));\n }\n\n storage.updateStatus(recordingId, \"synced\");\n logger.info(`[recording-sync] 录音已同步: ${recordingId}`);\n emitRecordingStatus(recordingId, storage, logger, options.notifyStatus);\n\n if (isAsrConfigured(asrConfig) && canStartTranscription(\"synced\")) {\n await triggerTranscription(\n recordingId,\n storage,\n asrConfig!,\n logger,\n options,\n );\n }\n}\n\n/**\n * 处理 recordings.sync 请求的核心逻辑\n */\nexport async function handleRecordingSync(\n recordingId: string,\n metadata: RecordingMetadata,\n storage: RecordingStorage,\n asrConfig: AsrConfig | undefined,\n logger: Logger,\n options: RecordingSyncOptions = {},\n): Promise<RecordingSyncResult> {\n const existing = storage.findById(recordingId);\n const shouldDownloadAndSync =\n !existing\n || existing.metadata.oss_audio_url !== metadata.oss_audio_url\n || !existing.audioFile\n || existing.status === \"syncing_openclaw\"\n || existing.status === \"sync_failed\";\n\n storage.ingest(recordingId, metadata);\n if (shouldDownloadAndSync) {\n runRecordingSyncInBackground(\n metadata,\n recordingId,\n storage,\n asrConfig,\n logger,\n options,\n ).catch((err) => {\n const error = `录音同步失败: ${err?.message ?? err}`;\n logger.error(`[recording-sync] ${error}: ${recordingId}`);\n const current = storage.findById(recordingId);\n if (current?.status === \"syncing_openclaw\") {\n storage.updateStatus(recordingId, \"sync_failed\");\n }\n storage.setLastError(recordingId, error);\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n error,\n );\n });\n } else {\n logger.info(\n `[recording-sync] 录音已存在且音频未变化,跳过重复下载: ${recordingId}`,\n );\n emitRecordingStatus(recordingId, storage, logger, options.notifyStatus);\n\n const current = storage.findById(recordingId);\n if (current?.status === \"synced\" && isAsrConfigured(asrConfig)) {\n triggerTranscription(\n recordingId,\n storage,\n asrConfig!,\n logger,\n options,\n ).catch((err) => {\n logger.error(\n `[asr-trigger] 转写触发失败: ${recordingId}, ${err?.message ?? err}`,\n );\n });\n }\n }\n\n const current = storage.findById(recordingId);\n return {\n ok: true,\n recordingId,\n transfer_status: current?.status ?? \"syncing_openclaw\",\n ...(current?.lastError ? { error: current.lastError } : {}),\n };\n}\n\n/**\n * 触发 ASR 转写(可从 sync handler 自动触发或手动重试调用)\n */\nexport async function triggerTranscription(\n recordingId: string,\n storage: RecordingStorage,\n asrConfig: AsrConfig,\n logger: Logger,\n options: RecordingSyncOptions = {},\n): Promise<void> {\n const entry = storage.findById(recordingId);\n if (!entry) {\n logger.warn(`[asr-trigger] 录音不存在: ${recordingId}`);\n return;\n }\n\n if (!canStartTranscription(entry.status)) {\n logger.warn(\n `[asr-trigger] 当前状态不允许转写: ${recordingId} (status=${entry.status})`,\n );\n return;\n }\n\n // 状态 → transcribing\n storage.updateStatus(recordingId, \"transcribing\");\n storage.setLastError(recordingId, undefined);\n emitRecordingStatus(recordingId, storage, logger, options.notifyStatus);\n\n const audioFilePath = storage.getAudioFilePath(recordingId);\n\n let result: Awaited<ReturnType<typeof runTranscriptionWorkflow>>;\n try {\n result = await runTranscriptionWorkflow({\n audioFilePath,\n audioOssUrl: entry.metadata.oss_audio_url,\n config: asrConfig,\n markers: entry.metadata.markers ?? [],\n recordingName: entry.metadata.name,\n durationSec: entry.metadata.duration_sec,\n createdAt: entry.metadata.created_at,\n transcriptDataDir: storage.getTranscriptDataDir(),\n transcriptsDir: storage.getTranscriptsDir(),\n summariesDir: storage.getSummariesDir(),\n recordingId,\n logger,\n });\n } catch (err: any) {\n const error = `转写任务异常: ${err?.message ?? err}`;\n logger.error(`[asr-trigger] ${error}: ${recordingId}`);\n result = { ok: false, error };\n }\n\n if (result.ok && result.transcriptFilename) {\n if (result.transcriptDataFilename) {\n storage.setTranscriptDataFile(recordingId, result.transcriptDataFilename);\n }\n storage.setTranscriptFile(recordingId, result.transcriptFilename);\n if (result.summaryFilename) {\n storage.setSummaryFile(recordingId, result.summaryFilename);\n }\n storage.setTitle(recordingId, result.title);\n storage.updateStatus(recordingId, \"transcribed\");\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n undefined,\n {\n transcript: result.transcript ?? [],\n summary: result.summary,\n title: result.title ?? \"\",\n },\n );\n logger.info(\n `[asr-trigger] 转写完成: ${recordingId}, summary=\"${result.summary}\"`,\n );\n } else {\n const error = result.error ?? \"ASR 转写失败\";\n storage.updateStatus(recordingId, \"transcribe_failed\");\n storage.setLastError(recordingId, error);\n emitRecordingStatus(\n recordingId,\n storage,\n logger,\n options.notifyStatus,\n error,\n );\n logger.error(\n `[asr-trigger] 转写失败: ${recordingId}, error=${error}`,\n );\n }\n}\n",
|
|
69
68
|
"import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { OpenClawPluginApi } from \"openclaw/plugin-sdk\";\nimport type { Logger } from \"../logger.js\";\nimport {\n RecordingStorage,\n canStartTranscription,\n extractSourceTextListFromDocument,\n extractTranscriptTitleFromDocument,\n handleRecordingSync,\n initializeAsr,\n triggerTranscription,\n type RecordingIndexEntry,\n type RecordingStatusEvent,\n validateAsrConfig,\n} from \"../recording/index.js\";\nimport { RELAY_INTERNAL_HTTP_HEADER } from \"../tunnel/http-proxy.js\";\nimport type { RelayTunnelService } from \"../tunnel/service.js\";\nimport type {\n HttpRecordingBody,\n RecordingAsrInitParams,\n RecordingDetail,\n RecordingListItem,\n RecordingListParams,\n RecordingRenameParams,\n RecordingRetranscribeParams,\n RecordingStatusParams,\n RecordingSyncParams,\n RecordingTransferStatus,\n} from \"../types.js\";\nimport {\n readBody,\n trimToUndefined,\n type GatewayMethodRegistrar,\n} from \"./shared.js\";\n\nconst RECORDING_TRANSFER_STATUSES = new Set<RecordingTransferStatus>([\n \"receiving_failed\",\n \"receiving\",\n \"pending_oss_upload\",\n \"uploading_oss\",\n \"oss_uploaded\",\n \"syncing_openclaw\",\n \"sync_failed\",\n \"synced\",\n \"transcribing\",\n \"transcribe_failed\",\n \"transcribed\",\n]);\n\nfunction isRecordingTransferStatus(\n value: string,\n): value is RecordingTransferStatus {\n return RECORDING_TRANSFER_STATUSES.has(value as RecordingTransferStatus);\n}\n\nfunction buildRecordingListItem(entry: RecordingIndexEntry): RecordingListItem {\n return {\n recordingId: entry.id,\n name: entry.metadata.name,\n duration_sec: entry.metadata.duration_sec,\n file_size_bytes: entry.metadata.file_size_bytes,\n created_at: entry.metadata.created_at,\n transfer_status: entry.status,\n marker_count: entry.metadata.markers?.length ?? 0,\n has_audio: !!entry.audioFile,\n has_srt: !!entry.srtFile,\n has_transcript: !!entry.transcriptFile,\n audioFile: entry.audioFile,\n transcriptDataFile: entry.transcriptDataFile,\n transcriptFile: entry.transcriptFile,\n updatedAt: entry.updatedAt,\n ...(entry.lastError ? { error: entry.lastError } : {}),\n };\n}\n\nfunction isRelayInternalHttpRequest(req: IncomingMessage): boolean {\n const header = req.headers?.[RELAY_INTERNAL_HTTP_HEADER];\n if (Array.isArray(header)) {\n return header.includes(\"1\");\n }\n return header === \"1\";\n}\n\nfunction buildRecordingDetail(\n entry: RecordingIndexEntry,\n extras?: Partial<Pick<\n RecordingDetail,\n \"summary\" | \"title\" | \"transcript\" | \"transcriptData\"\n >>,\n): RecordingDetail {\n const title = entry.title?.trim()\n || extras?.title?.trim()\n || entry.metadata.name?.trim()\n || entry.id;\n\n return {\n recordingId: entry.id,\n name: entry.metadata.name,\n duration_sec: entry.metadata.duration_sec,\n file_size_bytes: entry.metadata.file_size_bytes,\n created_at: entry.metadata.created_at,\n location: entry.metadata.location,\n oss_audio_url: entry.metadata.oss_audio_url,\n oss_srt_url: entry.metadata.oss_srt_url,\n markers: entry.metadata.markers ?? [],\n transfer_status: entry.status,\n audioFile: entry.audioFile,\n srtFile: entry.srtFile,\n transcriptDataFile: entry.transcriptDataFile,\n transcriptFile: entry.transcriptFile,\n summaryFile: entry.summaryFile,\n title,\n summary: extras?.summary,\n transcript: extras?.transcript,\n transcriptData: extras?.transcriptData,\n ingestedAt: entry.ingestedAt,\n updatedAt: entry.updatedAt,\n ...(entry.lastError ? { error: entry.lastError } : {}),\n };\n}\n\ninterface RecordingInterfaceDeps {\n api: OpenClawPluginApi;\n logger: Logger;\n asrDataDir: string;\n getRecordingStorage: () => RecordingStorage | null;\n notifyRecordingStatus: (event: RecordingStatusEvent) => void;\n registerGatewayMethod: GatewayMethodRegistrar;\n shouldBroadcastStatusOnHttp: () => boolean;\n tunnelService?: RelayTunnelService | null;\n}\n\nexport function registerRecordingInterfaces(\n deps: RecordingInterfaceDeps,\n): void {\n const {\n api,\n logger,\n asrDataDir,\n getRecordingStorage,\n notifyRecordingStatus,\n registerGatewayMethod,\n shouldBroadcastStatusOnHttp,\n tunnelService,\n } = deps;\n\n registerGatewayMethod(\"recordings.sync\", async ({ params, respond }) => {\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n respond(false, null, {\n code: \"NOT_READY\",\n message: \"Recording storage service not ready\",\n });\n return;\n }\n\n const {\n recordingId: rawRecordingId,\n recording,\n asr,\n } = params as unknown as RecordingSyncParams;\n const recordingId = trimToUndefined(rawRecordingId);\n if (!recordingId) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"recordingId is required\",\n });\n return;\n }\n\n if (!recording || !recording.oss_audio_url || !recording.created_at) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"recording with oss_audio_url and created_at is required\",\n });\n return;\n }\n\n const asrError = asr ? validateAsrConfig(asr) : undefined;\n if (asrError) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: asrError,\n });\n return;\n }\n\n const result = await handleRecordingSync(\n recordingId,\n recording,\n recordingStorage,\n asr,\n logger,\n { notifyStatus: notifyRecordingStatus },\n );\n respond(\n result.ok,\n result,\n result.ok\n ? undefined\n : {\n code: \"SYNC_FAILED\",\n message: result.error ?? \"Unknown error\",\n },\n );\n });\n\n registerGatewayMethod(\"recordings.list\", async ({ params, respond }) => {\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n respond(false, null, {\n code: \"NOT_READY\",\n message: \"Recording storage service not ready\",\n });\n return;\n }\n\n const rawStatus = trimToUndefined(\n (params as RecordingListParams | undefined)?.status,\n );\n if (rawStatus && !isRecordingTransferStatus(rawStatus)) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: `invalid recording status: ${rawStatus}`,\n });\n return;\n }\n\n const status = rawStatus as RecordingTransferStatus | undefined;\n const entries = status\n ? recordingStorage.listByStatus(status)\n : recordingStorage.listAll();\n\n respond(true, {\n total: entries.length,\n recordings: entries.map(buildRecordingListItem),\n });\n });\n\n registerGatewayMethod(\"recordings.status\", async ({ params, respond }) => {\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n respond(false, null, {\n code: \"NOT_READY\",\n message: \"Recording storage service not ready\",\n });\n return;\n }\n\n const { recordingId } = params as unknown as RecordingStatusParams;\n if (!recordingId) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"recordingId is required\",\n });\n return;\n }\n\n const entry = recordingStorage.findById(recordingId);\n if (!entry) {\n respond(false, null, {\n code: \"NOT_FOUND\",\n message: `Recording not found: ${recordingId}`,\n });\n return;\n }\n\n respond(\n true,\n (() => {\n const transcriptDocument =\n recordingStorage.readTranscriptDocument(recordingId);\n\n return buildRecordingDetail(entry, {\n summary: recordingStorage.readSummary(recordingId),\n title: extractTranscriptTitleFromDocument(transcriptDocument),\n transcript: extractSourceTextListFromDocument(transcriptDocument),\n transcriptData: transcriptDocument,\n });\n })(),\n );\n });\n\n registerGatewayMethod(\"recordings.rename\", async ({ params, respond }) => {\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n respond(false, null, {\n code: \"NOT_READY\",\n message: \"Recording storage service not ready\",\n });\n return;\n }\n\n const { recordingId: rawRecordingId, name: rawName } =\n params as unknown as RecordingRenameParams;\n const recordingId = trimToUndefined(rawRecordingId);\n const name = trimToUndefined(rawName);\n if (!recordingId) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"recordingId is required\",\n });\n return;\n }\n if (!name) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"name is required\",\n });\n return;\n }\n\n const entry = recordingStorage.findById(recordingId);\n if (!entry) {\n respond(false, null, {\n code: \"NOT_FOUND\",\n message: `Recording not found: ${recordingId}`,\n });\n return;\n }\n\n const updated = recordingStorage.rename(recordingId, name);\n respond(true, buildRecordingDetail(updated));\n });\n\n registerGatewayMethod(\"recordings.delete\", async ({ params, respond }) => {\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n respond(false, null, {\n code: \"NOT_READY\",\n message: \"Recording storage service not ready\",\n });\n return;\n }\n\n const { recordingId, deleteRemote } = params as {\n recordingId: string;\n deleteRemote?: boolean;\n };\n if (!recordingId) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"recordingId is required\",\n });\n return;\n }\n\n if (deleteRemote) {\n const deleted = recordingStorage.delete(recordingId);\n respond(\n deleted,\n { ok: deleted, recordingId, deletedRemote: true },\n deleted\n ? undefined\n : {\n code: \"NOT_FOUND\",\n message: `Recording not found: ${recordingId}`,\n },\n );\n return;\n }\n\n const deleted = recordingStorage.delete(recordingId, {\n localOnly: true,\n });\n respond(\n deleted,\n { ok: deleted, recordingId, deletedRemote: false },\n deleted\n ? undefined\n : {\n code: \"NOT_FOUND\",\n message: `Recording not found: ${recordingId}`,\n },\n );\n });\n\n registerGatewayMethod(\n \"recordings.retranscribe\",\n async ({ params, respond }) => {\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n respond(false, null, {\n code: \"NOT_READY\",\n message: \"Recording storage service not ready\",\n });\n return;\n }\n\n const { recordingId, asr } =\n params as unknown as RecordingRetranscribeParams;\n if (!recordingId) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: \"recordingId is required\",\n });\n return;\n }\n\n const asrError = validateAsrConfig(asr);\n if (asrError) {\n respond(false, null, {\n code: \"ASR_NOT_CONFIGURED\",\n message: asrError,\n });\n return;\n }\n\n const entry = recordingStorage.findById(recordingId);\n if (!entry) {\n respond(false, null, {\n code: \"NOT_FOUND\",\n message: `Recording not found: ${recordingId}`,\n });\n return;\n }\n\n if (!canStartTranscription(entry.status)) {\n respond(false, null, {\n code: \"INVALID_STATE\",\n message: `Recording status does not allow retranscribe: ${entry.status}`,\n });\n return;\n }\n\n triggerTranscription(recordingId, recordingStorage, asr, logger, {\n notifyStatus: notifyRecordingStatus,\n }).catch((err) => {\n logger.error(\n `[recordings.retranscribe] 重试转写失败: ${recordingId}, ${err?.message ?? err}`,\n );\n });\n\n respond(true, { ok: true, recordingId, message: \"转写已重新触发\" });\n },\n );\n\n registerGatewayMethod(\"recordings.asr.init\", async ({ params, respond }) => {\n const { asr } = params as unknown as RecordingAsrInitParams;\n const asrError = validateAsrConfig(asr);\n if (asrError) {\n respond(false, null, {\n code: \"INVALID_PARAMS\",\n message: asrError,\n });\n return;\n }\n\n const result = await initializeAsr(asr, asrDataDir, logger);\n respond(\n result.ok,\n result,\n result.ok\n ? undefined\n : {\n code: \"ASR_INIT_FAILED\",\n message: result.error ?? \"ASR init failed\",\n },\n );\n });\n\n api.registerHttpRoute({\n path: \"/recordings\",\n auth: \"gateway\",\n async handler(req: IncomingMessage, res: ServerResponse) {\n if (req.method !== \"POST\") {\n res.writeHead(405, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Method Not Allowed\" }));\n return;\n }\n\n if (!isRelayInternalHttpRequest(req)) {\n await tunnelService?.deactivateForExternalTunnel(\"POST /recordings\");\n }\n\n const recordingStorage = getRecordingStorage();\n if (!recordingStorage) {\n res.writeHead(503, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Service Not Ready\" }));\n return;\n }\n\n let body: HttpRecordingBody;\n try {\n const raw = await readBody(req);\n body = JSON.parse(raw);\n } catch {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Invalid JSON\" }));\n return;\n }\n\n const recordingId = trimToUndefined(body.recordingId);\n if (!recordingId) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({\n ok: false,\n error: \"recordingId is required\",\n }),\n );\n return;\n }\n\n if (!body.recording || !body.recording.oss_audio_url) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({\n ok: false,\n error: \"recording with oss_audio_url is required\",\n }),\n );\n return;\n }\n\n const asrError = body.asr ? validateAsrConfig(body.asr) : undefined;\n if (asrError) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: asrError }));\n return;\n }\n\n const result = await handleRecordingSync(\n recordingId,\n body.recording,\n recordingStorage,\n body.asr,\n logger,\n shouldBroadcastStatusOnHttp()\n ? { notifyStatus: notifyRecordingStatus }\n : undefined,\n );\n\n res.writeHead(result.ok ? 200 : 500, {\n \"Content-Type\": \"application/json\",\n });\n res.end(JSON.stringify(result));\n },\n } as any);\n\n logger.info(\n \"Gateway 录音方法已注册: recordings.sync / recordings.list / recordings.status / recordings.rename / recordings.delete / recordings.retranscribe / recordings.asr.init\",\n );\n logger.info(\"HTTP 录音端点已注册: POST /recordings\");\n}\n",
|
|
70
69
|
"import {\n existsSync,\n mkdirSync,\n readFileSync,\n writeFileSync,\n rmSync,\n readdirSync,\n statSync,\n} from \"node:fs\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport type { LightSegment } from \"../types.js\";\nimport type { LightRuleMeta } from \"./types.js\";\nimport { assertAncsRepeatTimes, normalizeRepeatTimes } from \"../light/repeat.js\";\n\nexport interface LightRuleStorageContext {\n workspaceDir?: string;\n stateDir?: string;\n}\n\nfunction addUniquePath(paths: string[], path: string | undefined): void {\n if (!path) return;\n\n const normalized = resolve(path);\n if (!paths.includes(normalized)) {\n paths.push(normalized);\n }\n}\n\nfunction inferSiblingWorkspaceDir(stateDir: string): string | undefined {\n const stateDirName = basename(stateDir);\n if (!stateDirName.startsWith(\".\")) return undefined;\n\n // JVSClaw may keep plugin state under /home/admin/.openclaw while the\n // runtime workspace is /home/admin/openclaw/workspace.\n const siblingStateDir = join(dirname(stateDir), stateDirName.slice(1));\n const siblingWorkspaceDir = join(siblingStateDir, \"workspace\");\n return existsSync(siblingWorkspaceDir) ? siblingWorkspaceDir : undefined;\n}\n\nfunction resolveBaseDirs(ctx: LightRuleStorageContext): string[] {\n const dirs: string[] = [];\n\n addUniquePath(dirs, ctx.workspaceDir);\n\n if (ctx.stateDir) {\n addUniquePath(dirs, inferSiblingWorkspaceDir(ctx.stateDir));\n\n const inferredWorkspaceDir = join(ctx.stateDir, \"workspace\");\n if (existsSync(inferredWorkspaceDir)) {\n addUniquePath(dirs, inferredWorkspaceDir);\n }\n\n addUniquePath(dirs, ctx.stateDir);\n }\n\n if (dirs.length === 0) {\n throw new Error(\"workspaceDir and stateDir both unavailable\");\n }\n\n return dirs;\n}\n\nfunction resolveWriteBaseDir(ctx: LightRuleStorageContext): string {\n return resolveBaseDirs(ctx)[0];\n}\n\nfunction tasksDirs(ctx: LightRuleStorageContext): string[] {\n return resolveBaseDirs(ctx).map((baseDir) => join(baseDir, \"tasks\"));\n}\n\nfunction writeTasksDir(ctx: LightRuleStorageContext): string {\n return join(resolveWriteBaseDir(ctx), \"tasks\");\n}\n\nfunction normalizeLightRuleLookupName(name: string): string {\n return name.trim().replace(/\\.json$/i, \"\");\n}\n\nfunction resolveLightRuleTask(\n ctx: LightRuleStorageContext,\n name: string,\n): { taskDir: string; meta: LightRuleMeta } | null {\n const normalizedName = normalizeLightRuleLookupName(name);\n if (!normalizedName) return null;\n\n const dirs = tasksDirs(ctx);\n\n for (const dir of dirs) {\n const directTaskDir = join(dir, normalizedName);\n const directMeta = readMeta(directTaskDir);\n if (directMeta) {\n return {\n taskDir: directTaskDir,\n meta: directMeta,\n };\n }\n }\n\n for (const dir of dirs) {\n if (!existsSync(dir)) continue;\n\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n\n const taskDir = join(dir, entry.name);\n const meta = readMeta(taskDir);\n if (meta?.name === normalizedName) {\n return {\n taskDir,\n meta,\n };\n }\n }\n }\n\n return null;\n}\n\nfunction readOptionalString(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nfunction readMeta(taskDir: string): LightRuleMeta | null {\n const metaPath = join(taskDir, \"meta.json\");\n if (!existsSync(metaPath)) return null;\n try {\n const raw = JSON.parse(readFileSync(metaPath, \"utf-8\"));\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return null;\n if (raw.type !== \"light-rule\") return null;\n if (!Array.isArray(raw.segments)) return null;\n const name = readOptionalString(raw.name) ?? basename(taskDir);\n const title = readOptionalString(raw.title) ?? name;\n const description = readOptionalString(raw.description) ?? name;\n const createdAt =\n readOptionalString(raw.createdAt) ?? statSync(metaPath).birthtime.toISOString();\n const enabled = typeof raw.enabled === \"boolean\" ? raw.enabled : true;\n const repeatTimes = normalizeRepeatTimes({\n repeat: raw.repeat,\n repeat_times: raw.repeat_times,\n });\n assertAncsRepeatTimes(repeatTimes);\n return {\n ...raw,\n name,\n title,\n type: \"light-rule\",\n description,\n segments: raw.segments,\n repeat_times: repeatTimes,\n enabled,\n createdAt,\n } as LightRuleMeta;\n } catch {\n return null;\n }\n}\n\nfunction writeMeta(taskDir: string, meta: LightRuleMeta): void {\n writeFileSync(join(taskDir, \"meta.json\"), JSON.stringify(meta, null, 2), \"utf-8\");\n}\n\nexport function listLightRules(ctx: LightRuleStorageContext): LightRuleMeta[] {\n const rules: LightRuleMeta[] = [];\n const seenNames = new Set<string>();\n\n for (const dir of tasksDirs(ctx)) {\n if (!existsSync(dir)) continue;\n\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const meta = readMeta(join(dir, entry.name));\n if (!meta || seenNames.has(meta.name)) continue;\n\n rules.push(meta);\n seenNames.add(meta.name);\n }\n }\n\n return rules;\n}\n\nexport function getLightRule(\n ctx: LightRuleStorageContext,\n name: string,\n): LightRuleMeta | null {\n return resolveLightRuleTask(ctx, name)?.meta ?? null;\n}\n\nexport function createLightRule(\n ctx: LightRuleStorageContext,\n params: {\n name: string;\n title: string;\n description: string;\n segments: LightSegment[];\n repeat_times?: number;\n repeat?: boolean;\n },\n): { meta: LightRuleMeta } {\n const existing = resolveLightRuleTask(ctx, params.name);\n if (existing) {\n throw new LightRuleError(\"ALREADY_EXISTS\", `灯效规则 '${params.name}' 已存在`);\n }\n\n const dir = writeTasksDir(ctx);\n const taskDir = join(dir, params.name);\n\n if (existsSync(taskDir)) {\n throw new LightRuleError(\"ALREADY_EXISTS\", `灯效规则 '${params.name}' 已存在`);\n }\n\n mkdirSync(taskDir, { recursive: true });\n\n const repeatTimes = normalizeRepeatTimes({\n repeat: params.repeat,\n repeat_times: params.repeat_times,\n });\n assertAncsRepeatTimes(repeatTimes);\n\n const meta: LightRuleMeta = {\n name: params.name,\n title: params.title,\n type: \"light-rule\",\n description: params.description,\n segments: params.segments,\n repeat_times: repeatTimes,\n enabled: true,\n createdAt: new Date().toISOString(),\n };\n\n writeMeta(taskDir, meta);\n\n return { meta };\n}\n\nexport function updateLightRule(\n ctx: LightRuleStorageContext,\n params: {\n name: string;\n title?: string;\n description?: string;\n segments?: LightSegment[];\n repeat_times?: number;\n repeat?: boolean;\n enabled?: boolean;\n },\n): { meta: LightRuleMeta } {\n const resolved = resolveLightRuleTask(ctx, params.name);\n const taskDir = resolved?.taskDir;\n const meta = resolved?.meta;\n\n if (!taskDir || !meta) {\n throw new LightRuleError(\"NOT_FOUND\", `灯效规则 '${params.name}' 不存在`);\n }\n\n if (params.description !== undefined) {\n meta.description = params.description;\n }\n if (params.title !== undefined) {\n meta.title = params.title;\n }\n if (params.segments !== undefined) {\n meta.segments = params.segments;\n }\n if (params.repeat !== undefined || params.repeat_times !== undefined) {\n meta.repeat_times = normalizeRepeatTimes({\n repeat: params.repeat,\n repeat_times: params.repeat_times,\n });\n assertAncsRepeatTimes(meta.repeat_times);\n }\n if (params.enabled !== undefined) {\n meta.enabled = params.enabled;\n }\n\n meta.updatedAt = new Date().toISOString();\n writeMeta(taskDir, meta);\n\n return { meta };\n}\n\nexport function deleteLightRule(\n ctx: LightRuleStorageContext,\n name: string,\n): { name: string } {\n const resolved = resolveLightRuleTask(ctx, name);\n const taskDir = resolved?.taskDir;\n const meta = resolved?.meta;\n\n if (!taskDir || !meta) {\n throw new LightRuleError(\"NOT_FOUND\", `灯效规则 '${name}' 不存在`);\n }\n\n rmSync(taskDir, { recursive: true, force: true });\n\n return { name: meta.name };\n}\n\nexport class LightRuleError extends Error {\n constructor(\n public code: string,\n message: string,\n ) {\n super(message);\n this.name = \"LightRuleError\";\n }\n}\n",
|
|
71
70
|
"export interface RepeatConfig {\n repeat?: boolean;\n repeat_times?: number;\n}\n\nexport type RepeatArgument = RepeatConfig | boolean | number | undefined;\n\nexport function normalizeRepeatTimes(input?: RepeatArgument): number {\n if (typeof input === \"boolean\") {\n return input ? 0 : 1;\n }\n\n if (typeof input === \"number\") {\n return validateRepeatTimes(input);\n }\n\n if (!input) {\n return 1;\n }\n\n if (input.repeat_times !== undefined) {\n return validateRepeatTimes(input.repeat_times);\n }\n\n if (input.repeat !== undefined) {\n return input.repeat ? 0 : 1;\n }\n\n return 1;\n}\n\nexport function assertAncsRepeatTimes(repeatTimes: number): void {\n if (repeatTimes !== 0 && repeatTimes !== 1) {\n throw new Error(\n \"当前 ANCS 路径仅支持 repeat_times=0(无限循环)或 1(播放一轮);N>=2 需非 ANCS 路径\",\n );\n }\n}\n\nfunction validateRepeatTimes(value: number): number {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"repeat_times 必须是 >=0 的整数\");\n }\n\n return value;\n}\n",
|
|
@@ -80,7 +79,7 @@
|
|
|
80
79
|
"import { randomUUID } from \"node:crypto\";\nimport WebSocket from \"ws\";\nimport type { RelayClient } from \"./relay-client.js\";\nimport type { ReqFrame, InboundFrame, RequestFrame } from \"./types.js\";\nimport { previewText } from \"./utils.js\";\nimport { resolveHostStateDir } from \"../host.js\";\nimport {\n type DeviceIdentity,\n resolveClientStateDir,\n loadOrCreateDeviceIdentity,\n loadDeviceAuthToken,\n storeDeviceAuthToken,\n clearDeviceAuthToken,\n buildDeviceAuthPayload,\n signDevicePayload,\n publicKeyRawBase64UrlFromPem,\n} from \"./device-identity.js\";\nimport { handleHttpRequest } from \"./http-proxy.js\";\nimport { WsProxy } from \"./ws-proxy.js\";\n\n// ─── Types ───\n\nexport const RELAY_TUNNEL_GATEWAY_CLIENT_INSTANCE_ID =\n \"phone-notifications-relay-tunnel\";\n\nconst GATEWAY_OPERATOR_SCOPES = [\n \"operator.admin\",\n \"operator.approvals\",\n \"operator.pairing\",\n \"operator.read\",\n \"operator.write\",\n] as const;\n\n// openclaw 2026.5.12 起本地 gateway RPC 要求 protocol >= 4;保留 3 以兼容老网关。\nconst GATEWAY_RPC_MIN_PROTOCOL = 3;\nconst GATEWAY_RPC_MAX_PROTOCOL = 4;\n\ninterface ProxyOptions {\n stateDir?: string;\n hostStateDir?: string;\n gatewayBaseUrl: string;\n /** Gateway 鉴权模式 */\n gatewayAuthMode?: \"token\" | \"password\";\n /** Gateway 鉴权 token,代理请求到本地 gateway 时使用 */\n gatewayToken?: string;\n /** Gateway 鉴权密码,代理请求到本地 gateway 时使用 */\n gatewayPassword?: string;\n client: RelayClient;\n logger: {\n info: (msg: string) => void;\n warn: (msg: string) => void;\n error: (msg: string) => void;\n };\n}\n\nconst MAX_AUTO_PAIRING_APPROVALS = 3;\nconst RECENT_ABORTED_CHAT_RUN_TTL_MS = 60_000;\nconst GATEWAY_RPC_HANDSHAKE_TIMEOUT_MS = 10_000;\nconst MAX_GATEWAY_WS_PENDING = 200;\n\ninterface PendingGatewayReqMeta {\n method: string;\n sessionKey?: string;\n}\n\ninterface PendingGatewayPayload {\n payload: string;\n reqId?: string;\n}\n\ninterface RecentAbortedChatRun {\n sessionKey: string;\n abortedAtMs: number;\n}\n\ntype ApproveDevicePairingFn = (\n requestId: string,\n hostStateDir?: string,\n) => Promise<unknown>;\n\nlet approveDevicePairingPromise: Promise<ApproveDevicePairingFn | null> | null =\n null;\nlet approveDevicePairingWarned = false;\n\nfunction formatErrorMessage(err: unknown): string {\n if (err instanceof Error && err.message) return err.message;\n return String(err);\n}\n\nasync function loadApproveDevicePairing(\n logger: ProxyOptions[\"logger\"],\n): Promise<ApproveDevicePairingFn | null> {\n if (!approveDevicePairingPromise) {\n approveDevicePairingPromise = import(\"openclaw/plugin-sdk/device-bootstrap\")\n .then((mod) =>\n typeof mod.approveDevicePairing === \"function\"\n ? (mod.approveDevicePairing as ApproveDevicePairingFn)\n : null,\n )\n .catch((err: unknown) => {\n if (!approveDevicePairingWarned) {\n approveDevicePairingWarned = true;\n logger.warn(\n `TunnelProxy: local gateway auto-pairing disabled because current OpenClaw runtime does not expose device bootstrap SDK (${formatErrorMessage(err)})`,\n );\n }\n return null;\n });\n }\n\n const approveDevicePairing = await approveDevicePairingPromise;\n if (!approveDevicePairing && !approveDevicePairingWarned) {\n approveDevicePairingWarned = true;\n logger.warn(\n \"TunnelProxy: local gateway auto-pairing disabled because current OpenClaw runtime does not expose device bootstrap SDK\",\n );\n }\n return approveDevicePairing;\n}\n\n/**\n * 透明代理:接收 Relay 转发的请求帧,代理到本地 gateway,回传响应帧。\n * 支持 HTTP 请求代理和 WebSocket 连接代理。\n */\nexport class TunnelProxy {\n /** 到本地 Gateway 的持久 RPC WebSocket 连接 */\n private gatewayWs: WebSocket | null = null;\n private gatewayWsConnecting = false;\n /** 握手是否已完成(收到 hello-ok) */\n private gatewayWsReady = false;\n /** 收到本地自动配对成功后,在 close 回调里触发重连 */\n private gatewayWsReconnectRequested = false;\n /** 本地自动配对审批进行中,期间 Gateway 关闭连接时先保留 pending 请求。 */\n private gatewayWsPairingApprovalPending = false;\n /** 防止配对失败时无限重连 */\n private gatewayWsAutoPairingApprovals = 0;\n /** 等待 Gateway WS 握手完成后发送的帧队列 */\n private gatewayWsPending: PendingGatewayPayload[] = [];\n /** 记录已转发到 Gateway 的 req 元信息,便于回包时做定向处理。 */\n private gatewayReqMetaById = new Map<string, PendingGatewayReqMeta>();\n /** 最近由用户手动中断的 chat.run,用于过滤 runtime 误补发的 synthetic failure。 */\n private recentAbortedChatRuns = new Map<string, RecentAbortedChatRun>();\n /** Relay 断开或服务停止时要中断的 HTTP 代理请求。 */\n private httpAbortControllers = new Map<string, AbortController>();\n\n /** 设备身份,用于 Gateway connect 握手 */\n private deviceIdentity: DeviceIdentity;\n\n private readonly stateDir: string;\n private readonly hostStateDir: string;\n private readonly wsProxy: WsProxy;\n\n constructor(private readonly opts: ProxyOptions) {\n this.stateDir = resolveClientStateDir(opts.stateDir);\n this.hostStateDir = opts.hostStateDir ?? resolveHostStateDir();\n this.deviceIdentity = loadOrCreateDeviceIdentity(this.stateDir);\n opts.logger.info(\n `TunnelProxy: loaded device identity (deviceId=${this.deviceIdentity.deviceId})`,\n );\n this.wsProxy = new WsProxy({\n gatewayBaseUrl: opts.gatewayBaseUrl,\n client: opts.client,\n logger: opts.logger,\n });\n }\n\n // ─── Frame dispatcher ───\n\n /** 处理从 Relay 收到的入站帧 */\n async handleFrame(frame: InboundFrame): Promise<void> {\n this.opts.logger.info(\n `TunnelProxy: handling frame type=${frame.type}, id=${\"id\" in frame ? frame.id : \"N/A\"}`,\n );\n switch (frame.type) {\n case \"request\":\n await this.handleRequestFrame(frame);\n break;\n case \"req\":\n this.handleReqFrame(frame);\n break;\n case \"ws_open\":\n this.wsProxy.handleWsOpen(frame);\n break;\n case \"ws_data\":\n this.wsProxy.handleWsData(frame);\n break;\n case \"ws_close\":\n this.wsProxy.handleWsClose(frame);\n break;\n default:\n this.opts.logger.warn(\n `TunnelProxy: unknown frame type=\"${(frame as any).type}\", id=${\"id\" in frame ? (frame as any).id : \"N/A\"}, forwarding raw to gateway`,\n );\n // 未知帧类型也尝试通过 RPC WS 转发,避免静默丢弃\n this.forwardRawToGateway(JSON.stringify(frame));\n break;\n }\n }\n\n /** 清理所有代理的 WebSocket 连接 */\n cleanup(): void {\n this.opts.logger.info(\n `TunnelProxy: cleanup, closing ${this.wsProxy.activeCount} active WS connections, gatewayWs=${!!this.gatewayWs}`,\n );\n this.wsProxy.cleanup();\n for (const [id, controller] of this.httpAbortControllers) {\n this.opts.logger.info(`TunnelProxy: aborting HTTP proxy id=${id}`);\n controller.abort();\n }\n this.httpAbortControllers.clear();\n\n const gatewayWs = this.gatewayWs;\n this.gatewayWs = null;\n this.gatewayWsReady = false;\n this.gatewayWsConnecting = false;\n this.gatewayWsReconnectRequested = false;\n this.gatewayWsPairingApprovalPending = false;\n this.gatewayWsAutoPairingApprovals = 0;\n this.gatewayWsPending = [];\n this.gatewayReqMetaById.clear();\n this.recentAbortedChatRuns.clear();\n if (gatewayWs) {\n try {\n gatewayWs.close();\n } catch {\n // ignore\n }\n }\n }\n\n // ─── Gateway RPC WebSocket ───\n\n private async handleRequestFrame(frame: RequestFrame): Promise<void> {\n const controller = new AbortController();\n this.httpAbortControllers.set(frame.id, controller);\n try {\n await handleHttpRequest(\n {\n ...this.opts,\n abortSignal: controller.signal,\n },\n frame,\n );\n } finally {\n this.httpAbortControllers.delete(frame.id);\n }\n }\n\n private pushGatewayPending(\n entry: PendingGatewayPayload,\n reason: string,\n ): boolean {\n if (this.gatewayWsPending.length >= MAX_GATEWAY_WS_PENDING) {\n this.opts.logger.error(\n `TunnelProxy: gateway WS pending queue overflow (${this.gatewayWsPending.length}/${MAX_GATEWAY_WS_PENDING}); failing ${entry.reqId ? `req id=${entry.reqId}` : \"raw frame\"}`,\n );\n this.failGatewayPendingEntry(\n entry,\n \"GATEWAY_RPC_QUEUE_FULL\",\n \"local gateway RPC queue is full\",\n );\n return false;\n }\n\n this.gatewayWsPending.push(entry);\n this.opts.logger.info(\n `TunnelProxy: gateway WS pending queue size=${this.gatewayWsPending.length} (${reason})`,\n );\n return true;\n }\n\n /** 将未知帧原样转发到 Gateway WS */\n private forwardRawToGateway(payload: string): void {\n if (this.gatewayWsReady && this.gatewayWs?.readyState === WebSocket.OPEN) {\n this.sendGatewayPayload(this.gatewayWs, { payload }, \"raw frame\");\n } else {\n if (\n this.pushGatewayPending(\n { payload },\n \"raw frame queued before gateway WS ready\",\n )\n ) {\n this.ensureGatewayWs();\n }\n }\n }\n\n /** 处理 Relay 转发的 Gateway RPC 请求帧,原样通过 WebSocket 发给本地 Gateway */\n private handleReqFrame(frame: ReqFrame): void {\n const payload = JSON.stringify(frame);\n this.gatewayReqMetaById.set(frame.id, {\n method: frame.method,\n sessionKey: this.normalizeSessionKey(frame.params?.sessionKey),\n });\n this.opts.logger.info(\n `TunnelProxy: req id=${frame.id} method=${frame.method} → gateway WS (${payload.length} chars)`,\n );\n\n if (this.gatewayWsReady && this.gatewayWs?.readyState === WebSocket.OPEN) {\n this.sendGatewayPayload(\n this.gatewayWs,\n { payload, reqId: frame.id },\n `req id=${frame.id}`,\n );\n } else {\n this.opts.logger.info(\n `TunnelProxy: req id=${frame.id} queued, gateway WS not ready yet`,\n );\n if (\n this.pushGatewayPending(\n { payload, reqId: frame.id },\n `req id=${frame.id} queued before gateway WS handshake`,\n )\n ) {\n this.ensureGatewayWs();\n }\n }\n }\n\n private sendGatewayRpcError(\n id: string,\n code: string,\n message: string,\n ): void {\n this.gatewayReqMetaById.delete(id);\n this.opts.client.sendRaw(\n JSON.stringify({\n type: \"res\",\n id,\n ok: false,\n error: {\n code,\n message,\n },\n }),\n );\n }\n\n private failGatewayPendingEntry(\n entry: PendingGatewayPayload,\n code: string,\n message: string,\n ): void {\n if (!entry.reqId) return;\n this.sendGatewayRpcError(entry.reqId, code, message);\n }\n\n private failGatewayPending(code: string, message: string): void {\n if (this.gatewayWsPending.length === 0) return;\n const pending = this.gatewayWsPending;\n this.gatewayWsPending = [];\n this.opts.logger.warn(\n `TunnelProxy: failing ${pending.length} pending gateway RPC frame(s): ${message}`,\n );\n for (const entry of pending) {\n this.failGatewayPendingEntry(entry, code, message);\n }\n }\n\n private failGatewayInflight(code: string, message: string): void {\n if (this.gatewayReqMetaById.size === 0) return;\n const ids = [...this.gatewayReqMetaById.keys()];\n this.opts.logger.warn(\n `TunnelProxy: failing ${ids.length} in-flight gateway RPC request(s): ${message}`,\n );\n for (const id of ids) {\n this.sendGatewayRpcError(id, code, message);\n }\n }\n\n private failAllGatewayRequests(code: string, message: string): void {\n this.failGatewayPending(code, message);\n this.failGatewayInflight(code, message);\n }\n\n private sendGatewayPayload(\n ws: WebSocket,\n entry: PendingGatewayPayload,\n context: string,\n ): boolean {\n try {\n ws.send(entry.payload);\n return true;\n } catch (err) {\n const message = formatErrorMessage(err);\n this.opts.logger.warn(\n `TunnelProxy: RPC WS send failed for ${context}: ${message}`,\n );\n this.failGatewayPendingEntry(\n entry,\n \"GATEWAY_RPC_SEND_FAILED\",\n `local gateway RPC send failed: ${message}`,\n );\n this.failGatewayInflight(\n \"GATEWAY_RPC_SEND_FAILED\",\n \"local gateway RPC connection closed after send failure\",\n );\n if (this.gatewayWs === ws) {\n this.gatewayWs = null;\n this.gatewayWsReady = false;\n this.gatewayWsConnecting = false;\n }\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n } else {\n ws.close();\n }\n } catch {\n // ignore\n }\n return false;\n }\n }\n\n // ─── Gateway connect auth helpers ───\n\n private resolveGatewayConnectAuth():\n | { token?: string; password?: string }\n | undefined {\n const token = this.opts.gatewayToken?.trim() || undefined;\n const password = this.opts.gatewayPassword?.trim() || undefined;\n if (!token && !password) return undefined;\n return { token, password };\n }\n\n private loadStoredDeviceToken(role: string): string | undefined {\n return (\n loadDeviceAuthToken({\n stateDir: this.stateDir,\n deviceId: this.deviceIdentity.deviceId,\n role,\n })?.token ?? undefined\n );\n }\n\n private buildGatewayConnectAuth(role: string): {\n auth?: { token?: string; deviceToken?: string; password?: string };\n authToken?: string;\n authPassword?: string;\n deviceToken?: string;\n } {\n const explicitAuth = this.resolveGatewayConnectAuth();\n const authPassword = explicitAuth?.password?.trim() || undefined;\n const explicitGatewayToken = explicitAuth?.token?.trim() || undefined;\n const deviceToken = explicitGatewayToken\n ? undefined\n : this.loadStoredDeviceToken(role);\n const authToken = explicitGatewayToken ?? deviceToken;\n const auth =\n authToken || authPassword || deviceToken\n ? { token: authToken, deviceToken, password: authPassword }\n : undefined;\n return { auth, authToken, authPassword, deviceToken };\n }\n\n private storeIssuedDeviceToken(params: {\n fallbackRole: string;\n fallbackScopes: string[];\n authInfo: any;\n }): void {\n const token = params.authInfo?.deviceToken;\n if (typeof token !== \"string\" || !token.trim()) return;\n const role =\n typeof params.authInfo?.role === \"string\" && params.authInfo.role.trim()\n ? params.authInfo.role.trim()\n : params.fallbackRole;\n const scopes = Array.isArray(params.authInfo?.scopes)\n ? params.authInfo.scopes.filter(\n (scope: unknown): scope is string =>\n typeof scope === \"string\" && !!scope.trim(),\n )\n : params.fallbackScopes;\n storeDeviceAuthToken({\n stateDir: this.stateDir,\n deviceId: this.deviceIdentity.deviceId,\n role,\n token: token.trim(),\n scopes,\n });\n }\n\n private maybeClearStoredDeviceTokenOnMismatch(code: number, reason: string): void {\n const explicitAuth = this.resolveGatewayConnectAuth();\n if (explicitAuth?.token || explicitAuth?.password) return;\n if (code !== 1008 || !reason.toLowerCase().includes(\"device token mismatch\")) return;\n clearDeviceAuthToken({\n stateDir: this.stateDir,\n deviceId: this.deviceIdentity.deviceId,\n role: \"operator\",\n });\n this.opts.logger.warn(\n `TunnelProxy: cleared stale stored device token after gateway mismatch (deviceId=${this.deviceIdentity.deviceId})`,\n );\n }\n\n private async maybeAutoApproveGatewayPairing(frame: any): Promise<boolean> {\n const errorCode =\n typeof frame?.error?.code === \"string\" ? frame.error.code : undefined;\n const detailsCode =\n typeof frame?.error?.details?.code === \"string\"\n ? frame.error.details.code\n : undefined;\n if (errorCode !== \"NOT_PAIRED\" && detailsCode !== \"PAIRING_REQUIRED\") {\n return false;\n }\n\n const requestId =\n typeof frame?.error?.details?.requestId === \"string\"\n ? frame.error.details.requestId.trim()\n : \"\";\n const reason =\n typeof frame?.error?.details?.reason === \"string\"\n ? frame.error.details.reason.trim()\n : \"\";\n\n if (!requestId) {\n this.opts.logger.warn(\n \"TunnelProxy: gateway pairing required but requestId missing; unable to auto-approve\",\n );\n return false;\n }\n\n if (\n reason &&\n reason !== \"not-paired\" &&\n reason !== \"scope-upgrade\"\n ) {\n this.opts.logger.warn(\n `TunnelProxy: gateway pairing required with unsupported reason=${reason}; skipping auto-approve`,\n );\n return false;\n }\n\n if (this.gatewayWsAutoPairingApprovals >= MAX_AUTO_PAIRING_APPROVALS) {\n this.opts.logger.warn(\n `TunnelProxy: reached auto-pairing retry limit (${MAX_AUTO_PAIRING_APPROVALS}); requestId=${requestId}`,\n );\n return false;\n }\n\n this.gatewayWsPairingApprovalPending = true;\n try {\n const approveDevicePairing = await loadApproveDevicePairing(this.opts.logger);\n if (!approveDevicePairing) {\n this.gatewayWsPairingApprovalPending = false;\n return false;\n }\n const approved = await approveDevicePairing(requestId, this.hostStateDir);\n if (!approved) {\n this.gatewayWsPairingApprovalPending = false;\n this.opts.logger.warn(\n `TunnelProxy: gateway pairing request ${requestId} not found in host state ${this.hostStateDir}`,\n );\n return false;\n }\n this.gatewayWsAutoPairingApprovals += 1;\n this.gatewayWsReconnectRequested = true;\n this.gatewayWsPairingApprovalPending = false;\n this.opts.logger.info(\n `TunnelProxy: auto-approved local gateway pairing request ${requestId} (reason=${reason || \"not-paired\"}, hostStateDir=${this.hostStateDir}, approval=${this.gatewayWsAutoPairingApprovals}/${MAX_AUTO_PAIRING_APPROVALS})`,\n );\n return true;\n } catch (err: any) {\n this.gatewayWsPairingApprovalPending = false;\n this.opts.logger.warn(\n `TunnelProxy: failed to auto-approve gateway pairing request ${requestId}: ${err?.message ?? String(err)}`,\n );\n return false;\n }\n }\n\n // ─── Gateway RPC WebSocket lifecycle ───\n\n private normalizeSessionKey(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n }\n\n private normalizeRunId(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n }\n\n private pruneRecentAbortedChatRuns(now = Date.now()): void {\n for (const [runId, entry] of this.recentAbortedChatRuns) {\n if (now - entry.abortedAtMs > RECENT_ABORTED_CHAT_RUN_TTL_MS) {\n this.recentAbortedChatRuns.delete(runId);\n }\n }\n }\n\n private rememberRecentAbortedChatRun(runId: unknown, sessionKey: unknown): void {\n const normalizedRunId = this.normalizeRunId(runId);\n const normalizedSessionKey = this.normalizeSessionKey(sessionKey);\n if (!normalizedRunId || !normalizedSessionKey) return;\n this.pruneRecentAbortedChatRuns();\n this.recentAbortedChatRuns.set(normalizedRunId, {\n sessionKey: normalizedSessionKey,\n abortedAtMs: Date.now(),\n });\n }\n\n private getAssistantMessageText(message: any): string {\n if (!message || typeof message !== \"object\") return \"\";\n if (typeof message.text === \"string\") return message.text;\n if (!Array.isArray(message.content)) return \"\";\n return message.content\n .filter(\n (item: any) =>\n item &&\n typeof item === \"object\" &&\n item.type === \"text\" &&\n typeof item.text === \"string\",\n )\n .map((item: any) => item.text)\n .join(\"\");\n }\n\n private looksLikeSyntheticAbortFailureText(text: string): boolean {\n const normalized = text.trim().toLowerCase();\n if (!normalized) return false;\n return (\n normalized.includes(\"agent failed before reply:\") &&\n normalized.includes(\"aborted\") &&\n normalized.includes(\"openclaw logs --follow\")\n );\n }\n\n private isSyntheticAbortHistoryMessage(\n message: any,\n sessionKey: string,\n ): boolean {\n const text = this.getAssistantMessageText(message);\n if (!this.looksLikeSyntheticAbortFailureText(text)) return false;\n const messageTimestamp =\n typeof message?.timestamp === \"number\" ? message.timestamp : null;\n const now = Date.now();\n this.pruneRecentAbortedChatRuns(now);\n for (const entry of this.recentAbortedChatRuns.values()) {\n if (entry.sessionKey !== sessionKey) continue;\n if (messageTimestamp === null) return true;\n if (Math.abs(messageTimestamp - entry.abortedAtMs) <= RECENT_ABORTED_CHAT_RUN_TTL_MS) {\n return true;\n }\n }\n return false;\n }\n\n private maybeRewriteGatewayFrame(text: string, frame: any): string | null {\n this.pruneRecentAbortedChatRuns();\n\n if (\n frame?.type === \"event\" &&\n frame?.event === \"chat\" &&\n frame?.payload?.state === \"aborted\"\n ) {\n this.rememberRecentAbortedChatRun(\n frame.payload?.runId,\n frame.payload?.sessionKey,\n );\n return text;\n }\n\n if (frame?.type === \"ack\" && frame?.ok === false && typeof frame?.id === \"string\") {\n this.gatewayReqMetaById.delete(frame.id);\n return text;\n }\n\n let reqMeta: PendingGatewayReqMeta | undefined;\n if (frame?.type === \"res\" && typeof frame?.id === \"string\") {\n reqMeta = this.gatewayReqMetaById.get(frame.id);\n this.gatewayReqMetaById.delete(frame.id);\n }\n\n if (\n frame?.type === \"res\" &&\n frame?.ok === true &&\n reqMeta?.method === \"chat.abort\"\n ) {\n const runIds = Array.isArray(frame?.payload?.runIds)\n ? frame.payload.runIds\n : [];\n for (const runId of runIds) {\n this.rememberRecentAbortedChatRun(runId, reqMeta.sessionKey);\n }\n return text;\n }\n\n if (\n frame?.type === \"event\" &&\n frame?.event === \"chat\" &&\n frame?.payload?.state === \"final\"\n ) {\n const runId = this.normalizeRunId(frame?.payload?.runId);\n const assistantText = this.getAssistantMessageText(frame?.payload?.message);\n const recentAbort = runId ? this.recentAbortedChatRuns.get(runId) : undefined;\n if (\n recentAbort &&\n this.looksLikeSyntheticAbortFailureText(assistantText)\n ) {\n this.opts.logger.info(\n `TunnelProxy: suppressing synthetic abort failure final for runId=${runId}`,\n );\n return null;\n }\n return text;\n }\n\n if (\n frame?.type === \"res\" &&\n frame?.ok === true &&\n reqMeta?.method === \"chat.history\" &&\n Array.isArray(frame?.payload?.messages)\n ) {\n const sessionKey =\n this.normalizeSessionKey(frame?.payload?.sessionKey) ?? reqMeta.sessionKey;\n if (!sessionKey) return text;\n const filteredMessages = frame.payload.messages.filter(\n (message: any) =>\n !this.isSyntheticAbortHistoryMessage(message, sessionKey),\n );\n if (filteredMessages.length === frame.payload.messages.length) {\n return text;\n }\n this.opts.logger.info(\n `TunnelProxy: removed ${frame.payload.messages.length - filteredMessages.length} synthetic abort history message(s) for session=${sessionKey}`,\n );\n return JSON.stringify({\n ...frame,\n payload: {\n ...frame.payload,\n messages: filteredMessages,\n },\n });\n }\n\n return text;\n }\n\n /** 确保到本地 Gateway 的 RPC WebSocket 已连接且握手完成 */\n private ensureGatewayWs(): void {\n if (this.gatewayWsReady && this.gatewayWs?.readyState === WebSocket.OPEN)\n return;\n if (this.gatewayWsConnecting) return;\n\n this.gatewayWsConnecting = true;\n this.gatewayWsReady = false;\n const wsUrl = this.opts.gatewayBaseUrl.replace(/^http/, \"ws\");\n\n this.opts.logger.info(\n `TunnelProxy: RPC WS connecting to gateway ${wsUrl} (pending=${this.gatewayWsPending.length})`,\n );\n\n let ws: WebSocket;\n try {\n ws = new WebSocket(wsUrl, {\n handshakeTimeout: GATEWAY_RPC_HANDSHAKE_TIMEOUT_MS,\n });\n } catch (err) {\n const message = formatErrorMessage(err);\n this.gatewayWsConnecting = false;\n this.opts.logger.error(\n `TunnelProxy: RPC WS failed to create gateway connection: ${message}`,\n );\n this.failAllGatewayRequests(\n \"GATEWAY_RPC_CONNECT_FAILED\",\n `local gateway RPC connect failed: ${message}`,\n );\n return;\n }\n\n this.gatewayWs = ws;\n let handshakeTimer: ReturnType<typeof setTimeout> | null = setTimeout(\n () => {\n handshakeTimer = null;\n if (this.gatewayWs !== ws || this.gatewayWsReady) return;\n this.opts.logger.warn(\n `TunnelProxy: RPC WS handshake timed out after ${GATEWAY_RPC_HANDSHAKE_TIMEOUT_MS}ms (pending=${this.gatewayWsPending.length})`,\n );\n this.gatewayWs = null;\n this.gatewayWsReady = false;\n this.gatewayWsConnecting = false;\n this.failAllGatewayRequests(\n \"GATEWAY_RPC_HANDSHAKE_TIMEOUT\",\n \"local gateway RPC handshake timed out\",\n );\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n } else {\n ws.close();\n }\n } catch {\n // ignore\n }\n },\n GATEWAY_RPC_HANDSHAKE_TIMEOUT_MS,\n );\n\n const clearHandshakeTimer = () => {\n if (handshakeTimer) {\n clearTimeout(handshakeTimer);\n handshakeTimer = null;\n }\n };\n\n ws.on(\"open\", () => {\n this.opts.logger.info(\n `TunnelProxy: RPC WS tcp connected, waiting for connect.challenge (pending=${this.gatewayWsPending.length})`,\n );\n });\n\n ws.on(\"message\", async (data: WebSocket.RawData) => {\n let text: string;\n if (typeof data === \"string\") {\n text = data;\n } else if (Buffer.isBuffer(data)) {\n text = data.toString();\n } else {\n text = Buffer.from(data as ArrayBuffer).toString();\n }\n\n const preview = text.length <= 500 ? text : text.substring(0, 500) + \"…\";\n this.opts.logger.info(\n `TunnelProxy: RPC WS ← gateway (${text.length} chars): ${preview}`,\n );\n\n let frame: any;\n try {\n frame = JSON.parse(text);\n } catch {\n this.opts.logger.warn(\n \"TunnelProxy: RPC WS received non-JSON, ignoring\",\n );\n return;\n }\n\n // 1) 收到 connect.challenge → 回复 connect 请求(带设备身份签名)\n if (frame.type === \"event\" && frame.event === \"connect.challenge\") {\n this.handleConnectChallenge(ws, frame);\n return;\n }\n\n // 2) 收到 connect 的 hello-ok 响应 → 握手完成,flush 待发帧\n if (\n frame.type === \"res\" &&\n frame.ok === true &&\n frame.payload?.type === \"hello-ok\"\n ) {\n clearHandshakeTimer();\n this.storeIssuedDeviceToken({\n fallbackRole: \"operator\",\n fallbackScopes: [...GATEWAY_OPERATOR_SCOPES],\n authInfo: frame.payload?.auth,\n });\n this.gatewayWsAutoPairingApprovals = 0;\n this.gatewayWsReconnectRequested = false;\n this.gatewayWsReady = true;\n this.gatewayWsConnecting = false;\n this.opts.logger.info(\n `TunnelProxy: RPC WS handshake done (hello-ok), flushing ${this.gatewayWsPending.length} pending frames`,\n );\n const pending = this.gatewayWsPending;\n this.gatewayWsPending = [];\n for (let i = 0; i < pending.length; i++) {\n const entry = pending[i];\n if (!this.sendGatewayPayload(ws, entry, entry.reqId ?? \"pending frame\")) {\n return;\n }\n }\n return;\n }\n\n // 3) 收到 connect 失败响应 → 关闭连接\n if (frame.type === \"res\" && frame.ok === false && !this.gatewayWsReady) {\n const autoApproved = await this.maybeAutoApproveGatewayPairing(frame);\n if (autoApproved) {\n const wsAlreadyClosed =\n ws.readyState === WebSocket.CLOSING ||\n ws.readyState === WebSocket.CLOSED ||\n this.gatewayWs !== ws;\n this.opts.logger.info(\n `TunnelProxy: RPC WS handshake requested local pairing approval, reconnecting${wsAlreadyClosed ? \" immediately\" : \" after close\"} (pending=${this.gatewayWsPending.length})`,\n );\n if (wsAlreadyClosed) {\n this.gatewayWsReconnectRequested = false;\n this.ensureGatewayWs();\n return;\n }\n ws.close(1000, \"pairing approved, reconnecting\");\n return;\n }\n this.opts.logger.error(\n `TunnelProxy: RPC WS handshake failed (pending=${this.gatewayWsPending.length}): ${previewText(JSON.stringify(frame.error), 500)}`,\n );\n clearHandshakeTimer();\n this.failAllGatewayRequests(\n \"GATEWAY_RPC_HANDSHAKE_FAILED\",\n `local gateway RPC handshake failed: ${previewText(JSON.stringify(frame.error), 500)}`,\n );\n ws.close();\n return;\n }\n\n // 4) 握手后的普通消息 → 透传回 Relay\n const rewritten = this.maybeRewriteGatewayFrame(text, frame);\n if (rewritten !== null) {\n this.opts.client.sendRaw(rewritten);\n }\n });\n\n ws.on(\"close\", (code: number, reason: Buffer) => {\n clearHandshakeTimer();\n const wasReady = this.gatewayWsReady;\n const pendingCount = this.gatewayWsPending.length;\n const reasonText = reason.toString();\n const shouldReconnect =\n this.gatewayWsReconnectRequested && pendingCount > 0;\n const shouldHoldForPairing =\n this.gatewayWsPairingApprovalPending && pendingCount > 0;\n this.opts.logger.info(\n `TunnelProxy: RPC WS closed by gateway (code=${code}, reason=${reasonText}, ready=${wasReady}, pending=${pendingCount}, activeWs=${this.wsProxy.activeCount})`,\n );\n if (this.gatewayWs === ws) {\n this.gatewayWs = null;\n this.gatewayWsReady = false;\n }\n this.gatewayWsConnecting = false;\n this.maybeClearStoredDeviceTokenOnMismatch(code, reasonText);\n if (shouldReconnect) {\n this.gatewayWsReconnectRequested = false;\n this.opts.logger.info(\n `TunnelProxy: retrying RPC WS after local pairing approval (pending=${this.gatewayWsPending.length})`,\n );\n queueMicrotask(() => this.ensureGatewayWs());\n } else if (\n !shouldHoldForPairing &&\n (pendingCount > 0 || this.gatewayReqMetaById.size > 0)\n ) {\n this.failAllGatewayRequests(\n \"GATEWAY_RPC_DISCONNECTED\",\n `local gateway RPC disconnected: code=${code}, reason=${reasonText}`,\n );\n }\n });\n\n ws.on(\"error\", (err: Error) => {\n clearHandshakeTimer();\n this.opts.logger.warn(\n `TunnelProxy: RPC WS error: ${err.message} (ready=${this.gatewayWsReady}, pending=${this.gatewayWsPending.length}, activeWs=${this.wsProxy.activeCount})`,\n );\n const shouldFailRequests =\n this.gatewayWs === ws &&\n (this.gatewayWsPending.length > 0 || this.gatewayReqMetaById.size > 0);\n this.gatewayWsConnecting = false;\n if (this.gatewayWs === ws) {\n this.gatewayWs = null;\n this.gatewayWsReady = false;\n }\n if (shouldFailRequests) {\n this.failAllGatewayRequests(\n \"GATEWAY_RPC_ERROR\",\n `local gateway RPC error: ${err.message}`,\n );\n }\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n }\n } catch {\n // ignore\n }\n });\n }\n\n private handleConnectChallenge(ws: WebSocket, frame: any): void {\n const challengeNonce: string = frame.payload?.nonce ?? \"\";\n const connectRequestId = `tunnel-connect-${randomUUID()}`;\n const role = \"operator\";\n const scopes = [...GATEWAY_OPERATOR_SCOPES];\n const gatewayConnectAuth = this.buildGatewayConnectAuth(role);\n this.opts.logger.info(\n `TunnelProxy: received connect.challenge (nonce=${challengeNonce}, connectReqId=${connectRequestId}, hasToken=${!!gatewayConnectAuth.authToken}, hasPassword=${!!gatewayConnectAuth.authPassword}, hasDeviceToken=${!!gatewayConnectAuth.deviceToken}), sending connect request with device identity`,\n );\n\n const signedAtMs = Date.now();\n const clientId = \"gateway-client\";\n const clientMode = \"backend\";\n\n const authPayload = buildDeviceAuthPayload({\n deviceId: this.deviceIdentity.deviceId,\n clientId,\n clientMode,\n role,\n scopes,\n signedAtMs,\n token: gatewayConnectAuth.authToken ?? null,\n nonce: challengeNonce,\n });\n const signature = signDevicePayload(\n this.deviceIdentity.privateKeyPem,\n authPayload,\n );\n\n const connectReq = {\n type: \"req\",\n id: connectRequestId,\n method: \"connect\",\n params: {\n minProtocol: GATEWAY_RPC_MIN_PROTOCOL,\n maxProtocol: GATEWAY_RPC_MAX_PROTOCOL,\n client: {\n id: clientId,\n version: \"1.0.0\",\n platform: process.platform,\n mode: clientMode,\n instanceId: RELAY_TUNNEL_GATEWAY_CLIENT_INSTANCE_ID,\n },\n role,\n scopes,\n ...(gatewayConnectAuth.auth ? { auth: gatewayConnectAuth.auth } : {}),\n device: {\n id: this.deviceIdentity.deviceId,\n publicKey: publicKeyRawBase64UrlFromPem(\n this.deviceIdentity.publicKeyPem,\n ),\n signature,\n signedAt: signedAtMs,\n nonce: challengeNonce,\n },\n },\n };\n ws.send(JSON.stringify(connectReq));\n }\n}\n",
|
|
81
80
|
"import * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { resolveStateDir } from \"../host.js\";\n\n// ─── Types ───\n\nexport interface DeviceIdentity {\n deviceId: string;\n publicKeyPem: string;\n privateKeyPem: string;\n}\n\nexport interface DeviceAuthEntry {\n token: string;\n role: string;\n scopes: string[];\n updatedAtMs: number;\n}\n\ninterface DeviceAuthStore {\n version: 1;\n deviceId: string;\n tokens: Record<string, DeviceAuthEntry>;\n}\n\n// ─── Crypto helpers ───\n\nconst ED25519_SPKI_PREFIX = Buffer.from(\"302a300506032b6570032100\", \"hex\");\n\nexport function base64UrlEncode(buf: Buffer): string {\n return buf\n .toString(\"base64\")\n .replaceAll(\"+\", \"-\")\n .replaceAll(\"/\", \"_\")\n .replace(/=+$/g, \"\");\n}\n\nexport function derivePublicKeyRaw(publicKeyPem: string): Buffer {\n const spki = crypto.createPublicKey(publicKeyPem).export({\n type: \"spki\",\n format: \"der\",\n });\n if (\n spki.length === ED25519_SPKI_PREFIX.length + 32 &&\n spki.subarray(0, ED25519_SPKI_PREFIX.length).equals(ED25519_SPKI_PREFIX)\n )\n return spki.subarray(ED25519_SPKI_PREFIX.length);\n return spki;\n}\n\nexport function fingerprintPublicKey(publicKeyPem: string): string {\n const raw = derivePublicKeyRaw(publicKeyPem);\n return crypto.createHash(\"sha256\").update(raw).digest(\"hex\");\n}\n\nexport function publicKeyRawBase64UrlFromPem(publicKeyPem: string): string {\n return base64UrlEncode(derivePublicKeyRaw(publicKeyPem));\n}\n\nexport function signDevicePayload(privateKeyPem: string, payload: string): string {\n const key = crypto.createPrivateKey(privateKeyPem);\n return base64UrlEncode(crypto.sign(null, Buffer.from(payload, \"utf8\"), key));\n}\n\nexport function buildDeviceAuthPayload(params: {\n deviceId: string;\n clientId: string;\n clientMode: string;\n role: string;\n scopes: string[];\n signedAtMs: number;\n token: string | null;\n nonce: string;\n}): string {\n const scopes = params.scopes.join(\",\");\n const token = params.token ?? \"\";\n return [\n \"v2\",\n params.deviceId,\n params.clientId,\n params.clientMode,\n params.role,\n scopes,\n String(params.signedAtMs),\n token,\n params.nonce,\n ].join(\"|\");\n}\n\n// ─── File I/O helpers ───\n\nexport function resolveClientStateDir(stateDir: string | undefined): string {\n return stateDir ?? resolveStateDir();\n}\n\nfunction ensureDir(filePath: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n}\n\nfunction resolveIdentityPath(stateDir: string): string {\n return path.join(stateDir, \"identity\", \"device.json\");\n}\n\nfunction normalizeDeviceAuthRole(role: string): string {\n return role.trim();\n}\n\nfunction normalizeDeviceAuthScopes(scopes: string[]): string[] {\n const out = new Set<string>();\n for (const scope of scopes) {\n const trimmed = scope.trim();\n if (trimmed) {\n out.add(trimmed);\n }\n }\n return [...out].sort();\n}\n\nfunction resolveDeviceAuthPath(stateDir: string): string {\n return path.join(stateDir, \"identity\", \"device-auth.json\");\n}\n\nfunction readDeviceAuthStore(filePath: string): DeviceAuthStore | null {\n try {\n if (!fs.existsSync(filePath)) return null;\n const raw = fs.readFileSync(filePath, \"utf8\");\n const parsed = JSON.parse(raw);\n if (parsed?.version !== 1 || typeof parsed.deviceId !== \"string\") return null;\n if (!parsed.tokens || typeof parsed.tokens !== \"object\") return null;\n return parsed as DeviceAuthStore;\n } catch {\n return null;\n }\n}\n\nfunction writeDeviceAuthStore(filePath: string, store: DeviceAuthStore): void {\n ensureDir(filePath);\n fs.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\\n`, {\n mode: 0o600,\n });\n try {\n fs.chmodSync(filePath, 0o600);\n } catch {\n // ignore chmod errors on unsupported filesystems\n }\n}\n\n// ─── Token CRUD ───\n\nexport function loadDeviceAuthToken(params: {\n stateDir: string;\n deviceId: string;\n role: string;\n}): DeviceAuthEntry | null {\n const store = readDeviceAuthStore(resolveDeviceAuthPath(params.stateDir));\n if (!store || store.deviceId !== params.deviceId) return null;\n const entry = store.tokens[normalizeDeviceAuthRole(params.role)];\n if (!entry || typeof entry.token !== \"string\") return null;\n return entry;\n}\n\nexport function storeDeviceAuthToken(params: {\n stateDir: string;\n deviceId: string;\n role: string;\n token: string;\n scopes: string[];\n}): DeviceAuthEntry {\n const filePath = resolveDeviceAuthPath(params.stateDir);\n const existing = readDeviceAuthStore(filePath);\n const role = normalizeDeviceAuthRole(params.role);\n const next: DeviceAuthStore = {\n version: 1,\n deviceId: params.deviceId,\n tokens:\n existing && existing.deviceId === params.deviceId && existing.tokens\n ? { ...existing.tokens }\n : {},\n };\n const entry: DeviceAuthEntry = {\n token: params.token,\n role,\n scopes: normalizeDeviceAuthScopes(params.scopes),\n updatedAtMs: Date.now(),\n };\n next.tokens[role] = entry;\n writeDeviceAuthStore(filePath, next);\n return entry;\n}\n\nexport function clearDeviceAuthToken(params: {\n stateDir: string;\n deviceId: string;\n role: string;\n}): void {\n const filePath = resolveDeviceAuthPath(params.stateDir);\n const store = readDeviceAuthStore(filePath);\n if (!store || store.deviceId !== params.deviceId) return;\n const role = normalizeDeviceAuthRole(params.role);\n if (!store.tokens[role]) return;\n const next: DeviceAuthStore = {\n version: 1,\n deviceId: store.deviceId,\n tokens: { ...store.tokens },\n };\n delete next.tokens[role];\n writeDeviceAuthStore(filePath, next);\n}\n\n// ─── Identity lifecycle ───\n\nexport function loadOrCreateDeviceIdentity(stateDir: string): DeviceIdentity {\n const filePath = resolveIdentityPath(stateDir);\n try {\n if (fs.existsSync(filePath)) {\n const raw = fs.readFileSync(filePath, \"utf8\");\n const parsed = JSON.parse(raw);\n if (\n parsed?.version === 1 &&\n typeof parsed.deviceId === \"string\" &&\n typeof parsed.publicKeyPem === \"string\" &&\n typeof parsed.privateKeyPem === \"string\"\n ) {\n const derivedId = fingerprintPublicKey(parsed.publicKeyPem);\n return {\n deviceId: derivedId,\n publicKeyPem: parsed.publicKeyPem,\n privateKeyPem: parsed.privateKeyPem,\n };\n }\n }\n } catch {\n // fall through to generate\n }\n // Generate new identity\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ed25519\");\n const publicKeyPem = publicKey\n .export({ type: \"spki\", format: \"pem\" })\n .toString();\n const privateKeyPem = privateKey\n .export({ type: \"pkcs8\", format: \"pem\" })\n .toString();\n const identity: DeviceIdentity = {\n deviceId: fingerprintPublicKey(publicKeyPem),\n publicKeyPem,\n privateKeyPem,\n };\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const stored = {\n version: 1,\n ...identity,\n createdAtMs: Date.now(),\n };\n ensureDir(filePath);\n fs.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\\n`, {\n mode: 0o600,\n });\n return identity;\n}\n",
|
|
82
81
|
"import WebSocket from \"ws\";\nimport type { RelayClient } from \"./relay-client.js\";\nimport type { WsOpenFrame, WsDataFrame, WsCloseFrame } from \"./types.js\";\nimport { mapPath } from \"./http-proxy.js\";\n\nconst GATEWAY_WS_HANDSHAKE_TIMEOUT_MS = 10_000;\n\nexport interface WsProxyOptions {\n gatewayBaseUrl: string;\n client: RelayClient;\n logger: {\n info: (msg: string) => void;\n warn: (msg: string) => void;\n error: (msg: string) => void;\n };\n}\n\nexport class WsProxy {\n /** 活跃的 WebSocket 代理连接,按帧 id 索引 */\n private connections = new Map<string, WebSocket>();\n\n constructor(private readonly opts: WsProxyOptions) {}\n\n get activeCount(): number {\n return this.connections.size;\n }\n\n cleanup(): void {\n const connections = [...this.connections.entries()];\n this.connections.clear();\n for (const [id, ws] of connections) {\n this.opts.logger.info(`WsProxy: closing WS id=${id}`);\n try {\n ws.close();\n } catch {\n // ignore\n }\n }\n }\n\n handleWsOpen(frame: WsOpenFrame): void {\n const wsUrl =\n this.opts.gatewayBaseUrl.replace(/^http/, \"ws\") +\n mapPath(frame.path);\n this.opts.logger.info(\n `TunnelProxy: WS open id=${frame.id}, path=${frame.path} → ${wsUrl}`,\n );\n\n try {\n const existing = this.connections.get(frame.id);\n if (existing) {\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} already exists, closing previous gateway connection`,\n );\n try {\n existing.close(1000, \"replaced by new relay ws_open\");\n } catch {\n // ignore\n }\n }\n\n const ws = new WebSocket(wsUrl, {\n headers: frame.headers,\n handshakeTimeout: GATEWAY_WS_HANDSHAKE_TIMEOUT_MS,\n });\n this.connections.set(frame.id, ws);\n\n let notifiedClosed = false;\n let connectTimer: ReturnType<typeof setTimeout> | null = setTimeout(\n () => {\n connectTimer = null;\n if (\n this.connections.get(frame.id) !== ws ||\n ws.readyState === WebSocket.OPEN\n ) {\n return;\n }\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} connect timed out after ${GATEWAY_WS_HANDSHAKE_TIMEOUT_MS}ms`,\n );\n notifyClosed(1011, \"gateway websocket connect timeout\");\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n } else {\n ws.close();\n }\n } catch {\n // ignore\n }\n },\n GATEWAY_WS_HANDSHAKE_TIMEOUT_MS,\n );\n\n const clearConnectTimer = () => {\n if (connectTimer) {\n clearTimeout(connectTimer);\n connectTimer = null;\n }\n };\n\n const notifyClosed = (code: number, reason: string) => {\n if (notifiedClosed) return;\n notifiedClosed = true;\n clearConnectTimer();\n if (this.connections.get(frame.id) === ws) {\n this.connections.delete(frame.id);\n }\n this.opts.client.send({\n type: \"ws_close\",\n id: frame.id,\n code,\n reason,\n });\n };\n\n ws.on(\"open\", () => {\n clearConnectTimer();\n if (this.connections.get(frame.id) !== ws) {\n try {\n ws.close(1000, \"stale relay ws_open\");\n } catch {\n // ignore\n }\n return;\n }\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} connected to gateway, active=${this.connections.size}`,\n );\n this.opts.client.send({\n type: \"ws_opened\",\n id: frame.id,\n });\n });\n\n ws.on(\"message\", (data: WebSocket.RawData) => {\n if (this.connections.get(frame.id) !== ws) {\n return;\n }\n const text =\n typeof data === \"string\"\n ? data\n : Buffer.isBuffer(data)\n ? data.toString()\n : String(data);\n\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} ← gateway data (${text.length} chars): ${text.substring(0, 200)}`,\n );\n this.opts.client.send({\n type: \"ws_data\",\n id: frame.id,\n data: text,\n });\n });\n\n ws.on(\"close\", (code: number, reason: Buffer) => {\n clearConnectTimer();\n const reasonText = reason.toString();\n const isCurrent = this.connections.get(frame.id) === ws;\n if (isCurrent) {\n this.connections.delete(frame.id);\n }\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} closed by gateway (code=${code}, reason=${reasonText}), active=${this.connections.size}`,\n );\n if (isCurrent) {\n notifyClosed(code, reasonText);\n }\n });\n\n ws.on(\"error\", (err: Error) => {\n clearConnectTimer();\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} error: ${err.message}, active=${this.connections.size}`,\n );\n if (this.connections.get(frame.id) === ws) {\n notifyClosed(1011, err.message);\n }\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n }\n } catch {\n // ignore\n }\n });\n } catch (err) {\n this.opts.logger.error(\n `TunnelProxy: WS id=${frame.id} failed to connect: ${err instanceof Error ? err.message : String(err)}`,\n );\n this.opts.client.send({\n type: \"ws_close\",\n id: frame.id,\n code: 1011,\n reason: `failed to connect: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n handleWsData(frame: WsDataFrame): void {\n const ws = this.connections.get(frame.id);\n if (ws?.readyState === WebSocket.OPEN) {\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} → gateway data (${frame.data.length} chars): ${frame.data.substring(0, 200)}`,\n );\n ws.send(frame.data);\n } else {\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} data dropped, ws not open (exists=${!!ws}, readyState=${ws?.readyState ?? \"N/A\"})`,\n );\n }\n }\n\n handleWsClose(frame: WsCloseFrame): void {\n const ws = this.connections.get(frame.id);\n if (ws) {\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} close requested by relay (code=${frame.code ?? 1000}, reason=${frame.reason ?? \"\"})`,\n );\n this.connections.delete(frame.id);\n try {\n ws.close(frame.code ?? 1000, frame.reason ?? \"\");\n } catch {\n // ignore\n }\n } else {\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} close requested but connection not found`,\n );\n }\n }\n}\n",
|
|
83
|
-
"/**\n * 共享 src 适配层 —— CLI 与 openclaw 插件**共用** phone-notifications 的 `src/`。\n *\n * 跨包相对路径只在本文件出现,其余 CLI 代码从这里 import,避免到处写 `../../phone-notifications/...`。\n * 这些模块是纯函数/纯存储逻辑(不依赖 openclaw 宿主),Bun 构建时会被打进 CLI 产物。\n */\nexport {\n collectMatchingNotifications,\n matchesNotificationQuery,\n type NotificationQueryOptions,\n} from \"
|
|
82
|
+
"/**\n * 共享 src 适配层 —— CLI 与 openclaw 插件**共用** phone-notifications 的 `src/`。\n *\n * 跨包相对路径只在本文件出现,其余 CLI 代码从这里 import,避免到处写 `../../phone-notifications/...`。\n * 这些模块是纯函数/纯存储逻辑(不依赖 openclaw 宿主),Bun 构建时会被打进 CLI 产物。\n */\nexport {\n collectMatchingNotifications,\n matchesNotificationQuery,\n type NotificationQueryOptions,\n} from \"./vendor/cli/ntf-query.js\";\n\nexport type {\n StoredNotification,\n NotificationConversationType,\n} from \"./vendor/notification/storage.js\";\n\nexport {\n listDateKeysAsync,\n readDateFileAsync,\n matchesNotificationAppFilter,\n sortNotificationsByTimestampDesc,\n readRecordingIndex,\n daysAgo,\n today,\n formatDate,\n} from \"./vendor/cli/helpers.js\";\n\nexport type { CliRecordingEntry } from \"./vendor/cli/helpers.js\";\n\n// ── daemon 侧复用(接收手机推送 + 灯效规则 + 灯效校验)──\nexport { NotificationStorage } from \"./vendor/notification/storage.js\";\nexport { registerNotificationInterfaces } from \"./vendor/plugin/notifications.js\";\nexport { RecordingStorage } from \"./vendor/recording/storage.js\";\nexport { registerRecordingInterfaces } from \"./vendor/plugin/recordings.js\";\nexport { handleRecordingSync } from \"./vendor/recording/handler.js\";\nexport type { RecordingStatusEvent } from \"./vendor/recording/handler.js\";\nexport { validateAsrConfig } from \"./vendor/recording/asr.js\";\nexport type {\n AsrConfig,\n RecordingMetadata,\n} from \"./vendor/types.js\";\nexport { LightRuleRegistry } from \"./vendor/light-rules/registry.js\";\nexport { registerLightRulesGateway } from \"./vendor/light-rules/gateway.js\";\nexport {\n LIGHT_RULE_GATEWAY_METHODS,\n LIGHT_RULE_GATEWAY_METHOD_LIST,\n} from \"./vendor/light-rules/names.js\";\nexport { validateSegments } from \"./vendor/light/validators.js\";\nexport { normalizeRepeatTimes, assertAncsRepeatTimes } from \"./vendor/light/repeat.js\";\nexport type { LightSegment, PluginConfig, RawNotification } from \"./vendor/types.js\";\nexport { sendLightEffect } from \"./vendor/light/sender.js\";\nexport type { SendLightResult } from \"./vendor/light/sender.js\";\n\nimport presetsV1Raw from \"./vendor/light/presets-v1.json\";\nimport type { LightSegment as _LightSegment } from \"./vendor/types.js\";\n\nexport interface LightPreset {\n presetId: string;\n displayName: string;\n description: string;\n repeat_times: number;\n segments: _LightSegment[];\n}\n\n/** phone-notifications 共享的内置 preset 表(red-steady / red-breath / red-strobe-3 / green-* / blue-* / yellow-strobe-3)。 */\nexport const LIGHT_PRESETS_V1 = presetsV1Raw as {\n version: string;\n presets: LightPreset[];\n};\n\n// ── Relay 隧道:复用插件的连接逻辑(RelayClient 建连/心跳/重连 + TunnelProxy 反代到本地 HTTP)──\nexport { RelayClient } from \"./vendor/tunnel/relay-client.js\";\nexport type { TunnelStatusInfo } from \"./vendor/tunnel/relay-client.js\";\nexport { TunnelProxy } from \"./vendor/tunnel/proxy.js\";\nexport {\n currentClientLabel,\n getIngestContext,\n runWithIngestContext,\n type IngestContext,\n} from \"./vendor/ingest-context.js\";\nexport {\n RELAY_INTERNAL_HTTP_HEADER,\n mapPath as mapRelayHttpPath,\n} from \"./vendor/tunnel/http-proxy.js\";\n",
|
|
84
83
|
"/**\n * notification service —— search / summary / stats / storage-path + shortcuts。\n * 全部纯读磁盘(🟢),不需要 daemon。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { buildQueryOptions, queryNotifications, type RawQueryOpts } from \"../notification/query.js\";\nimport type { NotificationQueryOptions } from \"../shared.js\";\nimport { daysAgo, today, formatDate } from \"../shared.js\";\nimport type { StoredNotification } from \"../shared.js\";\n\nconst MAX_LIMIT = Number.MAX_SAFE_INTEGER;\n\nexport async function notificationSearch(\n ctx: CliContext,\n _args: unknown[],\n opts: RawQueryOpts,\n): Promise<unknown> {\n const options = buildQueryOptions(opts);\n return queryNotifications(ctx.paths, options);\n}\n\ninterface SummaryOpts extends RawQueryOpts {\n sample?: string;\n top?: string;\n}\n\nfunction topCounts(\n items: StoredNotification[],\n pick: (n: StoredNotification) => string | undefined,\n topN: number,\n): Array<{ key: string; count: number }> {\n const counts = new Map<string, number>();\n for (const item of items) {\n const key = pick(item);\n if (!key) continue;\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return [...counts.entries()]\n .map(([key, count]) => ({ key, count }))\n .sort((a, b) => b.count - a.count || a.key.localeCompare(b.key))\n .slice(0, topN);\n}\n\nexport async function notificationSummary(\n ctx: CliContext,\n _args: unknown[],\n opts: SummaryOpts,\n): Promise<unknown> {\n const sample = opts.sample ? Number(opts.sample) : 30;\n const top = opts.top ? Number(opts.top) : 10;\n const options = buildQueryOptions({ ...opts, limit: String(MAX_LIMIT) }, MAX_LIMIT);\n const items = await queryNotifications(ctx.paths, options);\n return {\n ok: true,\n total: items.length,\n range: { from: opts.from ?? null, to: opts.to ?? null },\n topApps: topCounts(items, (n) => n.appDisplayName || n.appName, top),\n topSenders: topCounts(items, (n) => n.senderName || n.title, top),\n sample: items.slice(0, sample),\n };\n}\n\ninterface StatsOpts {\n from?: string;\n to?: string;\n app?: string;\n client?: string;\n dim?: string;\n}\n\nconst HOUR_KEY = (n: StoredNotification): string =>\n String(new Date(n.timestamp).getHours()).padStart(2, \"0\");\n\nexport async function notificationStats(\n ctx: CliContext,\n _args: unknown[],\n opts: StatsOpts,\n): Promise<unknown> {\n const from = opts.from ?? daysAgo(7);\n const to = opts.to ?? today();\n const dim = opts.dim ?? \"all\";\n const allowed = [\"date\", \"app\", \"sender\", \"hour\", \"client\", \"all\"];\n if (!allowed.includes(dim)) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `--dim 只能是 ${allowed.join(\"|\")}`);\n }\n const options: NotificationQueryOptions = {\n app: opts.app,\n client: opts.client,\n limit: MAX_LIMIT,\n fromTs: null,\n toTs: null,\n fromDateKey: from,\n toDateKey: to,\n };\n const items = await queryNotifications(ctx.paths, options);\n\n const byDate = topCounts(items, (n) => formatDate(new Date(n.timestamp)), MAX_LIMIT);\n const byApp = topCounts(items, (n) => n.appDisplayName || n.appName, MAX_LIMIT);\n const bySender = topCounts(items, (n) => n.senderName || n.title, MAX_LIMIT);\n const byHour = topCounts(items, HOUR_KEY, MAX_LIMIT);\n const byClient = topCounts(items, (n) => n.clientLabel ?? \"legacy\", MAX_LIMIT);\n\n const dims = { date: byDate, app: byApp, sender: bySender, hour: byHour, client: byClient };\n return {\n ok: true,\n total: items.length,\n range: { from, to },\n dim,\n ...(dim === \"all\" ? dims : { [dim]: dims[dim as keyof typeof dims] }),\n };\n}\n\nexport function notificationStoragePath(ctx: CliContext): unknown {\n return { ok: true, path: ctx.paths.notifications };\n}\n\nexport async function notificationToday(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string } = {},\n): Promise<unknown> {\n const day = today();\n const options = buildQueryOptions({\n from: `${day}T00:00:00${tzOffset()}`,\n to: `${day}T23:59:59${tzOffset()}`,\n client: opts.client,\n limit: String(MAX_LIMIT),\n }, MAX_LIMIT);\n return queryNotifications(ctx.paths, options);\n}\n\nexport async function notificationRecent(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string } = {},\n): Promise<unknown> {\n const fromTs = Date.now() - 60 * 60 * 1000;\n const options: NotificationQueryOptions = {\n limit: MAX_LIMIT,\n client: opts.client,\n fromTs,\n toTs: null,\n fromDateKey: formatDate(new Date(fromTs)),\n toDateKey: null,\n };\n return queryNotifications(ctx.paths, options);\n}\n\nexport function notificationUnread(): unknown {\n throw new YoooclawError(\n \"YOOOCLAW_NOT_IMPLEMENTED\",\n \"+unread 预留:需要先落地通知的已读状态模型\",\n );\n}\n\n/** 本地时区偏移,如 +08:00。 */\nfunction tzOffset(): string {\n const min = -new Date().getTimezoneOffset();\n const sign = min >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(min);\n const hh = String(Math.floor(abs / 60)).padStart(2, \"0\");\n const mm = String(abs % 60).padStart(2, \"0\");\n return `${sign}${hh}:${mm}`;\n}\n",
|
|
85
84
|
"/**\n * 通知同步 checkpoint 协议(供外部记忆系统按批拉取)。\n * 与 phone-notifications 插件版 `ntf-sync` 行为一致,错误改走 YoooclawError。\n */\nimport { existsSync, readFileSync, readdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { writeJsonFile } from \"../fs-utils.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport type { StoredNotification } from \"../shared.js\";\n\nexport const SYNC_FETCH_LIMIT = 300;\n\ninterface CheckpointData {\n [dateKey: string]: { lastIndex: number };\n}\n\nfunction checkpointPath(dir: string): string {\n return join(dir, \".checkpoint.json\");\n}\n\nfunction readCheckpoint(dir: string): CheckpointData {\n const p = checkpointPath(dir);\n if (!existsSync(p)) return {};\n try {\n return JSON.parse(readFileSync(p, \"utf-8\")) as CheckpointData;\n } catch {\n return {};\n }\n}\n\nfunction writeCheckpoint(dir: string, data: CheckpointData): void {\n writeJsonFile(checkpointPath(dir), data);\n}\n\nfunction listDateKeys(dir: string): string[] {\n if (!existsSync(dir)) return [];\n const pattern = /^(\\d{4}-\\d{2}-\\d{2})\\.json$/;\n const keys: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isFile()) continue;\n const m = pattern.exec(entry.name);\n if (m) keys.push(m[1]);\n }\n return keys.sort((a, b) => b.localeCompare(a));\n}\n\nfunction readDateFile(dir: string, dateKey: string): StoredNotification[] {\n const filePath = join(dir, `${dateKey}.json`);\n if (!existsSync(filePath)) return [];\n try {\n const parsed = JSON.parse(readFileSync(filePath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n\nfunction parseIndexOption(raw: string, label: string): number {\n const n = Number.parseInt(raw, 10);\n if (!Number.isInteger(n) || String(n) !== raw || n < 0) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `${label} 必须是非负整数`);\n }\n return n;\n}\n\nexport function scanSync(dir: string): unknown {\n const checkpoint = readCheckpoint(dir);\n const pending: { date: string; count: number; startIndex: number }[] = [];\n let totalPending = 0;\n for (const dateKey of listDateKeys(dir)) {\n const items = readDateFile(dir, dateKey);\n const lastIndex = checkpoint[dateKey]?.lastIndex ?? -1;\n const unprocessed = items.length - (lastIndex + 1);\n if (unprocessed > 0) {\n pending.push({ date: dateKey, count: unprocessed, startIndex: lastIndex + 1 });\n totalPending += unprocessed;\n }\n }\n return { ok: true, pending, totalPending };\n}\n\nexport function fetchSync(dir: string, date: string, maxEndIndexRaw?: string): unknown {\n const items = readDateFile(dir, date);\n if (items.length === 0) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `日期 ${date} 无通知数据`);\n }\n const checkpoint = readCheckpoint(dir);\n const lastIndex = checkpoint[date]?.lastIndex ?? -1;\n const startIndex = lastIndex + 1;\n let maxEndIndex = items.length - 1;\n if (maxEndIndexRaw) {\n maxEndIndex = Math.min(parseIndexOption(maxEndIndexRaw, \"--max-end-index\"), items.length - 1);\n }\n const snapshotEndExclusive = Math.max(startIndex, maxEndIndex + 1);\n const unprocessed = items.slice(startIndex, snapshotEndExclusive);\n const notifications = unprocessed.slice(0, SYNC_FETCH_LIMIT);\n const endIndex = notifications.length > 0 ? startIndex + notifications.length - 1 : lastIndex;\n const hasMore = unprocessed.length > notifications.length;\n return {\n ok: true,\n date,\n startIndex,\n endIndex,\n nextStartIndex: hasMore ? endIndex + 1 : null,\n limit: SYNC_FETCH_LIMIT,\n maxEndIndex,\n returned: notifications.length,\n totalUnprocessed: unprocessed.length,\n hasMore,\n notifications,\n };\n}\n\nexport function commitSync(dir: string, date: string, endIndexRaw?: string): unknown {\n const items = readDateFile(dir, date);\n if (items.length === 0) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `日期 ${date} 无通知数据`);\n }\n const checkpoint = readCheckpoint(dir);\n const lastIndex = checkpoint[date]?.lastIndex ?? -1;\n let committedIndex: number;\n let commitMode: string;\n if (endIndexRaw) {\n committedIndex = parseIndexOption(endIndexRaw, \"--end-index\");\n if (committedIndex >= items.length) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--end-index 超出当前日期通知文件范围\");\n }\n if (committedIndex < lastIndex) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--end-index 早于当前 checkpoint,不能回退消费进度\");\n }\n if (committedIndex > lastIndex + SYNC_FETCH_LIMIT) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--end-index 超出单批 fetch 上限,不能跳过未处理通知\");\n }\n commitMode = \"exact-end-index\";\n } else {\n committedIndex = Math.min(items.length - 1, lastIndex + SYNC_FETCH_LIMIT);\n commitMode = \"legacy-batch-limit\";\n }\n const hasMore = committedIndex < items.length - 1;\n checkpoint[date] = { lastIndex: committedIndex };\n writeCheckpoint(dir, checkpoint);\n return {\n ok: true,\n date,\n committedIndex,\n commitMode,\n limit: SYNC_FETCH_LIMIT,\n hasMore,\n nextStartIndex: hasMore ? committedIndex + 1 : null,\n };\n}\n",
|
|
86
85
|
"/**\n * sync service —— scan / fetch / commit(通知同步给记忆系统)。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { scanSync, fetchSync, commitSync } from \"../notification/sync.js\";\n\nexport function syncScan(ctx: CliContext): unknown {\n return scanSync(ctx.paths.notifications);\n}\n\nexport function syncFetch(\n ctx: CliContext,\n _args: unknown[],\n opts: { date?: string; maxEndIndex?: string },\n): unknown {\n if (!opts.date) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--date 必填(YYYY-MM-DD)\");\n }\n return fetchSync(ctx.paths.notifications, opts.date, opts.maxEndIndex);\n}\n\nexport function syncCommit(\n ctx: CliContext,\n _args: unknown[],\n opts: { date?: string; endIndex?: string },\n): unknown {\n if (!opts.date) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--date 必填(YYYY-MM-DD)\");\n }\n return commitSync(ctx.paths.notifications, opts.date, opts.endIndex);\n}\n",
|
|
@@ -93,7 +92,7 @@
|
|
|
93
92
|
"/**\n * update self —— 查 npm registry 比对版本并提示。\n * 不做自动替换:升级方式取决于安装来源(CLI_DIST),命令文本相应区分。\n */\nimport { arch as nodeArch, platform as nodePlatform } from \"node:os\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { CLI_DIST, CLI_VERSION } from \"../version.js\";\n\nconst PACKAGE = \"@yoooclaw/cli\";\nconst REGISTRY = \"https://registry.npmjs.org\";\nconst INSTALL_SH = \"https://raw.githubusercontent.com/Yoooclaw/openclaw-plugin/master/packages/cli/scripts/install.sh\";\n\ninterface UpdateOpts {\n beta?: boolean;\n json?: boolean;\n}\n\nfunction normalizeOs(p: string): \"darwin\" | \"linux\" | null {\n if (p === \"darwin\") return \"darwin\";\n if (p === \"linux\") return \"linux\";\n return null;\n}\n\nfunction normalizeArch(a: string): \"arm64\" | \"x64\" | null {\n if (a === \"arm64\") return \"arm64\";\n if (a === \"x64\") return \"x64\";\n return null;\n}\n\nfunction nativeTargetName(): string | null {\n const os = normalizeOs(nodePlatform());\n const arch = normalizeArch(nodeArch());\n if (!os || !arch) return null;\n return `yoooclaw-${os}-${arch}`;\n}\n\nfunction upgradeCommand(channel: \"latest\" | \"beta\", latest: string): string {\n if (CLI_DIST === \"native\") {\n const target = nativeTargetName();\n if (!target) {\n return `curl -fsSL ${INSTALL_SH} | sh`;\n }\n return `curl -fsSL ${INSTALL_SH} | sh -s -- --version ${latest}`;\n }\n // npm 与 dev 形态都按 npm 升级(dev 形态走源码,提示文案给用户参考)\n if (channel === \"beta\") return `npm i -g ${PACKAGE}@beta`;\n return `npm update -g ${PACKAGE}`;\n}\n\nfunction compareSemver(a: string, b: string): number {\n const pa = a.split(\"-\")[0].split(\".\").map(Number);\n const pb = b.split(\"-\")[0].split(\".\").map(Number);\n for (let i = 0; i < 3; i += 1) {\n const d = (pa[i] ?? 0) - (pb[i] ?? 0);\n if (d !== 0) return d > 0 ? 1 : -1;\n }\n return 0;\n}\n\nexport async function updateSelf(\n _ctx: CliContext,\n _args: unknown[],\n opts: UpdateOpts,\n): Promise<unknown> {\n const tag = opts.beta ? \"beta\" : \"latest\";\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 8000);\n let latest: string;\n try {\n const res = await fetch(`${REGISTRY}/${encodeURIComponent(PACKAGE)}`, {\n signal: controller.signal,\n headers: { Accept: \"application/vnd.npm.install-v1+json\" },\n });\n if (!res.ok) {\n throw new YoooclawError(\"YOOOCLAW_NETWORK_ERROR\", `npm registry 返回 ${res.status}`);\n }\n const body = (await res.json()) as { \"dist-tags\"?: Record<string, string> };\n const resolved = body[\"dist-tags\"]?.[tag];\n if (!resolved) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `npm dist-tag \\`${tag}\\` 不存在`);\n }\n latest = resolved;\n } catch (err) {\n if (err instanceof YoooclawError) throw err;\n throw new YoooclawError(\"YOOOCLAW_NETWORK_ERROR\", `查询 npm registry 失败:${(err as Error).message}`);\n } finally {\n clearTimeout(timer);\n }\n\n const updateAvailable = compareSemver(latest, CLI_VERSION) > 0;\n return {\n ok: true,\n package: PACKAGE,\n channel: tag,\n dist: CLI_DIST,\n current: CLI_VERSION,\n latest,\n updateAvailable,\n command: updateAvailable ? upgradeCommand(tag, latest) : null,\n hint: updateAvailable\n ? \"发现新版本;CLI 不做自动更新,请手动执行上面的命令\"\n : \"已是最新版本\",\n };\n}\n",
|
|
94
93
|
"/**\n * doctor —— 环境自检。默认仅做**无网络、无 keychain 也确定性**的本地检查(PRD 可测试性要求)。\n * 网络类自检(relay / OSS 出站可达性)交给 gateway test / tunnel +test。\n */\nimport { accessSync, constants, existsSync, statSync } from \"node:fs\";\nimport type { CliContext } from \"../context.js\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport { rootDir } from \"../paths.js\";\nimport { configExists, loadConfig } from \"../config/store.js\";\nimport { resolveApiKey, resolveGatewayToken } from \"../credentials/store.js\";\nimport { keychainAvailable } from \"../credentials/keychain.js\";\nimport { daemonState } from \"../daemon/lock.js\";\n\ntype CheckStatus = \"ok\" | \"warn\" | \"fail\" | \"skip\";\ninterface Check {\n name: string;\n status: CheckStatus;\n detail: string;\n}\n\nconst MIN_NODE = [22, 12, 0];\n\nfunction checkNode(): Check {\n const parts = process.versions.node.split(\".\").map(Number);\n let ok = true;\n for (let i = 0; i < 3; i += 1) {\n if ((parts[i] ?? 0) > MIN_NODE[i]) break;\n if ((parts[i] ?? 0) < MIN_NODE[i]) { ok = false; break; }\n }\n return {\n name: \"node-version\",\n status: ok ? \"ok\" : \"fail\",\n detail: `Node ${process.versions.node}(要求 >= ${MIN_NODE.join(\".\")})`,\n };\n}\n\nfunction checkDir(name: string, dir: string, fix: boolean): Check {\n if (!existsSync(dir)) {\n if (fix) {\n ensureDir(dir);\n return { name, status: \"ok\", detail: `已创建 ${dir}` };\n }\n return { name, status: \"warn\", detail: `目录不存在:${dir}(--fix 可创建)` };\n }\n try {\n accessSync(dir, constants.R_OK | constants.W_OK);\n } catch {\n return { name, status: \"fail\", detail: `目录不可读写:${dir}` };\n }\n const mode = statSync(dir).mode & 0o777;\n const tooOpen = (mode & 0o077) !== 0;\n return {\n name,\n status: tooOpen ? \"warn\" : \"ok\",\n detail: `${dir}(mode ${mode.toString(8)}${tooOpen ? \",建议收紧到 700\" : \"\"})`,\n };\n}\n\nexport function doctor(\n ctx: CliContext,\n _args: unknown[],\n opts: { json?: boolean; fix?: boolean },\n): unknown {\n const fix = Boolean(opts.fix);\n const checks: Check[] = [checkNode(), checkDir(\"root-dir\", rootDir(), fix)];\n\n // profile 配置\n if (configExists(ctx.paths)) {\n try {\n loadConfig(ctx.paths);\n checks.push({ name: \"profile-config\", status: \"ok\", detail: `${ctx.paths.config} 可解析` });\n } catch (err) {\n checks.push({ name: \"profile-config\", status: \"fail\", detail: (err as Error).message });\n }\n } else {\n checks.push({\n name: \"profile-config\",\n status: \"warn\",\n detail: `profile \\`${ctx.profile}\\` 未初始化(yoooclaw config init)`,\n });\n }\n\n // api-key\n const apiKey = resolveApiKey();\n checks.push({\n name: \"api-key\",\n status: apiKey.value ? \"ok\" : \"warn\",\n detail: apiKey.value ? `来源 ${apiKey.source}` : \"未配置(yoooclaw auth set-api-key)\",\n });\n\n // gateway token\n if (configExists(ctx.paths)) {\n const token = resolveGatewayToken(loadConfig(ctx.paths));\n checks.push({\n name: \"gateway-token\",\n status: token.value ? \"ok\" : \"warn\",\n detail: token.value ? `来源 ${token.source}` : \"未设置(yoooclaw auth token-rotate)\",\n });\n }\n\n // keychain(可选加固,不可用只是 skip)\n checks.push({\n name: \"keychain\",\n status: keychainAvailable() ? \"ok\" : \"skip\",\n detail: keychainAvailable() ? \"可用\" : \"当前平台无可用 keychain,凭据将落文件\",\n });\n\n // daemon(不在跑只是 info/warn)\n const state = daemonState(ctx.paths);\n checks.push({\n name: \"daemon\",\n status: state.running ? \"ok\" : state.stale ? \"warn\" : \"skip\",\n detail: state.running\n ? `运行中(pid ${state.lock?.pid})`\n : state.stale\n ? \"锁文件存在但进程已死(陈旧锁)\"\n : \"未运行\",\n });\n\n const failed = checks.filter((c) => c.status === \"fail\").length;\n const warned = checks.filter((c) => c.status === \"warn\").length;\n return {\n ok: failed === 0,\n profile: ctx.profile,\n summary: { total: checks.length, failed, warned },\n checks,\n note: \"网络类自检(relay / OSS 可达性)请用 yoooclaw gateway test / tunnel +test\",\n };\n}\n",
|
|
95
94
|
"/**\n * skills list / install —— 把随包发布的 SKILL.md 安装到 agent 可发现目录。\n *\n * 背景:这些 Skill 在 openclaw 插件里由 `openclaw.plugin.json` 的 `skills` 字段自动注册;\n * 独立 CLI 形态下它们只随 npm 包躺在 `<pkg>/skills/`,没有宿主帮忙装载。本命令负责把它们\n * 软链(默认)或复制到 agent 的 skills 目录,让 agent 能发现并触发。\n */\nimport {\n cpSync,\n existsSync,\n lstatSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n realpathSync,\n rmSync,\n symlinkSync,\n} from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport type { CliContext } from \"../context.js\";\nimport { ErrorCode, YoooclawError } from \"../errors.js\";\n\nconst AGENT_IDS = [\"claude\", \"codex\"] as const;\nconst INSTALL_AGENT_IDS = [\"auto\", \"custom\", ...AGENT_IDS] as const;\n\ntype BuiltInAgentId = (typeof AGENT_IDS)[number];\ntype InstallAgentId = (typeof INSTALL_AGENT_IDS)[number];\n\ninterface AgentAdapter {\n id: BuiltInAgentId;\n label: string;\n homeDir(): string;\n skillsDir(): string;\n envHint?: string;\n}\n\nexport interface SkillTargetCandidate {\n agent: BuiltInAgentId;\n label: string;\n homeDir: string;\n target: string;\n detected: boolean;\n reason: string;\n installCommand: string;\n}\n\ninterface TargetSelection {\n agent: BuiltInAgentId | \"custom\";\n agentLabel: string;\n target: string;\n source: \"explicit-target\" | \"agent-default\" | \"auto-detected\";\n detectedTargets?: SkillTargetCandidate[];\n}\n\nfunction trimEnv(name: string): string | undefined {\n const value = process.env[name]?.trim();\n return value ? value : undefined;\n}\n\nfunction claudeHomeDir(): string {\n return join(homedir(), \".claude\");\n}\n\nfunction codexHomeDir(): string {\n return trimEnv(\"CODEX_HOME\") ?? join(homedir(), \".codex\");\n}\n\nconst AGENT_ADAPTERS: AgentAdapter[] = [\n {\n id: \"claude\",\n label: \"Claude Code\",\n homeDir: claudeHomeDir,\n skillsDir: () => join(claudeHomeDir(), \"skills\"),\n },\n {\n id: \"codex\",\n label: \"Codex\",\n homeDir: codexHomeDir,\n skillsDir: () => join(codexHomeDir(), \"skills\"),\n envHint: \"CODEX_HOME\",\n },\n];\n\nfunction getAgentAdapter(id: BuiltInAgentId): AgentAdapter {\n const adapter = AGENT_ADAPTERS.find((a) => a.id === id);\n if (!adapter) {\n throw new YoooclawError(\n ErrorCode.INVALID_ARGUMENT,\n `不支持的 agent:${id}`,\n { hint: `可选值:${INSTALL_AGENT_IDS.join(\" | \")}` },\n );\n }\n return adapter;\n}\n\nfunction normalizeAgent(raw: unknown): InstallAgentId {\n const agent = typeof raw === \"string\" && raw.trim() ? raw.trim() : \"auto\";\n if ((INSTALL_AGENT_IDS as readonly string[]).includes(agent)) {\n return agent as InstallAgentId;\n }\n throw new YoooclawError(\n ErrorCode.INVALID_ARGUMENT,\n `不支持的 agent:${agent}`,\n { hint: `可选值:${INSTALL_AGENT_IDS.join(\" | \")}` },\n );\n}\n\nfunction hasPath(path: string): boolean {\n return existsSync(path);\n}\n\nexport function listSkillTargetCandidates(): SkillTargetCandidate[] {\n return AGENT_ADAPTERS.map((adapter) => {\n const homeDir = adapter.homeDir();\n const target = adapter.skillsDir();\n const hasHome = hasPath(homeDir);\n const hasTarget = hasPath(target);\n const envValue = adapter.envHint ? trimEnv(adapter.envHint) : undefined;\n return {\n agent: adapter.id,\n label: adapter.label,\n homeDir,\n target,\n detected: hasHome || hasTarget || Boolean(envValue),\n reason: hasTarget\n ? \"skills 目录已存在\"\n : hasHome\n ? \"agent 配置目录已存在\"\n : envValue && adapter.envHint\n ? `${adapter.envHint} 已设置`\n : adapter.envHint\n ? `未发现配置目录;可设置 ${adapter.envHint} 或显式传 --agent ${adapter.id}`\n : `未发现配置目录;可显式传 --agent ${adapter.id}`,\n installCommand: `yoooclaw skills install --agent ${adapter.id}`,\n };\n });\n}\n\nfunction resolveTargetSelection(opts: InstallOpts): TargetSelection {\n const explicitTarget = opts.target?.trim();\n const agent = normalizeAgent(opts.agent);\n\n if (explicitTarget) {\n if (agent === \"auto\" || agent === \"custom\") {\n return {\n agent: \"custom\",\n agentLabel: \"Custom\",\n target: explicitTarget,\n source: \"explicit-target\",\n };\n }\n const adapter = getAgentAdapter(agent);\n return {\n agent,\n agentLabel: adapter.label,\n target: explicitTarget,\n source: \"explicit-target\",\n };\n }\n\n if (agent === \"custom\") {\n throw new YoooclawError(\n ErrorCode.INVALID_ARGUMENT,\n \"`--agent custom` 需要同时传 `--target <dir>`\",\n { hint: \"例如:yoooclaw skills install --agent custom --target ~/.config/agent/skills\" },\n );\n }\n\n if (agent !== \"auto\") {\n const adapter = getAgentAdapter(agent);\n return {\n agent,\n agentLabel: adapter.label,\n target: adapter.skillsDir(),\n source: \"agent-default\",\n };\n }\n\n const candidates = listSkillTargetCandidates();\n const detected = candidates.filter((c) => c.detected);\n if (detected.length === 1) {\n const only = detected[0];\n return {\n agent: only.agent,\n agentLabel: only.label,\n target: only.target,\n source: \"auto-detected\",\n detectedTargets: detected,\n };\n }\n\n if (detected.length === 0) {\n throw new YoooclawError(\n ErrorCode.NOT_FOUND,\n \"未检测到可安装 Skill 的 Agent\",\n {\n hint: \"请显式指定 `--agent claude` / `--agent codex`,或使用 `--target <dir>` 指定任意 skills 目录\",\n targets: candidates,\n },\n );\n }\n\n throw new YoooclawError(\n ErrorCode.CONFIRMATION_REQUIRED,\n \"检测到多个 Agent,无法自动判断 Skill 应安装到哪里\",\n {\n hint: \"请显式指定 `--agent claude` / `--agent codex`,或使用 `--target <dir>`\",\n targets: detected,\n },\n );\n}\n\n/**\n * 候选锚点目录,按可靠性排序,用于向上查找随包发布的 `skills/`。\n *\n * 注意:Bun 打包成 cjs 时会把 `__dirname` / `import.meta.url` 替换成**构建期**绝对路径,\n * 在用户机器上无效;因此优先用运行期入口(require.main / argv[1],node 已对其做 realpath),\n * `import.meta.url` 仅作 dev/test(未打包,源码直跑)的兜底。\n */\nfunction candidateAnchorDirs(): string[] {\n const out: string[] = [];\n // 1) cjs 产物:入口模块真实路径(如 <pkg>/dist/bin.cjs)\n try {\n const mainFile = typeof require !== \"undefined\" ? require.main?.filename : undefined;\n if (mainFile) out.push(dirname(mainFile));\n } catch {\n // ESM 下无 require\n }\n // 2) 被执行脚本路径(npm bin 软链 → realpath 还原到真实文件)\n try {\n const argv1 = process.argv[1];\n if (argv1) out.push(dirname(realpathSync(argv1)));\n } catch {\n // ignore\n }\n // 3) dev/test:模块自身路径(源码直跑时有效)\n try {\n const url = import.meta.url;\n if (url) out.push(dirname(fileURLToPath(url)));\n } catch {\n // import.meta 不可用\n }\n return out;\n}\n\n/** 目录下是否存在「子目录/SKILL.md」结构 —— 据此判定它是 skills 根。 */\nfunction looksLikeSkillsDir(dir: string): boolean {\n if (!existsSync(dir)) return false;\n return readdirSync(dir, { withFileTypes: true }).some(\n (e) => e.isDirectory() && existsSync(join(dir, e.name, \"SKILL.md\")),\n );\n}\n\n/**\n * 定位随包发布的 skills 目录:从模块所在目录逐级向上找 `skills/`。\n * - 产物:`<pkg>/dist/bin.cjs` → 上一级 `<pkg>/skills`\n * - 源码(dev/test):`<pkg>/src/commands/skills.ts` → 上溯到 `<pkg>/skills`\n */\nexport function resolveBundledSkillsDir(): string {\n const checked: string[] = [];\n for (const anchor of candidateAnchorDirs()) {\n let cur = anchor;\n for (let i = 0; i < 6; i += 1) {\n const candidate = join(cur, \"skills\");\n checked.push(candidate);\n if (looksLikeSkillsDir(candidate)) return candidate;\n const parent = dirname(cur);\n if (parent === cur) break;\n cur = parent;\n }\n }\n throw new YoooclawError(\n \"YOOOCLAW_NOT_FOUND\",\n \"找不到随包发布的 skills 目录\",\n {\n hint: \"正常安装的 @yoooclaw/cli 应在包根带 skills/;若从源码运行请先 bun run build\",\n checkedPaths: checked,\n },\n );\n}\n\nexport interface BundledSkill {\n name: string;\n dir: string;\n /** frontmatter 的 name 字段(缺省回落目录名) */\n title: string;\n description: string;\n}\n\n/** 从 SKILL.md frontmatter 抽取 name / description(容忍多行被截断的情况,只取首行)。 */\nfunction parseSkillMeta(skillMd: string): { name?: string; description?: string } {\n const fm = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---/.exec(skillMd);\n const block = fm ? fm[1] : skillMd;\n const pick = (key: string): string | undefined => {\n const m = new RegExp(String.raw`^${key}:\\s*(.+)$`, \"m\").exec(block);\n return m ? m[1].trim() : undefined;\n };\n return { name: pick(\"name\"), description: pick(\"description\") };\n}\n\n/** 列出 skills 根下的所有内置 Skill(含 frontmatter 元数据)。 */\nexport function listBundledSkills(skillsDir: string): BundledSkill[] {\n return readdirSync(skillsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && existsSync(join(skillsDir, e.name, \"SKILL.md\")))\n .map((e) => {\n const dir = join(skillsDir, e.name);\n const meta = parseSkillMeta(readFileSync(join(dir, \"SKILL.md\"), \"utf-8\"));\n return {\n name: e.name,\n dir,\n title: meta.name ?? e.name,\n description: meta.description ?? \"\",\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function skillsList(_ctx: CliContext): unknown {\n const skillsDir = resolveBundledSkillsDir();\n const skills = listBundledSkills(skillsDir);\n return {\n ok: true,\n skillsDir,\n count: skills.length,\n skills: skills.map((s) => ({\n name: s.name,\n title: s.title,\n description: s.description,\n })),\n hint: \"用 `yoooclaw skills targets` 查看可安装目标,再用 `yoooclaw skills install --agent <agent>` 安装\",\n };\n}\n\ninterface InstallOpts {\n agent?: string;\n target?: string;\n copy?: boolean;\n force?: boolean;\n}\n\nexport function skillsTargets(_ctx: CliContext): unknown {\n const targets = listSkillTargetCandidates();\n return {\n ok: true,\n targets,\n hint:\n \"裸 `yoooclaw skills install` 只会在检测到唯一 Agent 时自动安装;否则请显式传 `--agent` 或 `--target`\",\n };\n}\n\ninterface InstallResult {\n name: string;\n status: \"installed\" | \"skipped\";\n /** symlink | copy;skipped 时为跳过原因 */\n via?: \"symlink\" | \"copy\";\n reason?: string;\n dest: string;\n}\n\n/** 现有目标是否已是指向同一来源的软链(幂等:重复安装不报错)。 */\nfunction isSameSymlink(dest: string, source: string): boolean {\n try {\n if (!lstatSync(dest).isSymbolicLink()) return false;\n return realpathSync(dest) === realpathSync(source);\n } catch {\n return false;\n }\n}\n\n/** 把单个 Skill 落到 dest:软链或复制;返回安装/跳过结果。 */\nfunction linkOrCopy(source: string, dest: string, mode: \"symlink\" | \"copy\"): void {\n if (mode === \"copy\") {\n cpSync(source, dest, { recursive: true });\n return;\n }\n try {\n symlinkSync(source, dest, \"dir\");\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n if (e.code === \"EPERM\" || e.code === \"EACCES\") {\n throw new YoooclawError(\n \"YOOOCLAW_STORAGE_UNAVAILABLE\",\n `创建软链失败(${e.code}):${dest}`,\n { hint: \"Windows 无管理员权限时无法创建软链,请改用 `yoooclaw skills install --copy`\" },\n );\n }\n throw err;\n }\n}\n\nfunction installOne(\n skill: BundledSkill,\n target: string,\n mode: \"symlink\" | \"copy\",\n force: boolean,\n): InstallResult {\n const source = realpathSync(skill.dir);\n const dest = join(target, skill.name);\n\n if (existsSync(dest) || isSymlinkPresent(dest)) {\n // 已是指向同一来源的软链 → 幂等视作已安装\n if (mode === \"symlink\" && isSameSymlink(dest, source)) {\n return { name: skill.name, status: \"installed\", via: \"symlink\", dest };\n }\n if (!force) {\n return { name: skill.name, status: \"skipped\", reason: \"目标已存在,加 --force 覆盖\", dest };\n }\n rmSync(dest, { recursive: true, force: true });\n }\n\n linkOrCopy(source, dest, mode);\n return { name: skill.name, status: \"installed\", via: mode, dest };\n}\n\nexport function skillsInstall(\n _ctx: CliContext,\n _args: unknown[],\n opts: InstallOpts,\n): unknown {\n const skillsDir = resolveBundledSkillsDir();\n const skills = listBundledSkills(skillsDir);\n const selection = resolveTargetSelection(opts);\n const target = selection.target;\n const mode: \"symlink\" | \"copy\" = opts.copy ? \"copy\" : \"symlink\";\n\n mkdirSync(target, { recursive: true });\n\n const results = skills.map((skill) => installOne(skill, target, mode, opts.force ?? false));\n const installed = results.filter((r) => r.status === \"installed\");\n return {\n ok: true,\n agent: selection.agent,\n agentLabel: selection.agentLabel,\n target,\n targetSource: selection.source,\n mode,\n sourceDir: skillsDir,\n installed: installed.map((r) => r.name),\n skipped: results.filter((r) => r.status === \"skipped\"),\n results,\n detectedTargets: selection.detectedTargets,\n hint:\n installed.length > 0\n ? \"重启 agent 会话后即可被发现;试试说\\\"看看最近的通知\\\"触发 yoooclaw-notification-query\"\n : \"没有新安装的 Skill(已存在则加 --force 覆盖)\",\n };\n}\n\n/** existsSync 对断链返回 false,这里补一个 lstat 探测,避免断链残留挡住安装。 */\nfunction isSymlinkPresent(p: string): boolean {\n try {\n lstatSync(p);\n return true;\n } catch {\n return false;\n }\n}\n",
|
|
96
|
-
"/**\n * daemon service —— start / stop / restart / status / logs / run-foreground(🔵)。\n */\nimport { spawn } from \"node:child_process\";\nimport { existsSync, readFileSync, statSync, watchFile } from \"node:fs\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { requireConfig } from \"../config/store.js\";\nimport { daemonState, isProcessAlive, readLock, removeLock } from \"../daemon/lock.js\";\nimport { DaemonClient } from \"../daemon/client.js\";\nimport { runDaemonForeground, type DaemonStartOpts } from \"../daemon/main.js\";\n\ninterface StartOpts {\n bind?: string;\n port?: string;\n detach?: boolean; // commander:--no-detach → false\n logLevel?: string;\n}\n\nfunction startOpts(opts: StartOpts): DaemonStartOpts {\n return {\n bind: opts.bind,\n port: opts.port ? Number(opts.port) : undefined,\n logLevel: opts.logLevel,\n };\n}\n\n/** 内部命令:前台运行 daemon 主循环(detach 子进程入口)。 */\nexport async function daemonRunForeground(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true }; // 实际不会到这(runDaemonForeground 不 resolve)\n}\n\nexport async function daemonStart(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n requireConfig(ctx.paths);\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n { pid: state.lock?.pid },\n );\n }\n if (state.stale) removeLock(ctx.paths);\n\n // --no-detach:前台运行(systemd/launchd 包装)\n if (opts.detach === false) {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true };\n }\n\n // 默认:fork 子进程跑 run-foreground 并 detach\n const binEntry = process.argv[1];\n const args = [binEntry, \"daemon\", \"run-foreground\", \"--profile\", ctx.profile];\n if (opts.bind) args.push(\"--bind\", opts.bind);\n if (opts.port) args.push(\"--port\", opts.port);\n if (opts.logLevel) args.push(\"--log-level\", opts.logLevel);\n\n const child = spawn(process.execPath, args, {\n detached: true,\n stdio: \"ignore\",\n windowsHide: true,\n env: process.env,\n });\n child.unref();\n\n // 轮询 lock 确认起来(最多 ~3s)\n for (let i = 0; i < 30; i += 1) {\n await sleep(100);\n const s = daemonState(ctx.paths);\n if (s.running) {\n return { ok: true, pid: s.lock?.pid, bind: s.lock?.bind, port: s.lock?.port, detached: true };\n }\n }\n throw new YoooclawError(\n \"YOOOCLAW_UNKNOWN\",\n \"daemon 启动超时(3s 内未写出 lock)\",\n { hint: \"查看 yoooclaw daemon logs 排查\" },\n );\n}\n\nexport async function daemonStop(ctx: CliContext): Promise<unknown> {\n const lock = readLock(ctx.paths);\n if (!lock || !isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n throw new YoooclawError(\"YOOOCLAW_DAEMON_NOT_RUNNING\", \"daemon 未运行\");\n }\n try {\n process.kill(lock.pid, \"SIGTERM\");\n
|
|
95
|
+
"/**\n * daemon service —— start / stop / restart / status / logs / run-foreground(🔵)。\n */\nimport { spawn } from \"node:child_process\";\nimport { existsSync, readFileSync, statSync, watchFile } from \"node:fs\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { requireConfig } from \"../config/store.js\";\nimport { daemonState, isProcessAlive, readLock, removeLock } from \"../daemon/lock.js\";\nimport { DaemonClient } from \"../daemon/client.js\";\nimport { runDaemonForeground, type DaemonStartOpts } from \"../daemon/main.js\";\n\ninterface StartOpts {\n bind?: string;\n port?: string;\n detach?: boolean; // commander:--no-detach → false\n logLevel?: string;\n}\n\nfunction startOpts(opts: StartOpts): DaemonStartOpts {\n return {\n bind: opts.bind,\n port: opts.port ? Number(opts.port) : undefined,\n logLevel: opts.logLevel,\n };\n}\n\n/** 内部命令:前台运行 daemon 主循环(detach 子进程入口)。 */\nexport async function daemonRunForeground(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true }; // 实际不会到这(runDaemonForeground 不 resolve)\n}\n\nexport async function daemonStart(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n requireConfig(ctx.paths);\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n { pid: state.lock?.pid },\n );\n }\n if (state.stale) removeLock(ctx.paths);\n\n // --no-detach:前台运行(systemd/launchd 包装)\n if (opts.detach === false) {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true };\n }\n\n // 默认:fork 子进程跑 run-foreground 并 detach\n const binEntry = process.argv[1];\n const args = [binEntry, \"daemon\", \"run-foreground\", \"--profile\", ctx.profile];\n if (opts.bind) args.push(\"--bind\", opts.bind);\n if (opts.port) args.push(\"--port\", opts.port);\n if (opts.logLevel) args.push(\"--log-level\", opts.logLevel);\n\n const child = spawn(process.execPath, args, {\n detached: true,\n stdio: \"ignore\",\n windowsHide: true,\n env: process.env,\n });\n child.unref();\n\n // 轮询 lock 确认起来(最多 ~3s)\n for (let i = 0; i < 30; i += 1) {\n await sleep(100);\n const s = daemonState(ctx.paths);\n if (s.running) {\n return { ok: true, pid: s.lock?.pid, bind: s.lock?.bind, port: s.lock?.port, detached: true };\n }\n }\n throw new YoooclawError(\n \"YOOOCLAW_UNKNOWN\",\n \"daemon 启动超时(3s 内未写出 lock)\",\n { hint: \"查看 yoooclaw daemon logs 排查\" },\n );\n}\n\nexport async function daemonStop(ctx: CliContext): Promise<unknown> {\n const lock = readLock(ctx.paths);\n if (!lock || !isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n throw new YoooclawError(\"YOOOCLAW_DAEMON_NOT_RUNNING\", \"daemon 未运行\");\n }\n\n // Windows 上 Node 没有真正的 POSIX 信号:process.kill(pid, \"SIGTERM\") 等价于\n // TerminateProcess,daemon 的 shutdown() 优雅退出钩子(隧道断开、移除 lock)不会跑。\n // 因此 Windows 优先打 HTTP /daemon/stop 让 daemon 自己走优雅退出,失败再回退到硬杀。\n const graceful = process.platform === \"win32\"\n ? \"stop-endpoint\"\n : \"SIGTERM\";\n if (graceful === \"stop-endpoint\") {\n try {\n await new DaemonClient(ctx.paths).post(\"/daemon/stop\");\n } catch {\n /* daemon 可能拒绝鉴权或刚退出;继续轮询 + 回退硬杀 */\n }\n } else {\n try {\n process.kill(lock.pid, \"SIGTERM\");\n } catch {\n /* 进程可能刚退出 */\n }\n }\n\n // 等待优雅退出,最多 10s\n for (let i = 0; i < 100; i += 1) {\n await sleep(100);\n if (!isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n return { ok: true, stopped: lock.pid, signal: graceful };\n }\n }\n try {\n process.kill(lock.pid, \"SIGKILL\");\n } catch {\n /* ignore */\n }\n removeLock(ctx.paths);\n return { ok: true, stopped: lock.pid, signal: \"SIGKILL\" };\n}\n\nexport async function daemonRestart(\n ctx: CliContext,\n args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n const lock = readLock(ctx.paths);\n const inheritedOpts: StartOpts = {\n ...opts,\n bind: opts.bind ?? lock?.bind,\n port: opts.port ?? (lock?.port ? String(lock.port) : undefined),\n logLevel: opts.logLevel ?? lock?.logLevel,\n };\n if (lock && isProcessAlive(lock.pid)) {\n await daemonStop(ctx);\n }\n return daemonStart(ctx, args, inheritedOpts);\n}\n\nexport async function daemonReload(ctx: CliContext): Promise<unknown> {\n const state = daemonState(ctx.paths);\n if (!state.running) {\n return { ok: true, running: false, reloaded: false };\n }\n const client = new DaemonClient(ctx.paths);\n const res = await client.post(\"/daemon/reload\");\n return res.body;\n}\n\nexport async function daemonStatus(ctx: CliContext): Promise<unknown> {\n const state = daemonState(ctx.paths);\n if (!state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_NOT_RUNNING\",\n \"daemon 未运行\",\n { stale: state.stale, hint: \"yoooclaw daemon start\" },\n );\n }\n const client = new DaemonClient(ctx.paths);\n const res = await client.get(\"/daemon/status\");\n return res.body;\n}\n\ninterface LogsOpts {\n follow?: boolean;\n lines?: string;\n level?: string;\n}\n\nfunction tailLines(file: string, n: number): string[] {\n if (!existsSync(file)) return [];\n const content = readFileSync(file, \"utf-8\").split(\"\\n\").filter(Boolean);\n return content.slice(-n);\n}\n\nexport async function daemonLogs(\n ctx: CliContext,\n _args: unknown[],\n opts: LogsOpts,\n): Promise<unknown> {\n const n = opts.lines ? Number(opts.lines) : 100;\n const file = ctx.paths.daemonLog;\n let lines = tailLines(file, n);\n if (opts.level) {\n const want = `[${opts.level.toUpperCase()}]`;\n lines = lines.filter((l) => l.includes(want));\n }\n\n if (!opts.follow) {\n return { ok: true, file, total: lines.length, lines };\n }\n\n // --follow:先打印 tail,再持续输出新增行(raw 到 stdout,不经 --format)\n for (const l of lines) process.stdout.write(l + \"\\n\");\n let size = existsSync(file) ? statSync(file).size : 0;\n await new Promise<void>(() => {\n watchFile(file, { interval: 500 }, () => {\n if (!existsSync(file)) return;\n const cur = statSync(file).size;\n if (cur > size) {\n const chunk = readFileSync(file, \"utf-8\").slice(-(cur - size));\n size = cur;\n process.stdout.write(chunk);\n } else if (cur < size) {\n size = cur; // 轮转\n }\n });\n });\n return { ok: true };\n}\n",
|
|
97
96
|
"/**\n * daemon 主循环(前台运行体)。`daemon start` 默认 fork 一个子进程跑 `daemon run-foreground`,\n * 该命令最终调用这里的 runDaemonForeground。\n *\n * 职责:单实例锁 → 装配 StandaloneRuntime + 存储 + 通知/图片/灯效规则注册 → 起 HTTP server →\n * 起 Relay 隧道 → 写 lock → 捕获信号优雅退出。\n *\n * 关于 Relay:复用 phone-notifications 插件那套托管 Relay 服务(RelayClient + TunnelProxy,见\n * daemon/relay.ts)。daemon 用 account 级 api-key 连上 Relay,手机端经 Relay 转发进来的请求被反代到\n * 本 daemon 的 HTTP server。未设 api-key 时跳过隧道,仍可走直连 HTTP(cloudflared / tailscale serve)。\n */\nimport { watchFile, unwatchFile } from \"node:fs\";\nimport { createServer, type IncomingMessage, type ServerResponse, type Server } from \"node:http\";\nimport type { CliContext } from \"../context.js\";\nimport { loadConfig } from \"../config/store.js\";\nimport { sharedCredentialsPath } from \"../paths.js\";\nimport { resolveGatewayToken } from \"../credentials/store.js\";\nimport { resolveApiKeyEntries, type CredentialSet } from \"../credentials/store.js\";\nimport { daemonState, writeLock, removeLock } from \"./lock.js\";\nimport { DaemonLogger } from \"./logger.js\";\nimport { StandaloneRuntime } from \"./runtime.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport { ingestImage, type ImageSyncPayload } from \"../image/channel.js\";\nimport { listMonitors, createMonitor, deleteMonitor, setMonitorEnabled } from \"../monitor/store.js\";\nimport { CLI_VERSION } from \"../version.js\";\nimport {\n NotificationStorage,\n registerNotificationInterfaces,\n RecordingStorage,\n registerRecordingInterfaces,\n LightRuleRegistry,\n registerLightRulesGateway,\n RELAY_INTERNAL_HTTP_HEADER,\n runWithIngestContext,\n type IngestContext,\n type PluginConfig,\n} from \"../shared.js\";\nimport { performLightSend } from \"./light-send.js\";\nimport { RecordingEventLog } from \"./recording-events.js\";\nimport { overrideRecordingSync } from \"./recording-bridge.js\";\nimport { registerDaemonGatewayCompatMethods } from \"./gateway-compat.js\";\nimport { RELAY_INTERNAL_CLIENT_LABEL_HEADER } from \"./relay-dispatcher.js\";\nimport { TunnelSupervisor } from \"./tunnel-supervisor.js\";\n\nexport const PROTOCOL_VERSION = 1;\nexport const CAPABILITIES = [\"notifications\", \"recordings\", \"images\", \"lightrules\", \"multi-apikey\"];\n\nexport interface DaemonStartOpts {\n bind?: string;\n port?: number;\n logLevel?: string;\n}\n\ninterface DaemonState {\n startedAt: string;\n lastIngestAt: string | null;\n ingestCount: number;\n}\n\nasync function readBody(req: IncomingMessage): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(chunk as Buffer);\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nfunction sendJson(res: ServerResponse, status: number, body: unknown): void {\n res.writeHead(status, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n}\n\nexport async function runDaemonForeground(\n ctx: CliContext,\n opts: DaemonStartOpts,\n): Promise<void> {\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n );\n }\n\n const config = loadConfig(ctx.paths);\n const bind = opts.bind ?? config.daemon.bind;\n // 起始端口;listen 时若被占用会自动 +1(见下方 listen 循环),port 最终为实际绑定端口。\n let port = opts.port ?? config.daemon.port;\n const logLevel = (opts.logLevel ?? config.daemon.logLevel) as never;\n const token = resolveGatewayToken(config).value;\n let credentialSet: CredentialSet = resolveApiKeyEntries();\n\n // 安全:绑公网必须有 token\n const loopback = bind === \"127.0.0.1\" || bind === \"::1\" || bind === \"localhost\";\n if (!loopback && !token) {\n throw new YoooclawError(\n \"YOOOCLAW_UNAUTHORIZED\",\n `绑定 ${bind} 需要先设置 gateway token`,\n { hint: \"运行 yoooclaw auth token-rotate 或改回 127.0.0.1\" },\n );\n }\n\n ensureDir(ctx.paths.dir);\n const logger = new DaemonLogger(ctx.paths.daemonLog, logLevel, false);\n const runtimeState: DaemonState = {\n startedAt: new Date().toISOString(),\n lastIngestAt: null,\n ingestCount: 0,\n };\n\n const pluginConfig: PluginConfig = {\n retentionDays: config.notification.retentionDays ?? undefined,\n ignoredApps: config.notification.ignoredApps,\n };\n\n const runtime = new StandaloneRuntime(logger, pluginConfig as Record<string, unknown>, ctx.paths.dir);\n\n // 通知存储\n const storage = new NotificationStorage(ctx.paths.notifications, pluginConfig, logger);\n await storage.init();\n\n // 录音存储(接收手机端 recordings.sync / POST /recordings)\n const recordingStorage = new RecordingStorage(ctx.paths.recordings, logger);\n await recordingStorage.init();\n\n // 录音状态事件流:日志 + JSONL(CLI / Agent 通过 `yc recording events` 消费)+ 反向推手机\n const recordingEventLog = new RecordingEventLog(ctx.paths.recordings);\n // pushRecordingStatus 在 relayHandle 启动后才有值;用 mutable 闭包变量延后绑定\n let pushRecordingStatus: ((event: import(\"../shared.js\").RecordingStatusEvent) => void) | undefined;\n const notifyRecordingStatus = (event: import(\"../shared.js\").RecordingStatusEvent) => {\n logger.info(\n `[recording-status] ${event.recordingId} → ${event.transfer_status}${\n event.error ? ` err=${event.error}` : \"\"\n }`,\n );\n try {\n recordingEventLog.append(event);\n } catch (err) {\n logger.warn(`[recording-status] 事件落盘失败: ${(err as Error).message}`);\n }\n // 反向推送到手机端(客户端合同:recording.status event;recordings.status RPC 是兜底)\n try {\n pushRecordingStatus?.(event);\n } catch (err) {\n logger.warn(`[recording-status] event push 失败: ${(err as Error).message}`);\n }\n };\n\n // 灯效规则注册(rules 落 <profile>/tasks/)\n const lightRuleRegistry = new LightRuleRegistry({ workspaceDir: ctx.paths.dir });\n\n const ignored = new Set(config.notification.ignoredApps ?? []);\n registerNotificationInterfaces({\n // 结构兼容 OpenClawPluginApi 的子集\n api: runtime as never,\n logger,\n getStorage: () => storage,\n filterNotifications: (items) => items.filter((n) => !ignored.has(n.app)),\n registerGatewayMethod: (m, h) => runtime.registerGatewayMethod(m, h as never),\n onAfterIngest: (inserted) => {\n runtimeState.lastIngestAt = new Date().toISOString();\n runtimeState.ingestCount += inserted.length;\n },\n });\n registerRecordingInterfaces({\n api: runtime as never,\n logger,\n asrDataDir: ctx.paths.recordings,\n getRecordingStorage: () => recordingStorage,\n notifyRecordingStatus,\n registerGatewayMethod: (m, h) => runtime.registerGatewayMethod(m, h as never),\n shouldBroadcastStatusOnHttp: () => true,\n tunnelService: null,\n });\n // 覆盖 sync:注入本地 asr-config.json + account 级 ock- key fallback\n overrideRecordingSync({\n runtime,\n storage: recordingStorage,\n logger,\n fallbackApiKey: () => credentialSet.defaultEntry?.key,\n asrConfigDir: ctx.paths.recordings,\n notifyStatus: notifyRecordingStatus,\n });\n registerLightRulesGateway(runtime as never, lightRuleRegistry, logger);\n\n const server = createServer((req, res) => {\n void handleRequest(req, res).catch((err) => {\n logger.error(`请求处理异常:${(err as Error).message}`);\n if (!res.headersSent) sendJson(res, 500, { ok: false, error: { code: \"INTERNAL_ERROR\", message: (err as Error).message } });\n });\n });\n\n function headerValue(req: IncomingMessage, name: string): string | undefined {\n const value = req.headers[name.toLowerCase()];\n return Array.isArray(value) ? value[0] : value;\n }\n\n function bearerValue(req: IncomingMessage): string | undefined {\n const header = headerValue(req, \"authorization\")?.trim();\n if (!header?.toLowerCase().startsWith(\"bearer \")) return undefined;\n return header.slice(\"Bearer \".length).trim();\n }\n\n function stripBearer(value: string): string {\n return value.startsWith(\"Bearer \") ? value.slice(\"Bearer \".length) : value;\n }\n\n function labelForApiKey(apiKey: string | undefined): string | undefined {\n if (!apiKey) return undefined;\n const raw = stripBearer(apiKey);\n return credentialSet.entries.find((entry) => stripBearer(entry.key) === raw)?.label;\n }\n\n function isIngestPath(path: string): boolean {\n return path === \"/notifications\"\n || path === \"/recordings\"\n || path === \"/images\"\n || path === \"/gateway/notifications.push\"\n || path === \"/gateway/recordings.sync\"\n || path === \"/gateway/images.sync\";\n }\n\n function authContextForRequest(req: IncomingMessage, path: string): { ok: true; context: IngestContext } | { ok: false } {\n const internalRelay = headerValue(req, RELAY_INTERNAL_HTTP_HEADER) === \"1\";\n const internalLabel = headerValue(req, RELAY_INTERNAL_CLIENT_LABEL_HEADER)?.trim();\n const bearer = bearerValue(req);\n const gatewayTokenOk = token ? bearer === token : true;\n\n if (internalRelay && internalLabel && gatewayTokenOk) {\n return { ok: true, context: { clientLabel: internalLabel, authKind: \"relay-api-key\" } };\n }\n\n if (token && bearer === token) {\n return { ok: true, context: { clientLabel: \"local\", authKind: \"gateway-token\" } };\n }\n\n if (isIngestPath(path)) {\n const label = labelForApiKey(bearer);\n if (label) {\n return { ok: true, context: { clientLabel: label, authKind: \"http-api-key\" } };\n }\n }\n\n if (!token) {\n return { ok: true, context: { clientLabel: \"local\", authKind: \"local\" } };\n }\n\n return { ok: false };\n }\n\n /** 汇总当前 Relay 状态(隧道未启用/未连时给出可执行提示)。 */\n function relayStatus(): {\n mode: \"relay\" | \"standalone-http\";\n connected: boolean;\n url: string;\n enabled: boolean;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n note?: string;\n } {\n if (tunnelSupervisor) {\n const s = tunnelSupervisor.defaultStatus();\n if (s) {\n return {\n mode: \"relay\",\n connected: s.connected,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: s.reconnectAttempt,\n lastDisconnectReason: s.lastDisconnectReason,\n note: s.connected ? undefined : \"Relay 重连中\",\n };\n }\n return {\n mode: \"relay\",\n connected: false,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: 0,\n note: \"Relay 已启用但当前 CredentialSet 没有可用 api-key\",\n };\n }\n return {\n mode: \"standalone-http\",\n connected: false,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: 0,\n note: config.relay.enabled\n ? \"Relay 已启用但未设置 api-key:运行 yc auth set-api-key <ock_…> 后重启 daemon;当前可走直连 HTTP(cloudflared / tailscale serve)\"\n : \"Relay 未启用,走直连 HTTP\",\n };\n }\n\n registerDaemonGatewayCompatMethods(runtime, {\n version: CLI_VERSION,\n protocol: PROTOCOL_VERSION,\n capabilities: CAPABILITIES,\n profile: ctx.profile,\n bind,\n getPort: () => port,\n startedAt: runtimeState.startedAt,\n getLastIngestAt: () => runtimeState.lastIngestAt,\n getIngestCount: () => runtimeState.ingestCount,\n getLightRuleCount: () => lightRuleRegistry.list().length,\n getRelayStatus: relayStatus,\n });\n\n async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const url = new URL(req.url ?? \"/\", \"http://localhost\");\n const path = url.pathname;\n const method = req.method ?? \"GET\";\n\n // /health 公开(手机端协议协商)\n if (path === \"/health\" && method === \"GET\") {\n sendJson(res, 200, {\n server: \"yoooclaw\",\n version: CLI_VERSION,\n protocol: PROTOCOL_VERSION,\n capabilities: CAPABILITIES,\n });\n return;\n }\n\n const auth = authContextForRequest(req, path);\n if (!auth.ok) {\n sendJson(res, 401, { ok: false, error: { code: \"YOOOCLAW_UNAUTHORIZED\", message: \"token 不一致或缺失\" } });\n return;\n }\n const ingestContext = auth.context;\n\n // ── 控制面 ──\n if (path === \"/daemon/status\" && method === \"GET\") {\n const supervisorStatus = tunnelSupervisor?.status();\n sendJson(res, 200, {\n ok: true,\n server: \"yoooclaw\",\n version: CLI_VERSION,\n pid: process.pid,\n profile: ctx.profile,\n bind,\n port,\n startedAt: runtimeState.startedAt,\n lastIngestAt: runtimeState.lastIngestAt,\n ingestCount: runtimeState.ingestCount,\n lightRules: lightRuleRegistry.list().length,\n relay: relayStatus(),\n tunnels: supervisorStatus?.tunnels ?? [],\n credentialMode: credentialSet.mode,\n defaultLabel: credentialSet.defaultEntry?.label ?? null,\n credentialWarnings: credentialSet.warnings,\n memoryRssBytes: process.memoryUsage().rss,\n });\n return;\n }\n if (path === \"/daemon/reload\" && method === \"POST\") {\n const result = await reloadCredentialsAndTunnels(\"manual\");\n sendJson(res, 200, { ok: true, running: true, reloaded: true, ...result });\n return;\n }\n if (path === \"/daemon/stop\" && method === \"POST\") {\n sendJson(res, 200, { ok: true, stopping: true });\n logger.info(\"收到 /daemon/stop,准备优雅退出\");\n setTimeout(() => void shutdown(\"stop-endpoint\"), 50);\n return;\n }\n if (path === \"/tunnel/status\" && method === \"GET\") {\n const s = relayStatus();\n const supervisorStatus = tunnelSupervisor?.status();\n const clientLabel = url.searchParams.get(\"client\")?.trim();\n const tunnels = clientLabel && clientLabel !== \"all\"\n ? (supervisorStatus?.tunnels ?? []).filter((tunnel) => tunnel.label === clientLabel)\n : supervisorStatus?.tunnels ?? [];\n sendJson(res, 200, {\n ok: true,\n mode: s.mode,\n credentialMode: credentialSet.mode,\n defaultLabel: supervisorStatus?.defaultLabel ?? credentialSet.defaultEntry?.label ?? null,\n connected: s.connected,\n relayUrl: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: s.reconnectAttempt,\n lastDisconnectReason: s.lastDisconnectReason,\n note: s.note,\n tunnels,\n });\n return;\n }\n if (path === \"/tunnel/reconnect\" && method === \"POST\") {\n if (!tunnelSupervisor) {\n sendJson(res, 200, { ok: true, mode: relayStatus().mode, reconnected: false, note: relayStatus().note });\n return;\n }\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const clientLabel = typeof (body as { client?: unknown }).client === \"string\"\n ? (body as { client: string }).client\n : undefined;\n const result = await tunnelSupervisor.reconnect(clientLabel);\n if (result.missing) {\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\", message: `隧道不存在:${result.missing}` } });\n return;\n }\n sendJson(res, 200, { ok: true, mode: \"relay\", reconnected: true, labels: result.reconnected });\n return;\n }\n if (path === \"/tunnel/test\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const clientLabel = typeof (body as { client?: unknown }).client === \"string\"\n ? (body as { client: string }).client.trim()\n : undefined;\n const entry = clientLabel && clientLabel !== \"all\"\n ? credentialSet.entries.find((candidate) => candidate.label === clientLabel)\n : undefined;\n if (clientLabel && clientLabel !== \"all\" && !entry) {\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\", message: `隧道不存在:${clientLabel}` } });\n return;\n }\n // 回环自检:daemon 自己 POST 一条 echo 通知到本地 /notifications\n const echo = await selfEchoCheck(`http://127.0.0.1:${port}`, {\n token: entry ? undefined : token,\n apiKey: entry?.key,\n clientLabel: entry?.label ?? \"local\",\n });\n sendJson(res, 200, { ok: echo.ok, mode: relayStatus().mode, clientLabel: entry?.label ?? \"local\", loopback: echo });\n return;\n }\n if (path === \"/light/send\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const outcome = await performLightSend(body as Parameters<typeof performLightSend>[0], {\n logger,\n registry: lightRuleRegistry,\n });\n sendJson(res, outcome.status, outcome.body);\n return;\n }\n if (path === \"/images\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n try {\n const result = runWithIngestContext(ingestContext, () =>\n ingestImage(ctx.paths, body as ImageSyncPayload, {\n maxBytes: config.image.maxBytes,\n logger,\n }));\n sendJson(res, 200, result);\n } catch (err) {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: (err as Error).message } });\n }\n return;\n }\n // monitors CRUD(定义存储;本 build 不做 live cron 触发)\n if (path === \"/monitors\" && method === \"GET\") {\n sendJson(res, 200, { ok: true, monitors: listMonitors(ctx.paths) });\n return;\n }\n if (path === \"/monitors\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n try {\n sendJson(res, 200, { ok: true, monitor: createMonitor(ctx.paths, body as never) });\n } catch (err) {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: (err as Error).message } });\n }\n return;\n }\n if (path.startsWith(\"/monitors/\") && method === \"DELETE\") {\n const name = decodeURIComponent(path.slice(\"/monitors/\".length));\n sendJson(res, 200, { ok: true, deleted: deleteMonitor(ctx.paths, name) });\n return;\n }\n if (path.startsWith(\"/monitors/\") && method === \"POST\") {\n const [, , name, action] = path.split(\"/\");\n const enabled = action === \"enable\";\n sendJson(res, 200, { ok: setMonitorEnabled(ctx.paths, decodeURIComponent(name), enabled), name, enabled });\n return;\n }\n\n // gateway 桥:POST /gateway/<method>\n if (path.startsWith(\"/gateway/\") && method === \"POST\") {\n const gwMethod = path.slice(\"/gateway/\".length);\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const result = await runtime.callGateway(gwMethod, body, ingestContext);\n sendJson(res, result.ok ? 200 : 400, result);\n return;\n }\n\n // 注册的 HTTP 路由(如 POST /notifications)\n const route = runtime.httpRoutes.get(path);\n if (route) {\n await runWithIngestContext(ingestContext, () => route.handler(req, res));\n return;\n }\n\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_NOT_FOUND\", message: `未知路径:${path}` } });\n }\n\n async function parseJson(req: IncomingMessage, res: ServerResponse): Promise<unknown | undefined> {\n try {\n const raw = await readBody(req);\n return raw ? JSON.parse(raw) : {};\n } catch {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: \"请求体不是合法 JSON\" } });\n return undefined;\n }\n }\n\n let serverRef: Server | null = null;\n let tunnelSupervisor: TunnelSupervisor | null = null;\n let credentialWatchTimer: NodeJS.Timeout | null = null;\n let shuttingDown = false;\n\n async function reloadCredentialsAndTunnels(reason: string): Promise<{\n mode: CredentialSet[\"mode\"];\n defaultLabel: string | null;\n started: string[];\n stopped: string[];\n restarted: string[];\n unchanged: string[];\n warnings: string[];\n }> {\n credentialSet = resolveApiKeyEntries();\n const result = tunnelSupervisor\n ? await tunnelSupervisor.apply(credentialSet)\n : { started: [], stopped: [], restarted: [], unchanged: [] };\n logger.info(\n `CredentialSet reload(${reason}): mode=${credentialSet.mode}, default=${credentialSet.defaultEntry?.label ?? \"-\"}, ` +\n `started=${result.started.join(\",\") || \"-\"} stopped=${result.stopped.join(\",\") || \"-\"} restarted=${result.restarted.join(\",\") || \"-\"}`,\n );\n return {\n mode: credentialSet.mode,\n defaultLabel: credentialSet.defaultEntry?.label ?? null,\n warnings: credentialSet.warnings,\n ...result,\n };\n }\n\n function startCredentialWatcher(): void {\n const file = sharedCredentialsPath();\n watchFile(file, { interval: 500 }, () => {\n if (credentialWatchTimer) clearTimeout(credentialWatchTimer);\n credentialWatchTimer = setTimeout(() => {\n void reloadCredentialsAndTunnels(\"watch\").catch((err) => {\n logger.warn(`CredentialSet watch reload failed: ${(err as Error).message}`);\n });\n }, 200);\n });\n }\n\n async function shutdown(reason: string): Promise<void> {\n if (shuttingDown) return;\n shuttingDown = true;\n logger.info(`daemon 退出(${reason})`);\n unwatchFile(sharedCredentialsPath());\n if (credentialWatchTimer) clearTimeout(credentialWatchTimer);\n try {\n await tunnelSupervisor?.stopAll(reason);\n } catch {\n /* ignore */\n }\n try {\n await storage.close();\n } catch {\n /* ignore */\n }\n try {\n await recordingStorage.close();\n } catch {\n /* ignore */\n }\n serverRef?.close();\n removeLock(ctx.paths);\n process.exit(0);\n }\n\n // listen;遇 EADDRINUSE(端口被其它进程占用)则端口 +1 重试,port 最终为实际绑定端口。\n const listenOnce = (p: number): Promise<void> =>\n new Promise<void>((resolve, reject) => {\n const onError = (err: NodeJS.ErrnoException) => {\n server.removeListener(\"listening\", onListening);\n reject(err);\n };\n const onListening = () => {\n server.removeListener(\"error\", onError);\n resolve();\n };\n server.once(\"error\", onError);\n server.once(\"listening\", onListening);\n server.listen(p, bind);\n });\n\n const startPort = port;\n for (let attempt = 0; ; attempt += 1) {\n try {\n await listenOnce(port);\n break;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"EADDRINUSE\" && attempt < 64) {\n const next = port + 1;\n logger.warn(`端口 ${port} 被占用,改试 ${next}`);\n port = next;\n continue;\n }\n throw err;\n }\n }\n if (port !== startPort) {\n logger.info(`起始端口 ${startPort} 被占用,最终绑定到 ${port}`);\n }\n serverRef = server;\n writeLock(ctx.paths, {\n pid: process.pid,\n startedAt: runtimeState.startedAt,\n bind,\n port,\n logLevel: String(logLevel),\n });\n logger.info(`yoooclaw daemon 启动:${bind}:${port}(profile=${ctx.profile}, pid=${process.pid})`);\n\n // Relay 隧道:复用插件连接逻辑,反代到本 daemon 自己的 HTTP server。\n if (config.relay.enabled) {\n tunnelSupervisor = new TunnelSupervisor({\n tunnelUrl: config.relay.url,\n runtime,\n httpBaseUrl: `http://127.0.0.1:${port}`,\n httpToken: token,\n heartbeatSec: config.relay.heartbeatSec,\n reconnectBackoffMs: config.relay.reconnectBackoffMs,\n stateDir: ctx.paths.dir,\n logger,\n });\n const result = await tunnelSupervisor.apply(credentialSet);\n pushRecordingStatus = (event) => tunnelSupervisor?.pushEvent(\"recording.status\", event);\n startCredentialWatcher();\n if (credentialSet.entries.length > 0) {\n logger.info(\n `Relay 多隧道已启动:${result.started.join(\",\") || \"-\"}(mode=${credentialSet.mode}, default=${credentialSet.defaultEntry?.label ?? \"-\"})`,\n );\n } else {\n logger.warn(\"Relay 已启用但未设置 api-key,跳过隧道连接。运行 yc auth set-api-key <ock_…> 或 yc auth add-api-key <ock_…> --label <label>\");\n }\n } else {\n logger.info(\"Relay 未启用(config.relay.enabled=false),仅走直连 HTTP\");\n }\n\n process.on(\"SIGTERM\", () => void shutdown(\"SIGTERM\"));\n process.on(\"SIGINT\", () => void shutdown(\"SIGINT\"));\n\n // 前台保持运行(http server 维持 event loop);返回的 promise 永不 resolve\n await new Promise<void>(() => {});\n}\n\nasync function selfEchoCheck(\n baseUrl: string,\n opts: { token?: string; apiKey?: string; clientLabel?: string } = {},\n): Promise<{ ok: boolean; status?: number; clientLabel?: string; error?: string }> {\n try {\n const authValue = opts.apiKey\n ? opts.apiKey.replace(/^Bearer\\s+/i, \"\")\n : opts.token;\n const res = await fetch(`${baseUrl}/notifications`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(authValue ? { Authorization: `Bearer ${authValue}` } : {}),\n },\n body: JSON.stringify({\n notifications: [\n {\n id: `echo_${opts.clientLabel ?? \"local\"}_${Date.now()}`,\n app: \"yoooclaw.selftest\",\n title: \"tunnel +test\",\n body: \"echo\",\n timestamp: new Date().toISOString(),\n },\n ],\n }),\n });\n return { ok: res.ok, status: res.status, clientLabel: opts.clientLabel };\n } catch (err) {\n return { ok: false, clientLabel: opts.clientLabel, error: (err as Error).message };\n }\n}\n",
|
|
98
97
|
"/**\n * daemon 文件 logger —— 写 `daemon.log`,按日期轮转为 `daemon.log.YYYY-MM-DD`。\n * 行格式:`<ISO本地时间> [LEVEL] message`(与 src/log/reader.ts 解析一致)。\n */\nimport { appendFileSync, existsSync, renameSync, statSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport type { LogLevel } from \"../config/schema.js\";\n\nconst LEVEL_ORDER: Record<string, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n trace: 4,\n};\n\nfunction isoLocal(d: Date): string {\n const pad = (n: number, w = 2) => String(n).padStart(w, \"0\");\n const off = -d.getTimezoneOffset();\n const sign = off >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(off);\n return (\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` +\n `T${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}` +\n `${sign}${pad(Math.floor(abs / 60))}:${pad(abs % 60)}`\n );\n}\n\nfunction dateKey(d: Date): string {\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\nexport class DaemonLogger {\n private currentDay: string;\n\n constructor(\n private readonly logFile: string,\n private readonly level: LogLevel = \"info\",\n private readonly alsoStderr = false,\n ) {\n ensureDir(dirname(logFile));\n this.currentDay = dateKey(new Date());\n this.rotateIfNeeded(new Date());\n }\n\n private enabled(level: string): boolean {\n return (LEVEL_ORDER[level] ?? 2) <= (LEVEL_ORDER[this.level] ?? 2);\n }\n\n private rotateIfNeeded(now: Date): void {\n if (!existsSync(this.logFile)) return;\n let fileDay: string | undefined;\n try {\n fileDay = dateKey(statSync(this.logFile).mtime);\n } catch {\n return;\n }\n const today = dateKey(now);\n if (fileDay !== today) {\n try {\n renameSync(this.logFile, `${this.logFile}.${fileDay}`);\n } catch {\n // 轮转失败不影响写入\n }\n }\n }\n\n private write(level: string, msg: string): void {\n if (!this.enabled(level)) return;\n const now = new Date();\n if (dateKey(now) !== this.currentDay) {\n this.rotateIfNeeded(now);\n this.currentDay = dateKey(now);\n }\n const line = `${isoLocal(now)} [${level.toUpperCase()}] ${msg}\\n`;\n try {\n appendFileSync(this.logFile, line);\n } catch {\n // 忽略写文件失败\n }\n if (this.alsoStderr) process.stderr.write(line);\n }\n\n debug(msg: string): void { this.write(\"debug\", msg); }\n info(msg: string): void { this.write(\"info\", msg); }\n warn(msg: string): void { this.write(\"warn\", msg); }\n error(msg: string): void { this.write(\"error\", msg); }\n}\n",
|
|
99
98
|
"/**\n * StandaloneRuntime —— 对外暴露**结构兼容** OpenClawPluginApi 的子集,\n * 让 phone-notifications 的注册模块(registerNotificationInterfaces /\n * registerLightRulesGateway 等)**不改代码**就能在 daemon 里跑。\n *\n * 实现侧:把注册进来的 HTTP 路由与 gateway 方法收集到 Map,由 daemon HTTP server 派发。\n * 不属于 CLI 形态的能力(registerTool / registerCli / on('before_prompt_build'))做 no-op。\n */\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { runWithIngestContext, type IngestContext } from \"../shared.js\";\n\nexport type HttpAuth = \"gateway\" | \"public\" | string;\nexport interface HttpRouteSpec {\n path: string;\n auth?: HttpAuth;\n handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;\n}\n\nexport type GatewayRespond = (\n ok: boolean,\n data?: unknown,\n error?: { code: string; message: string },\n) => void;\n\nexport interface GatewayOpts {\n params?: unknown;\n respond: GatewayRespond;\n context?: {\n broadcast?: (event: string, payload: unknown) => void;\n } & IngestContext;\n client?: unknown;\n}\nexport type GatewayHandler = (opts: GatewayOpts) => void | Promise<void>;\n\nexport interface GatewayResult {\n ok: boolean;\n data?: unknown;\n error?: { code: string; message: string };\n}\n\ninterface RuntimeLogger {\n debug: (m: string) => void;\n info: (m: string) => void;\n warn: (m: string) => void;\n error: (m: string) => void;\n}\n\nexport class StandaloneRuntime {\n readonly httpRoutes = new Map<string, HttpRouteSpec>();\n readonly gatewayMethods = new Map<string, GatewayHandler>();\n readonly services: string[] = [];\n\n constructor(\n readonly logger: RuntimeLogger,\n readonly pluginConfig: Record<string, unknown>,\n private readonly stateDir: string,\n ) {}\n\n /** runtime.state.resolveStateDir —— 兼容插件读 stateDir 的用法。 */\n readonly runtime = {\n state: {\n resolveStateDir: (): string => this.stateDir,\n },\n };\n\n registerHttpRoute(spec: HttpRouteSpec): void {\n this.httpRoutes.set(spec.path, spec);\n }\n\n registerGatewayMethod(method: string, handler: GatewayHandler): void {\n this.gatewayMethods.set(method, handler);\n }\n\n // ── CLI 形态下的 no-op(PRD「兼容性 shim」)──\n registerService(name: string): void {\n this.services.push(typeof name === \"string\" ? name : \"service\");\n }\n registerCli(): void {\n /* CLI 模式不复用插件 CLI 注册 */\n }\n registerTool(): void {\n /* CLI 不开 MCP,Agent 走 Skill + 直接调命令 */\n }\n on(): void {\n /* before_prompt_build 等宿主事件在 CLI 模式不参与 */\n }\n\n /** 调用一个 gateway 方法,把 respond 收敛成 Promise<GatewayResult>。 */\n callGateway(\n method: string,\n params: unknown,\n context?: IngestContext,\n ): Promise<GatewayResult> {\n const handler = this.gatewayMethods.get(method);\n if (!handler) {\n return Promise.resolve({\n ok: false,\n error: { code: \"METHOD_NOT_FOUND\", message: `未注册的 gateway 方法:${method}` },\n });\n }\n return new Promise<GatewayResult>((resolve) => {\n let settled = false;\n const respond: GatewayRespond = (ok, data, error) => {\n if (settled) return;\n settled = true;\n resolve({ ok, data, error });\n };\n Promise.resolve(runWithIngestContext(context, () => handler({ params, respond, context }))).catch((err) => {\n if (!settled) {\n settled = true;\n resolve({\n ok: false,\n error: { code: \"INTERNAL_ERROR\", message: (err as Error).message },\n });\n }\n });\n });\n }\n}\n",
|
|
@@ -111,7 +110,7 @@
|
|
|
111
110
|
"/**\n * `@yoooclaw/cli` 程序化入口。\n *\n * - `run(argv)` 解析并执行命令(bin.ts 调用)。\n * - 同时再导出核心模块,供测试与未来的程序化集成使用。\n */\nimport { buildProgram } from \"./program.js\";\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n const program = buildProgram();\n await program.parseAsync(argv);\n}\n\nexport { buildProgram } from \"./program.js\";\nexport { COMMAND_TREE } from \"./command-tree.js\";\nexport { CLI_VERSION } from \"./version.js\";\nexport { ErrorCode, YoooclawError } from \"./errors.js\";\nexport {\n renderResult,\n renderError,\n resolveFormat,\n type OutputFormat,\n} from \"./output/format.js\";\nexport {\n buildContext,\n resolveActiveProfile,\n type CliContext,\n type GlobalFlags,\n} from \"./context.js\";\nexport * as paths from \"./paths.js\";\n",
|
|
112
111
|
"/**\n * yoooclaw CLI 可执行入口。\n * package.json#bin(yoooclaw / yc)指向构建产物 dist/bin.cjs。\n */\nimport { run } from \"./index.js\";\n\nvoid run(process.argv);\n"
|
|
113
112
|
],
|
|
114
|
-
"mappings": "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,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IA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",
|
|
115
|
-
"debugId": "
|
|
113
|
+
"mappings": "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,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IA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",
|
|
114
|
+
"debugId": "1D045A0DEF78275F64756E2164756E21",
|
|
116
115
|
"names": []
|
|
117
116
|
}
|