@elizaos/plugin-signal 2.0.0-beta.1 → 2.0.3-beta.3

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/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js", "../../../node_modules/.bun/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/chunkstream.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/interlace.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/paeth-predictor.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-async.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/constants.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/crc.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/parser.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/bitmapper.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/format-normaliser.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/parser-async.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/bitpacker.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-pack.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/packer.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/packer-async.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/sync-inflate.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/sync-reader.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/parser-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/packer-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/png-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/png.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/png.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utf8.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal-small.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/browser.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/server.js", "../src/index.ts", "../src/accounts.ts", "../src/connector-account-provider.ts", "../src/service.ts", "../src/rpc.ts", "../src/pairing-service.ts", "../src/types.ts", "../src/setup-routes.ts", "../src/workflow-credential-provider.ts"],
3
+ "sources": ["../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js", "../../../node_modules/.bun/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/chunkstream.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/interlace.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/paeth-predictor.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-async.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/constants.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/crc.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/parser.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/bitmapper.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/format-normaliser.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/parser-async.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/bitpacker.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-pack.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/packer.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/packer-async.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/sync-inflate.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/sync-reader.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/parser-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/packer-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/png-sync.js", "../../../node_modules/.bun/pngjs@5.0.0/node_modules/pngjs/lib/png.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/png.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utf8.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal-small.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/browser.js", "../../../node_modules/.bun/qrcode@1.5.4/node_modules/qrcode/lib/server.js", "../src/index.ts", "../src/accounts.ts", "../src/connector-account-provider.ts", "../src/service.ts", "../src/rpc.ts", "../src/pairing-service.ts", "../src/types.ts", "../src/setup-routes.ts", "../src/workflow-credential-provider.ts", "../src/local-client.ts"],
4
4
  "sourcesContent": [
5
5
  "// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n",
6
6
  "let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n",
@@ -59,17 +59,18 @@
59
59
  "const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n",
60
60
  "\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n",
61
61
  "const canPromise = require('./can-promise')\nconst QRCode = require('./core/qrcode')\nconst PngRenderer = require('./renderer/png')\nconst Utf8Renderer = require('./renderer/utf8')\nconst TerminalRenderer = require('./renderer/terminal')\nconst SvgRenderer = require('./renderer/svg')\n\nfunction checkParams (text, opts, cb) {\n if (typeof text === 'undefined') {\n throw new Error('String required as first argument')\n }\n\n if (typeof cb === 'undefined') {\n cb = opts\n opts = {}\n }\n\n if (typeof cb !== 'function') {\n if (!canPromise()) {\n throw new Error('Callback required as last argument')\n } else {\n opts = cb || {}\n cb = null\n }\n }\n\n return {\n opts: opts,\n cb: cb\n }\n}\n\nfunction getTypeFromFilename (path) {\n return path.slice((path.lastIndexOf('.') - 1 >>> 0) + 2).toLowerCase()\n}\n\nfunction getRendererFromType (type) {\n switch (type) {\n case 'svg':\n return SvgRenderer\n\n case 'txt':\n case 'utf8':\n return Utf8Renderer\n\n case 'png':\n case 'image/png':\n default:\n return PngRenderer\n }\n}\n\nfunction getStringRendererFromType (type) {\n switch (type) {\n case 'svg':\n return SvgRenderer\n\n case 'terminal':\n return TerminalRenderer\n\n case 'utf8':\n default:\n return Utf8Renderer\n }\n}\n\nfunction render (renderFunc, text, params) {\n if (!params.cb) {\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, params.opts)\n return renderFunc(data, params.opts, function (err, data) {\n return err ? reject(err) : resolve(data)\n })\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, params.opts)\n return renderFunc(data, params.opts, params.cb)\n } catch (e) {\n params.cb(e)\n }\n}\n\nexports.create = QRCode.create\n\nexports.toCanvas = require('./browser').toCanvas\n\nexports.toString = function toString (text, opts, cb) {\n const params = checkParams(text, opts, cb)\n const type = params.opts ? params.opts.type : undefined\n const renderer = getStringRendererFromType(type)\n return render(renderer.render, text, params)\n}\n\nexports.toDataURL = function toDataURL (text, opts, cb) {\n const params = checkParams(text, opts, cb)\n const renderer = getRendererFromType(params.opts.type)\n return render(renderer.renderToDataURL, text, params)\n}\n\nexports.toBuffer = function toBuffer (text, opts, cb) {\n const params = checkParams(text, opts, cb)\n const renderer = getRendererFromType(params.opts.type)\n return render(renderer.renderToBuffer, text, params)\n}\n\nexports.toFile = function toFile (path, text, opts, cb) {\n if (typeof path !== 'string' || !(typeof text === 'string' || typeof text === 'object')) {\n throw new Error('Invalid argument')\n }\n\n if ((arguments.length < 3) && !canPromise()) {\n throw new Error('Too few arguments provided')\n }\n\n const params = checkParams(text, opts, cb)\n const type = params.opts.type || getTypeFromFilename(path)\n const renderer = getRendererFromType(type)\n const renderToFile = renderer.renderToFile.bind(null, path)\n\n return render(renderToFile, text, params)\n}\n\nexports.toFileStream = function toFileStream (stream, text, opts) {\n if (arguments.length < 2) {\n throw new Error('Too few arguments provided')\n }\n\n const params = checkParams(text, opts, stream.emit.bind(stream, 'error'))\n const renderer = getRendererFromType('png') // Only png support for now\n const renderToFileStream = renderer.renderToFileStream.bind(null, stream)\n render(renderToFileStream, text, params)\n}\n",
62
- "import { getConnectorAccountManager, type IAgentRuntime, logger, type Plugin } from \"@elizaos/core\";\nimport { createSignalConnectorAccountProvider } from \"./connector-account-provider\";\n\n// Service\nimport { DEFAULT_SIGNAL_CLI_PATH, SignalService } from \"./service\";\n\n// Setup routes (QR pairing / disconnect)\nimport { signalSetupRoutes } from \"./setup-routes\";\n\n// Types\nimport { normalizeE164 } from \"./types\";\nimport { SignalWorkflowCredentialProvider } from \"./workflow-credential-provider\";\n\nconst signalPlugin: Plugin = {\n name: \"signal\",\n description: \"Signal messaging integration plugin for ElizaOS with end-to-end encryption\",\n services: [SignalService, SignalWorkflowCredentialProvider],\n actions: [],\n providers: [],\n routes: signalSetupRoutes,\n // Self-declared auto-enable: activate when the \"signal\" connector is\n // configured under config.connectors. The hardcoded CONNECTOR_PLUGINS map\n // in plugin-auto-enable-engine.ts still serves as a fallback.\n autoEnable: {\n connectorKeys: [\"signal\"],\n },\n init: async (_config: Record<string, string>, runtime: IAgentRuntime) => {\n // Register the Signal provider with the ConnectorAccountManager so the\n // HTTP CRUD surface (packages/agent/src/api/connector-account-routes.ts)\n // can list, create, patch, and delete Signal accounts.\n try {\n const manager = getConnectorAccountManager(runtime);\n manager.registerProvider(createSignalConnectorAccountProvider(runtime));\n } catch (err) {\n logger.warn(\n {\n src: \"plugin:signal\",\n err: err instanceof Error ? err.message : String(err),\n },\n \"Failed to register Signal provider with ConnectorAccountManager\"\n );\n }\n\n const accountNumber = runtime.getSetting(\"SIGNAL_ACCOUNT_NUMBER\") as string;\n const httpUrl = runtime.getSetting(\"SIGNAL_HTTP_URL\") as string;\n const cliPath = runtime.getSetting(\"SIGNAL_CLI_PATH\") as string;\n const effectiveCliPath = (cliPath ?? \"\").trim() || DEFAULT_SIGNAL_CLI_PATH;\n const ignoreGroups = runtime.getSetting(\"SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES\") as string;\n\n // Log configuration status\n const maskNumber = (number: string | undefined): string => {\n if (!number || number.trim() === \"\") return \"[not set]\";\n if (number.length <= 6) return \"***\";\n return `${number.slice(0, 3)}...${number.slice(-2)}`;\n };\n\n logger.info(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n settings: {\n accountNumber: maskNumber(accountNumber),\n httpUrl: httpUrl || \"[not set]\",\n cliPath: cliPath ? cliPath : `[default: ${DEFAULT_SIGNAL_CLI_PATH}]`,\n ignoreGroups: ignoreGroups || \"false\",\n },\n },\n \"Signal plugin initializing\"\n );\n\n if (!accountNumber || accountNumber.trim() === \"\") {\n logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId },\n \"SIGNAL_ACCOUNT_NUMBER not provided - Signal plugin is loaded but will not be functional\"\n );\n return;\n }\n\n const normalizedNumber = normalizeE164(accountNumber);\n if (!normalizedNumber) {\n logger.error(\n { src: \"plugin:signal\", agentId: runtime.agentId, accountNumber },\n \"SIGNAL_ACCOUNT_NUMBER is not a valid E.164 phone number\"\n );\n return;\n }\n\n // When neither SIGNAL_HTTP_URL nor SIGNAL_CLI_PATH is set explicitly, we\n // fall back to the default local signal-cli binary (name resolved via\n // PATH + Homebrew/common paths at service start). No warning here — the\n // service will surface a clearer error if signal-cli isn't actually\n // available on the host.\n logger.info(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n mode: httpUrl ? \"http\" : \"local-cli\",\n cliPath: effectiveCliPath,\n },\n \"Signal plugin configuration validated successfully\"\n );\n },\n};\n\nexport default signalPlugin;\n\n// Account management exports\nexport {\n DEFAULT_ACCOUNT_ID,\n isMultiAccountEnabled,\n listEnabledSignalAccounts,\n listSignalAccountIds,\n normalizeAccountId,\n type ResolvedSignalAccount,\n resolveDefaultSignalAccountId,\n resolveSignalAccount,\n type SignalAccountConfig,\n type SignalDmConfig,\n type SignalGroupConfig,\n type SignalMultiAccountConfig,\n type SignalReactionNotificationMode,\n} from \"./accounts\";\n// Channel configuration types\nexport type {\n SignalActionConfig,\n SignalConfig,\n SignalReactionLevel,\n} from \"./config\";\n// ConnectorAccountManager provider exports\nexport {\n createSignalConnectorAccountProvider,\n SIGNAL_PROVIDER_ID,\n} from \"./connector-account-provider\";\n// Pairing service (device linking via QR code / signal-cli)\nexport {\n classifySignalPairingErrorStatus,\n extractSignalCliProvisioningUrl,\n parseSignalCliAccountsOutput,\n type SignalPairingEvent,\n type SignalPairingOptions,\n SignalPairingSession,\n type SignalPairingSnapshot,\n type SignalPairingStatus,\n sanitizeAccountId as sanitizeSignalAccountId,\n signalAuthExists,\n signalLogout,\n} from \"./pairing-service\";\n// RPC client exports\nexport {\n createSignalEventStream,\n normalizeBaseUrl,\n parseSignalEventData,\n type SignalCheckResult,\n type SignalRpcError,\n type SignalRpcOptions,\n type SignalRpcResponse,\n type SignalSseEvent,\n signalCheck,\n signalGetVersion,\n signalListAccounts,\n signalListContacts,\n signalListGroups,\n signalRpcRequest,\n signalSend,\n signalSendReaction,\n signalSendReadReceipt,\n signalSendTyping,\n streamSignalEvents,\n} from \"./rpc\";\n// Export service for direct access\nexport { SignalService } from \"./service\";\n// Setup routes (QR pairing / disconnect)\nexport { applySignalQrOverride, signalSetupRoutes } from \"./setup-routes\";\n// Export types\nexport type {\n ISignalService,\n SignalAttachment,\n SignalContact,\n SignalEventPayloadMap,\n SignalGroup,\n SignalGroupMember,\n SignalMessage,\n SignalMessageReceivedPayload,\n SignalMessageSendOptions,\n SignalMessageSentPayload,\n SignalQuote,\n SignalReactionInfo,\n SignalReactionPayload,\n SignalRecentMessage,\n SignalSettings,\n} from \"./types\";\nexport {\n getSignalContactDisplayName,\n isValidE164,\n isValidGroupId,\n isValidUuid,\n MAX_SIGNAL_ATTACHMENT_SIZE,\n MAX_SIGNAL_MESSAGE_LENGTH,\n normalizeE164,\n SIGNAL_SERVICE_NAME,\n SignalApiError,\n SignalClientNotAvailableError,\n SignalConfigurationError,\n SignalEventTypes,\n SignalPluginError,\n SignalServiceNotInitializedError,\n} from \"./types\";\n",
63
- "import type { IAgentRuntime } from \"@elizaos/core\";\n\n/**\n * Default account identifier used when no specific account is configured\n */\nexport const DEFAULT_ACCOUNT_ID = \"default\";\n\n/**\n * DM-specific configuration\n */\nexport interface SignalDmConfig {\n /** If false, ignore all incoming Signal DMs */\n enabled?: boolean;\n /** Direct message access policy */\n policy?: \"open\" | \"disabled\" | \"allowlist\" | \"pairing\";\n /** Allowlist for DM senders (phone numbers or UUIDs) */\n allowFrom?: Array<string | number>;\n}\n\n/**\n * Group-specific configuration\n */\nexport interface SignalGroupConfig {\n /** If false, ignore all group messages */\n enabled?: boolean;\n /** Group message access policy */\n policy?: \"open\" | \"disabled\" | \"allowlist\";\n /** Require bot mention to respond in groups */\n requireMention?: boolean;\n /** Allowlist for groups (IDs or names) */\n allowFrom?: Array<string | number>;\n}\n\n/**\n * Reaction notification mode\n */\nexport type SignalReactionNotificationMode = \"off\" | \"own\" | \"all\" | \"allowlist\";\n\n/**\n * Configuration for a single Signal account\n */\nexport interface SignalAccountConfig {\n /** Optional display name for this account */\n name?: string;\n /** If false, do not start this Signal account */\n enabled?: boolean;\n /** Signal account phone number in E.164 format */\n account?: string;\n /** Signal CLI HTTP server URL */\n httpUrl?: string;\n /** Signal CLI auth/data directory */\n authDir?: string;\n /** Signal CLI HTTP server host */\n httpHost?: string;\n /** Signal CLI HTTP server port */\n httpPort?: number;\n /** Path to signal-cli binary */\n cliPath?: string;\n /** Auto-start signal-cli daemon if not running */\n autoStart?: boolean;\n /** Outbound text chunk size (chars) */\n textChunkLimit?: number;\n /** History limit for context */\n historyLimit?: number;\n /** Reaction notification mode */\n reactionNotifications?: SignalReactionNotificationMode;\n /** Reaction allowlist when mode is 'allowlist' */\n reactionAllowlist?: Array<string | number>;\n /** DM configuration */\n dm?: SignalDmConfig;\n /** Group configuration */\n group?: SignalGroupConfig;\n /** Whether to ignore group messages */\n shouldIgnoreGroupMessages?: boolean;\n /** Allowed groups */\n allowedGroups?: string[];\n /** Blocked numbers */\n blockedNumbers?: string[];\n}\n\n/**\n * Multi-account Signal configuration structure\n */\nexport interface SignalMultiAccountConfig {\n /** Default/base configuration applied to all accounts */\n enabled?: boolean;\n account?: string;\n httpUrl?: string;\n authDir?: string;\n /** Per-account configuration overrides */\n accounts?: Record<string, SignalAccountConfig>;\n}\n\n/**\n * Resolved Signal account with all configuration merged\n */\nexport interface ResolvedSignalAccount {\n accountId: string;\n enabled: boolean;\n name?: string;\n account?: string;\n baseUrl: string;\n configured: boolean;\n config: SignalAccountConfig;\n}\n\n/**\n * Normalizes an account ID, returning the default if not provided\n */\nexport function normalizeAccountId(accountId?: string | null): string {\n if (!accountId || typeof accountId !== \"string\") {\n return DEFAULT_ACCOUNT_ID;\n }\n const trimmed = accountId.trim().toLowerCase();\n return trimmed || DEFAULT_ACCOUNT_ID;\n}\n\n/**\n * Gets the multi-account configuration from runtime settings\n */\nexport function getMultiAccountConfig(runtime: IAgentRuntime): SignalMultiAccountConfig {\n const characterSignal = runtime.character?.settings?.signal as\n | SignalMultiAccountConfig\n | undefined;\n\n return {\n enabled: characterSignal?.enabled,\n account: characterSignal?.account,\n httpUrl: characterSignal?.httpUrl,\n authDir: characterSignal?.authDir,\n accounts: characterSignal?.accounts,\n };\n}\n\n/**\n * Lists all configured account IDs\n */\nexport function listSignalAccountIds(runtime: IAgentRuntime): string[] {\n const config = getMultiAccountConfig(runtime);\n const accounts = config.accounts;\n\n if (!accounts || typeof accounts !== \"object\") {\n return [DEFAULT_ACCOUNT_ID];\n }\n\n const ids = Object.keys(accounts).filter(Boolean);\n if (ids.length === 0) {\n return [DEFAULT_ACCOUNT_ID];\n }\n\n return [...ids].sort((a: string, b: string) => a.localeCompare(b));\n}\n\n/**\n * Resolves the default account ID to use\n */\nexport function resolveDefaultSignalAccountId(runtime: IAgentRuntime): string {\n const ids = listSignalAccountIds(runtime);\n if (ids.includes(DEFAULT_ACCOUNT_ID)) {\n return DEFAULT_ACCOUNT_ID;\n }\n return ids[0] ?? DEFAULT_ACCOUNT_ID;\n}\n\n/**\n * Gets the account-specific configuration\n */\nfunction getAccountConfig(\n runtime: IAgentRuntime,\n accountId: string\n): SignalAccountConfig | undefined {\n const config = getMultiAccountConfig(runtime);\n const accounts = config.accounts;\n\n if (!accounts || typeof accounts !== \"object\") {\n return undefined;\n }\n\n return accounts[accountId];\n}\n\n/**\n * Removes undefined values from an object to prevent them from overwriting during spread\n */\nfunction filterDefined<T extends object>(obj: T): Partial<T> {\n return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined)) as Partial<T>;\n}\n\n/**\n * Merges base configuration with account-specific overrides\n */\nfunction mergeSignalAccountConfig(runtime: IAgentRuntime, accountId: string): SignalAccountConfig {\n const multiConfig = getMultiAccountConfig(runtime);\n const { accounts: _ignored, ...baseConfig } = multiConfig;\n const accountConfig = getAccountConfig(runtime, accountId) ?? {};\n\n // Get environment/runtime settings for the base config\n const envAccount = runtime.getSetting(\"SIGNAL_ACCOUNT_NUMBER\") as string | undefined;\n const envHttpUrl = runtime.getSetting(\"SIGNAL_HTTP_URL\") as string | undefined;\n const envAuthDir = runtime.getSetting(\"SIGNAL_AUTH_DIR\") as string | undefined;\n const envCliPath = runtime.getSetting(\"SIGNAL_CLI_PATH\") as string | undefined;\n const envIgnoreGroups = runtime.getSetting(\"SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES\") as\n | string\n | undefined;\n\n const envConfig: SignalAccountConfig = {\n account: envAccount || undefined,\n httpUrl: envHttpUrl || undefined,\n authDir: envAuthDir || undefined,\n cliPath: envCliPath || undefined,\n shouldIgnoreGroupMessages: envIgnoreGroups?.toLowerCase() === \"true\",\n };\n\n // Merge order: env defaults < base config < account config\n // Filter undefined values to prevent them from overwriting defined values\n return {\n ...filterDefined(envConfig),\n ...filterDefined(baseConfig),\n ...filterDefined(accountConfig),\n };\n}\n\n/**\n * Resolves the base URL for Signal CLI HTTP server\n */\nfunction resolveBaseUrl(config: SignalAccountConfig): string {\n if (config.httpUrl?.trim()) {\n return config.httpUrl.trim().replace(/\\/+$/, \"\");\n }\n const host = config.httpHost?.trim() || \"127.0.0.1\";\n const port = config.httpPort ?? 8080;\n return `http://${host}:${port}`;\n}\n\n/**\n * Resolves a complete Signal account configuration\n */\nexport function resolveSignalAccount(\n runtime: IAgentRuntime,\n accountId?: string | null\n): ResolvedSignalAccount {\n const normalizedAccountId = normalizeAccountId(accountId);\n const multiConfig = getMultiAccountConfig(runtime);\n\n const baseEnabled = multiConfig.enabled !== false;\n const merged = mergeSignalAccountConfig(runtime, normalizedAccountId);\n const accountEnabled = merged.enabled !== false;\n const enabled = baseEnabled && accountEnabled;\n\n const baseUrl = resolveBaseUrl(merged);\n\n // Determine if this account is actually configured\n const configured = Boolean(\n merged.account?.trim() ||\n merged.httpUrl?.trim() ||\n merged.cliPath?.trim() ||\n merged.httpHost?.trim() ||\n typeof merged.httpPort === \"number\" ||\n typeof merged.autoStart === \"boolean\"\n );\n\n return {\n accountId: normalizedAccountId,\n enabled,\n name: merged.name?.trim() || undefined,\n account: merged.account?.trim(),\n baseUrl,\n configured,\n config: merged,\n };\n}\n\n/**\n * Lists all enabled Signal accounts\n */\nexport function listEnabledSignalAccounts(runtime: IAgentRuntime): ResolvedSignalAccount[] {\n return listSignalAccountIds(runtime)\n .map((accountId) => resolveSignalAccount(runtime, accountId))\n .filter((account) => account.enabled && account.configured);\n}\n\n/**\n * Checks if multi-account mode is enabled\n */\nexport function isMultiAccountEnabled(runtime: IAgentRuntime): boolean {\n const accounts = listEnabledSignalAccounts(runtime);\n return accounts.length > 1;\n}\n",
64
- "/**\n * Signal ConnectorAccountManager provider.\n *\n * Adapts the existing multi-account scaffolding in `accounts.ts` to the\n * `ConnectorAccountProvider` contract from\n * `@elizaos/core/connectors/account-manager`.\n *\n * Source of truth for accounts is character settings (`character.settings.signal`)\n * plus env-var fallbacks (SIGNAL_ACCOUNT_NUMBER, SIGNAL_HTTP_URL, SIGNAL_CLI_PATH).\n * Single-account env-only deployments still surface as a `default` account.\n *\n * Signal pairing happens out of band via signal-cli device link / QR code (see\n * `pairing-service.ts` + `setup-routes.ts`); there is no OAuth flow.\n */\n\nimport type {\n ConnectorAccount,\n ConnectorAccountManager,\n ConnectorAccountPatch,\n ConnectorAccountProvider,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport {\n DEFAULT_ACCOUNT_ID,\n listEnabledSignalAccounts,\n normalizeAccountId,\n type ResolvedSignalAccount,\n resolveSignalAccount,\n} from \"./accounts\";\n\nexport const SIGNAL_PROVIDER_ID = \"signal\";\n\nfunction purposeForAccount(_account: ResolvedSignalAccount): string[] {\n return [\"messaging\"];\n}\n\nfunction accessGateForAccount(account: ResolvedSignalAccount): string {\n // Signal numbers are owner-paired via signal-cli device link.\n const dmPolicy = account.config?.dm?.policy;\n if (dmPolicy === \"disabled\") return \"disabled\";\n if (dmPolicy === \"pairing\") return \"pairing\";\n // Default: device link is itself a pairing operation, so treat as pairing.\n return \"pairing\";\n}\n\nfunction roleForAccount(_account: ResolvedSignalAccount): \"OWNER\" | \"AGENT\" {\n // Signal accounts are linked to a real phone number owned by the user.\n return \"OWNER\";\n}\n\nfunction toConnectorAccount(account: ResolvedSignalAccount): ConnectorAccount {\n const now = Date.now();\n return {\n id: normalizeAccountId(account.accountId),\n provider: SIGNAL_PROVIDER_ID,\n label: account.name ?? account.account ?? account.accountId,\n role: roleForAccount(account),\n purpose: purposeForAccount(account),\n accessGate: accessGateForAccount(account),\n status: account.enabled && account.configured ? \"connected\" : \"disabled\",\n externalId: account.account,\n displayHandle: account.account,\n createdAt: now,\n updatedAt: now,\n metadata: {\n phoneNumber: account.account,\n baseUrl: account.baseUrl,\n dmPolicy: account.config?.dm?.policy ?? \"pairing\",\n groupPolicy: account.config?.group?.policy ?? \"open\",\n },\n };\n}\n\nexport function createSignalConnectorAccountProvider(\n runtime: IAgentRuntime\n): ConnectorAccountProvider {\n return {\n provider: SIGNAL_PROVIDER_ID,\n label: \"Signal\",\n listAccounts: async (_manager: ConnectorAccountManager): Promise<ConnectorAccount[]> => {\n const enabled = listEnabledSignalAccounts(runtime);\n if (enabled.length > 0) {\n return enabled.map(toConnectorAccount);\n }\n const fallback = resolveSignalAccount(runtime, DEFAULT_ACCOUNT_ID);\n return [toConnectorAccount(fallback)];\n },\n createAccount: async (input: ConnectorAccountPatch, _manager: ConnectorAccountManager) => {\n return {\n ...input,\n provider: SIGNAL_PROVIDER_ID,\n role: input.role ?? \"OWNER\",\n purpose: input.purpose ?? [\"messaging\"],\n accessGate: input.accessGate ?? \"pairing\",\n status: input.status ?? \"pending\",\n };\n },\n patchAccount: async (\n _accountId: string,\n patch: ConnectorAccountPatch,\n _manager: ConnectorAccountManager\n ) => {\n return { ...patch, provider: SIGNAL_PROVIDER_ID };\n },\n deleteAccount: async (_accountId: string, _manager: ConnectorAccountManager) => {\n // Persistent credentials for Signal live in signal-cli auth dir;\n // unlinking happens via `signalLogout`. Deletion at the manager layer is\n // a no-op marker.\n },\n // Signal uses device-link pairing (QR code via signal-cli), not OAuth.\n // startOAuth/completeOAuth intentionally omitted.\n };\n}\n",
65
- "import { type ChildProcess, spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport {\n ChannelType,\n type Character,\n type Content,\n type ContentType,\n createMessageMemory,\n createUniqueUuid,\n type EventPayload,\n type HandlerCallback,\n type IAgentRuntime,\n type IMessageService,\n lifeOpsPassiveConnectorsEnabled,\n type Media,\n type Memory,\n type MessageConnectorChatContext,\n type MessageConnectorQueryContext,\n type MessageConnectorTarget,\n type MessageConnectorUserContext,\n type Room,\n Service,\n stringToUuid,\n type TargetInfo,\n type UUID,\n} from \"@elizaos/core\";\nimport {\n DEFAULT_ACCOUNT_ID,\n listEnabledSignalAccounts,\n normalizeAccountId as normalizeSignalAccountId,\n resolveDefaultSignalAccountId,\n} from \"./accounts\";\nimport {\n createSignalEventStream,\n parseSignalEventData,\n signalCheck,\n signalListContacts,\n signalListGroups,\n signalRpcRequest,\n signalSend,\n signalSendReaction,\n signalSendTyping,\n} from \"./rpc\";\n\ntype MessageService = Pick<IMessageService, \"handleMessage\">;\ntype MessageConnectorRegistration = Parameters<IAgentRuntime[\"registerMessageConnector\"]>[0];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\ntype ConnectorFetchMessagesParams = {\n target?: TargetInfo;\n limit?: number;\n before?: string;\n after?: string;\n channelId?: string;\n roomId?: UUID;\n};\n\ntype ConnectorSearchMessagesParams = ConnectorFetchMessagesParams & {\n query?: string;\n};\n\ntype ConnectorReactionParams = {\n target?: TargetInfo;\n channelId?: string;\n roomId?: UUID;\n messageId?: string;\n targetTimestamp?: number;\n targetAuthor?: string;\n emoji?: string;\n remove?: boolean;\n};\n\ntype ConnectorUserLookupParams = {\n userId?: string;\n username?: string;\n handle?: string;\n query?: string;\n target?: TargetInfo;\n};\n\ntype ExtendedMessageConnectorRegistration = MessageConnectorRegistration & {\n fetchMessages?: (\n context: MessageConnectorQueryContext,\n params: ConnectorFetchMessagesParams\n ) => Promise<Memory[]>;\n searchMessages?: (\n context: MessageConnectorQueryContext,\n params: ConnectorSearchMessagesParams\n ) => Promise<Memory[]>;\n reactHandler?: (runtime: IAgentRuntime, params: ConnectorReactionParams) => Promise<void>;\n getUser?: (runtime: IAgentRuntime, params: ConnectorUserLookupParams) => Promise<unknown>;\n};\n\nconst getMessageService = (runtime: IAgentRuntime): MessageService | null => {\n if (\"messageService\" in runtime) {\n const withMessageService = runtime as IAgentRuntime & {\n messageService?: MessageService | null;\n };\n return withMessageService.messageService ?? null;\n }\n return null;\n};\n\nfunction normalizeSignalQuery(query: string): string {\n return query.trim().toLowerCase();\n}\n\nfunction scoreSignalCandidate(values: Array<string | undefined>, query: string): number {\n const normalized = normalizeSignalQuery(query);\n if (!normalized) {\n return 0.4;\n }\n\n const candidates = values\n .filter((value): value is string => typeof value === \"string\" && value.trim().length > 0)\n .map((value) => value.trim().toLowerCase());\n\n if (candidates.some((candidate) => candidate === normalized)) {\n return 1;\n }\n if (candidates.some((candidate) => candidate.includes(normalized))) {\n return 0.85;\n }\n\n const digits = normalized.replace(/\\D/g, \"\");\n if (digits && candidates.some((candidate) => candidate.replace(/\\D/g, \"\").includes(digits))) {\n return 0.8;\n }\n\n return 0;\n}\n\nfunction signalContactToConnectorTarget(\n contact: SignalContact,\n accountId: string,\n score = 0.5\n): MessageConnectorTarget {\n const label = getSignalContactDisplayName(contact);\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId,\n channelId: contact.number,\n entityId: stringToUuid(`signal-user-${contact.number}`),\n },\n label,\n kind: \"contact\",\n description: contact.blocked ? \"Blocked Signal contact\" : \"Signal contact\",\n score,\n contexts: [\"social\", \"connectors\"],\n metadata: {\n accountId,\n number: contact.number,\n uuid: contact.uuid,\n blocked: contact.blocked,\n },\n };\n}\n\nfunction signalGroupToConnectorTarget(\n group: SignalGroup,\n accountId: string,\n score = 0.5\n): MessageConnectorTarget {\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId,\n channelId: group.id,\n },\n label: group.name || `Signal Group ${group.id}`,\n kind: \"group\",\n description:\n group.description ||\n `${group.members.length} Signal member${group.members.length === 1 ? \"\" : \"s\"}`,\n score,\n contexts: [\"social\", \"connectors\"],\n metadata: {\n accountId,\n groupId: group.id,\n isMember: group.isMember,\n isBlocked: group.isBlocked,\n memberCount: group.members.length,\n },\n };\n}\n\nfunction signalRecentToConnectorTarget(\n recent: SignalRecentMessage,\n accountId: string,\n score = 0.55\n): MessageConnectorTarget {\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId,\n roomId: recent.roomId as UUID,\n channelId: recent.channelId,\n },\n label: recent.roomName,\n kind: recent.isGroup ? \"group\" : \"contact\",\n description: `${recent.speakerName}: ${recent.text.slice(0, 120)}`,\n score,\n contexts: [\"social\", \"connectors\"],\n metadata: {\n accountId,\n recentMessageId: recent.id,\n isGroup: recent.isGroup,\n createdAt: recent.createdAt,\n },\n };\n}\n\nimport { missingSignalCliMessage, resolveSignalCliExecutable } from \"./pairing-service\";\nimport {\n getSignalContactDisplayName,\n type ISignalService,\n isValidGroupId,\n isValidUuid,\n MAX_SIGNAL_MESSAGE_LENGTH,\n normalizeE164,\n SIGNAL_SERVICE_NAME,\n type SignalAttachment,\n type SignalContact,\n SignalEventTypes,\n type SignalGroup,\n type SignalMessage,\n type SignalMessageSendOptions,\n type SignalQuote,\n type SignalReactionInfo,\n type SignalRecentMessage,\n type SignalSettings,\n} from \"./types\";\n\nexport const DEFAULT_SIGNAL_HTTP_HOST = \"127.0.0.1\";\nexport const DEFAULT_SIGNAL_HTTP_PORT = 8080;\nconst DEFAULT_SIGNAL_DAEMON_STARTUP_TIMEOUT_MS = 30_000;\nexport const DEFAULT_SIGNAL_CLI_PATH = \"signal-cli\";\nconst BREW_OPENJDK_HOME = \"/opt/homebrew/opt/openjdk\";\n\n/**\n * signal-cli uses `$HOME/.local/share/signal-cli` as its default data\n * directory on every platform (the XDG path is hardcoded in signal-cli —\n * it does not honour `Library/Application Support` on macOS). Matching\n * that default here means a locally-installed signal-cli + a user who\n * ran `signal-cli -a +1555… link` once will \"just work\" — no config\n * needed beyond `SIGNAL_ACCOUNT_NUMBER`.\n *\n * Override with `SIGNAL_AUTH_DIR` to point at a custom install.\n */\nexport function defaultSignalAuthDir(): string {\n const home = os.homedir();\n return path.join(home, \".local\", \"share\", \"signal-cli\");\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction normalizeBaseUrl(url: string): string {\n return url.trim().replace(/\\/+$/, \"\");\n}\n\nfunction buildSignalCliEnv(): NodeJS.ProcessEnv {\n const env = { ...process.env };\n const javaHome =\n (fs.existsSync(BREW_OPENJDK_HOME) ? BREW_OPENJDK_HOME : null) ||\n (typeof env.JAVA_HOME === \"string\" && env.JAVA_HOME.trim().length > 0\n ? env.JAVA_HOME.trim()\n : null);\n\n if (javaHome) {\n env.JAVA_HOME = javaHome;\n const javaBin = path.join(javaHome, \"bin\");\n env.PATH = env.PATH ? `${javaBin}:${env.PATH}` : javaBin;\n }\n\n return env;\n}\n\n/**\n * Signal API client for HTTP API mode\n */\nclass SignalApiClient {\n constructor(\n public readonly baseUrl: string,\n public readonly accountNumber: string\n ) {}\n\n private rpcOptions(timeoutMs?: number): {\n baseUrl: string;\n timeoutMs?: number;\n } {\n return timeoutMs ? { baseUrl: this.baseUrl, timeoutMs } : { baseUrl: this.baseUrl };\n }\n\n async sendMessage(\n recipient: string,\n message: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n return signalSend(\n {\n account: this.accountNumber,\n recipients: [recipient],\n message,\n ...(options?.attachments ? { attachments: options.attachments } : {}),\n ...(options?.quote ? { quote: options.quote } : {}),\n },\n this.rpcOptions()\n );\n }\n\n async sendGroupMessage(\n groupId: string,\n message: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n return signalSend(\n {\n account: this.accountNumber,\n groupId,\n message,\n ...(options?.attachments ? { attachments: options.attachments } : {}),\n },\n this.rpcOptions()\n );\n }\n\n async sendReaction(\n recipient: string,\n emoji: string,\n targetTimestamp: number,\n targetAuthor: string,\n remove = false\n ): Promise<void> {\n await signalSendReaction(\n {\n account: this.accountNumber,\n recipient,\n emoji,\n targetAuthor,\n targetTimestamp,\n remove,\n },\n this.rpcOptions()\n );\n }\n\n async getContacts(): Promise<SignalContact[]> {\n return signalListContacts(this.accountNumber, this.rpcOptions()) as Promise<SignalContact[]>;\n }\n\n async getGroups(): Promise<SignalGroup[]> {\n return signalListGroups(this.accountNumber, this.rpcOptions()) as Promise<SignalGroup[]>;\n }\n\n async getGroup(groupId: string): Promise<SignalGroup | null> {\n const groups = await this.getGroups();\n return groups.find((g) => g.id === groupId) || null;\n }\n\n async receive(): Promise<Record<string, unknown>[]> {\n return signalRpcRequest<Record<string, unknown>[]>(\n \"receive\",\n { account: this.accountNumber },\n this.rpcOptions(1_500)\n ).catch((error) => {\n if (error instanceof Error && error.name === \"AbortError\") {\n return [];\n }\n throw error;\n });\n }\n\n async sendTyping(recipient: string, stop = false): Promise<void> {\n await signalSendTyping(\n {\n account: this.accountNumber,\n recipient,\n stop,\n },\n this.rpcOptions()\n );\n }\n\n async setProfile(name: string, about?: string): Promise<void> {\n await signalRpcRequest(\n \"setProfile\",\n {\n account: this.accountNumber,\n name,\n about: about || \"\",\n },\n this.rpcOptions()\n );\n }\n\n async getIdentities(): Promise<\n Array<{ number: string; safety_number: string; trust_level: string }>\n > {\n return signalRpcRequest(\"listIdentities\", { account: this.accountNumber }, this.rpcOptions());\n }\n\n async trustIdentity(\n number: string,\n trustLevel: \"TRUSTED_VERIFIED\" | \"TRUSTED_UNVERIFIED\" | \"UNTRUSTED\"\n ): Promise<void> {\n await signalRpcRequest(\n \"trustIdentity\",\n {\n account: this.accountNumber,\n number,\n trustLevel,\n },\n this.rpcOptions()\n );\n }\n}\n\n/**\n * SignalService class for interacting with Signal via HTTP API or CLI\n */\nexport class SignalService extends Service implements ISignalService {\n static serviceType: string = SIGNAL_SERVICE_NAME;\n capabilityDescription = \"The agent is able to send and receive messages on Signal\";\n\n async stop(): Promise<void> {\n await this.shutdown();\n }\n\n character: Character;\n accountNumber: string | null = null;\n isConnected = false;\n\n private defaultAccountId = DEFAULT_ACCOUNT_ID;\n private accountNumbers: Map<string, string> = new Map();\n private clients: Map<string, SignalApiClient> = new Map();\n private client: SignalApiClient | null = null;\n private settings: SignalSettings;\n private contactCache: Map<string, SignalContact> = new Map();\n private contactCaches: Map<string, Map<string, SignalContact>> = new Map();\n private groupCache: Map<string, SignalGroup> = new Map();\n private groupCaches: Map<string, Map<string, SignalGroup>> = new Map();\n private pollInterval: NodeJS.Timeout | null = null;\n private eventStream: ReturnType<typeof createSignalEventStream> | null = null;\n private eventStreams: Map<string, ReturnType<typeof createSignalEventStream>> = new Map();\n private isPolling = false;\n private daemonProcess: ChildProcess | null = null;\n\n constructor(runtime?: IAgentRuntime) {\n super(runtime);\n if (runtime) {\n this.character = runtime.character;\n this.settings = this.loadSettings();\n } else {\n this.character = {} as Character;\n this.settings = {\n shouldIgnoreGroupMessages: false,\n allowedGroups: undefined,\n blockedNumbers: undefined,\n autoReply: false,\n receiveMode: \"manual\",\n };\n }\n }\n\n private loadSettings(): SignalSettings {\n const ignoreGroups = this.runtime.getSetting(\"SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES\");\n const autoReply = this.runtime.getSetting(\"SIGNAL_AUTO_REPLY\");\n const receiveMode = this.runtime.getSetting(\"SIGNAL_RECEIVE_MODE\");\n\n return {\n shouldIgnoreGroupMessages: ignoreGroups === \"true\" || ignoreGroups === true,\n allowedGroups: undefined,\n blockedNumbers: undefined,\n autoReply:\n !lifeOpsPassiveConnectorsEnabled(this.runtime) &&\n (autoReply === \"true\" || autoReply === true),\n receiveMode: receiveMode === \"on-start\" ? \"on-start\" : \"manual\",\n };\n }\n\n private normalizeAccountId(accountId?: string | null): string {\n return normalizeSignalAccountId(accountId ?? this.defaultAccountId);\n }\n\n private getConnectorAccountIds(): string[] {\n const ids = this.clients instanceof Map ? Array.from(this.clients.keys()) : [];\n if (ids.length > 0) {\n return ids;\n }\n return [this.defaultAccountId];\n }\n\n private getClientForAccount(accountId?: string | null): SignalApiClient | null {\n const normalized = this.normalizeAccountId(accountId);\n return (\n (this.clients instanceof Map ? this.clients.get(normalized) : null) ??\n (normalized === this.defaultAccountId ? this.client : null)\n );\n }\n\n private getAccountNumberForAccount(accountId?: string | null): string | null {\n const normalized = this.normalizeAccountId(accountId);\n return (\n (this.accountNumbers instanceof Map ? this.accountNumbers.get(normalized) : null) ??\n (normalized === this.defaultAccountId ? this.accountNumber : null)\n );\n }\n\n private cacheContacts(accountId: string, contacts: SignalContact[]): void {\n const accountCache = this.contactCaches.get(accountId) ?? new Map<string, SignalContact>();\n for (const contact of contacts) {\n accountCache.set(contact.number, contact);\n if (accountId === this.defaultAccountId) {\n this.contactCache.set(contact.number, contact);\n }\n }\n this.contactCaches.set(accountId, accountCache);\n }\n\n private cacheGroups(accountId: string, groups: SignalGroup[]): void {\n const accountCache = this.groupCaches.get(accountId) ?? new Map<string, SignalGroup>();\n for (const group of groups) {\n accountCache.set(group.id, group);\n if (accountId === this.defaultAccountId) {\n this.groupCache.set(group.id, group);\n }\n }\n this.groupCaches.set(accountId, accountCache);\n }\n\n private getCachedContact(number: string, accountId?: string | null): SignalContact | undefined {\n const normalized = this.normalizeAccountId(accountId);\n return this.contactCaches.get(normalized)?.get(number) ?? this.contactCache.get(number);\n }\n\n private getCachedGroupForAccount(\n groupId: string,\n accountId?: string | null\n ): SignalGroup | undefined {\n const normalized = this.normalizeAccountId(accountId);\n return this.groupCaches.get(normalized)?.get(groupId) ?? this.groupCache.get(groupId);\n }\n\n private accountScopedKey(accountId: string, kind: string, value: string): string {\n return accountId === DEFAULT_ACCOUNT_ID\n ? `signal-${kind}-${value}`\n : `signal-${kind}-${accountId}-${value}`;\n }\n\n static async start(runtime: IAgentRuntime): Promise<SignalService> {\n const service = new SignalService(runtime);\n const accounts = listEnabledSignalAccounts(runtime);\n const rawAuthDir = runtime.getSetting(\"SIGNAL_AUTH_DIR\") as string | undefined;\n const defaultAuthDir =\n typeof rawAuthDir === \"string\" && rawAuthDir.trim().length > 0\n ? rawAuthDir.trim()\n : defaultSignalAuthDir();\n const configuredCliPath =\n (runtime.getSetting(\"SIGNAL_CLI_PATH\") as string | undefined) || DEFAULT_SIGNAL_CLI_PATH;\n const parsedStartupTimeout = Number.parseInt(\n String(runtime.getSetting(\"SIGNAL_STARTUP_TIMEOUT_MS\") ?? \"\"),\n 10\n );\n const startupTimeoutMs =\n Number.isFinite(parsedStartupTimeout) && parsedStartupTimeout > 0\n ? Math.min(parsedStartupTimeout, 120_000)\n : DEFAULT_SIGNAL_DAEMON_STARTUP_TIMEOUT_MS;\n\n if (accounts.length === 0) {\n runtime.logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId },\n \"SIGNAL_ACCOUNT_NUMBER not provided, Signal service will not start\"\n );\n return service;\n }\n\n service.defaultAccountId = resolveDefaultSignalAccountId(runtime);\n\n for (const account of accounts) {\n const accountNumber = account.account;\n if (!accountNumber) {\n runtime.logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId, accountId: account.accountId },\n \"Signal account is missing account number, skipping\"\n );\n continue;\n }\n\n const normalizedNumber = normalizeE164(accountNumber);\n if (!normalizedNumber) {\n runtime.logger.error(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n accountId: account.accountId,\n accountNumber,\n },\n \"Invalid Signal account number format\"\n );\n continue;\n }\n\n const baseUrl = normalizeBaseUrl(account.baseUrl);\n const explicitHttpUrl = Boolean(account.config.httpUrl?.trim());\n const authDir = account.config.authDir?.trim() || defaultAuthDir;\n const accountCliPath = account.config.cliPath?.trim() || configuredCliPath;\n\n if (!explicitHttpUrl) {\n // authDir is now guaranteed non-empty (falls back to defaultSignalAuthDir()).\n // If the directory does not exist, signal-cli would fail on startup with\n // a confusing \"No linked devices\" error — pre-empt that with a clearer\n // warning that points at the user's next action.\n if (!fs.existsSync(authDir)) {\n runtime.logger.warn(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n accountId: account.accountId,\n authDir,\n },\n \"Signal auth directory does not exist yet — run `signal-cli -a <number> link` (or set SIGNAL_AUTH_DIR to a pre-existing install) before starting the plugin\"\n );\n continue;\n }\n\n try {\n await service.ensureDaemonRunning(accountCliPath, authDir, baseUrl, startupTimeoutMs);\n } catch (error) {\n runtime.logger.error(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n accountId: account.accountId,\n error: String(error),\n authDir,\n cliPath: accountCliPath,\n },\n \"Failed to start signal-cli daemon\"\n );\n continue;\n }\n }\n\n const client = new SignalApiClient(baseUrl, normalizedNumber);\n service.clients.set(account.accountId, client);\n service.accountNumbers.set(account.accountId, normalizedNumber);\n if (account.accountId === service.defaultAccountId || !service.client) {\n service.client = client;\n service.accountNumber = normalizedNumber;\n }\n }\n\n if (service.clients.size === 0) {\n runtime.logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId },\n \"No configured Signal accounts could be initialized\"\n );\n return service;\n }\n\n try {\n await service.initialize();\n } catch (error) {\n runtime.logger.warn(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n error: String(error),\n },\n \"Signal service failed to initialize\"\n );\n }\n\n return service;\n }\n\n static registerSendHandlers(runtime: IAgentRuntime, service: SignalService): void {\n const sendHandler = async (_runtime: IAgentRuntime, target: TargetInfo, content: Content) => {\n const accountId = service.normalizeAccountId(target.accountId);\n const text = typeof content.text === \"string\" ? content.text.trim() : \"\";\n if (!text) {\n return;\n }\n\n const room = target.roomId ? await runtime.getRoom(target.roomId) : null;\n const channelId = String(target.channelId ?? room?.channelId ?? \"\").trim();\n if (!channelId) {\n throw new Error(\"Signal target is missing a channel identifier\");\n }\n\n const isGroup = room?.type === ChannelType.GROUP;\n const result = isGroup\n ? await service.sendGroupMessage(channelId, text, { record: false, accountId })\n : await service.sendMessage(channelId, text, { record: false, accountId });\n\n if (!target.roomId) {\n return;\n }\n\n const memory = createMessageMemory({\n id: createUniqueUuid(runtime, `signal:${result.timestamp}`),\n entityId: runtime.agentId,\n roomId: target.roomId,\n content: {\n ...content,\n text,\n source: \"signal\",\n },\n }) as Memory;\n memory.metadata = {\n ...(memory.metadata ?? {}),\n type: \"message\",\n accountId,\n messageIdFull: String(result.timestamp),\n signalTimestamp: result.timestamp,\n signal: {\n timestamp: result.timestamp,\n },\n } satisfies Memory[\"metadata\"];\n return memory;\n };\n\n if (typeof runtime.registerMessageConnector === \"function\") {\n const accountIds = service.getConnectorAccountIds();\n const registrationAccountIds =\n accountIds.length > 1 ? accountIds : [undefined as string | undefined];\n\n for (const registrationAccountId of registrationAccountIds) {\n const connectorAccountId = service.normalizeAccountId(registrationAccountId);\n const registration: ExtendedMessageConnectorRegistration = {\n source: SIGNAL_SERVICE_NAME,\n ...(registrationAccountId ? { accountId: connectorAccountId } : {}),\n label:\n registrationAccountId && connectorAccountId !== DEFAULT_ACCOUNT_ID\n ? `Signal (${connectorAccountId})`\n : \"Signal\",\n capabilities: [\n \"send_message\",\n \"send_direct_message\",\n \"send_group_message\",\n \"send_reaction\",\n \"read_messages\",\n \"search_messages\",\n \"list_contacts\",\n \"list_groups\",\n \"read_recent_messages\",\n \"get_user\",\n ],\n supportedTargetKinds: [\"contact\", \"phone\", \"group\", \"room\"],\n contexts: [\"social\", \"connectors\"],\n description:\n \"Send, read, search, and react in Signal direct and group conversations with known contacts, phone numbers, groups, and recent Signal rooms.\",\n metadata: {\n accountId: connectorAccountId,\n },\n sendHandler: (handlerRuntime, target, content) =>\n sendHandler(\n handlerRuntime,\n target.accountId\n ? target\n : ({ ...target, accountId: connectorAccountId } as TargetInfo),\n content\n ),\n resolveTargets: async (query) => {\n const contacts = await service.listConnectorContacts(connectorAccountId);\n const groups = await service.listConnectorGroups(connectorAccountId);\n const recentMessages = await service\n .getRecentMessages(30, connectorAccountId)\n .catch(() => []);\n const recentTargets = recentMessages\n .map((recent) => ({\n recent,\n score: scoreSignalCandidate(\n [recent.roomName, recent.channelId, recent.speakerName, recent.text],\n query\n ),\n }))\n .filter(({ score }) => score > 0)\n .map(({ recent, score }) =>\n signalRecentToConnectorTarget(recent, connectorAccountId, score)\n );\n\n const contactTargets = contacts\n .map((contact) => ({\n contact,\n score: scoreSignalCandidate(\n [contact.number, contact.name, contact.profileName, contact.uuid],\n query\n ),\n }))\n .filter(({ score }) => score > 0)\n .map(({ contact, score }) =>\n signalContactToConnectorTarget(contact, connectorAccountId, score)\n );\n\n const groupTargets = groups\n .map((group) => ({\n group,\n score: scoreSignalCandidate([group.id, group.name, group.description], query),\n }))\n .filter(({ score }) => score > 0)\n .map(({ group, score }) =>\n signalGroupToConnectorTarget(group, connectorAccountId, score)\n );\n\n return [...contactTargets, ...groupTargets, ...recentTargets]\n .sort((left, right) => (right.score ?? 0) - (left.score ?? 0))\n .slice(0, 12);\n },\n listRecentTargets: async () => {\n const recent = await service.getRecentMessages(12, connectorAccountId).catch(() => []);\n return recent.map((message) =>\n signalRecentToConnectorTarget(message, connectorAccountId)\n );\n },\n listRooms: async () => {\n const groups = await service.listConnectorGroups(connectorAccountId);\n return groups.map((group) => signalGroupToConnectorTarget(group, connectorAccountId));\n },\n fetchMessages: (context, params) =>\n service.fetchConnectorMessages(\n {\n ...context,\n accountId: context.accountId ?? connectorAccountId,\n target:\n context.target && !context.target.accountId\n ? ({ ...context.target, accountId: connectorAccountId } as TargetInfo)\n : context.target,\n },\n {\n ...params,\n target:\n params.target && !params.target.accountId\n ? ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : params.target,\n }\n ),\n searchMessages: (context, params) =>\n service.searchConnectorMessages(\n {\n ...context,\n accountId: context.accountId ?? connectorAccountId,\n target:\n context.target && !context.target.accountId\n ? ({ ...context.target, accountId: connectorAccountId } as TargetInfo)\n : context.target,\n },\n {\n ...params,\n target:\n params.target && !params.target.accountId\n ? ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : params.target,\n }\n ),\n reactHandler: (handlerRuntime, params) => {\n const channelId =\n params.target?.channelId ?? (\"channelId\" in params ? params.channelId : undefined);\n const roomId =\n params.target?.roomId ?? (\"roomId\" in params ? params.roomId : undefined);\n return service.reactConnectorMessage(handlerRuntime, {\n ...params,\n target: params.target\n ? params.target.accountId\n ? params.target\n : ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : ({\n source: SIGNAL_SERVICE_NAME,\n accountId: connectorAccountId,\n channelId,\n roomId,\n } as TargetInfo),\n });\n },\n getUser: service.getConnectorUser.bind(service),\n getChatContext: async (target, context) => {\n const targetAccountId = service.normalizeAccountId(\n target.accountId ?? context.accountId ?? connectorAccountId\n );\n const room = target.roomId ? await context.runtime.getRoom(target.roomId) : null;\n const channelId = String(target.channelId ?? room?.channelId ?? \"\").trim();\n if (!channelId) {\n return null;\n }\n\n const recentMessages = (\n await service.getRecentMessages(50, targetAccountId).catch(() => [])\n )\n .filter((recent) => recent.channelId === channelId || recent.roomId === target.roomId)\n .slice(0, 10)\n .map((recent) => ({\n name: recent.speakerName,\n text: recent.text,\n timestamp: recent.createdAt,\n metadata: {\n accountId: targetAccountId,\n isFromAgent: recent.isFromAgent,\n isGroup: recent.isGroup,\n },\n }));\n\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId: targetAccountId,\n roomId: target.roomId,\n channelId,\n },\n label: room?.name || channelId,\n recentMessages,\n metadata: {\n accountId: targetAccountId,\n isGroup: room?.type === ChannelType.GROUP,\n channelId,\n },\n } satisfies MessageConnectorChatContext;\n },\n getUserContext: async (entityId) => {\n const contacts = await service.listConnectorContacts(connectorAccountId);\n const contact = contacts.find(\n (candidate) => service.getEntityId(candidate.number, connectorAccountId) === entityId\n );\n if (!contact) {\n return null;\n }\n return {\n entityId,\n label: getSignalContactDisplayName(contact),\n aliases: [contact.name, contact.profileName, contact.number].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0\n ),\n handles: {\n signal: contact.number,\n },\n metadata: {\n accountId: connectorAccountId,\n uuid: contact.uuid,\n blocked: contact.blocked,\n },\n } satisfies MessageConnectorUserContext;\n },\n };\n runtime.registerMessageConnector(registration);\n }\n return;\n }\n\n runtime.registerSendHandler(SIGNAL_SERVICE_NAME, sendHandler);\n }\n\n private async initialize(): Promise<void> {\n if (this.clients.size === 0 && this.client) {\n this.clients.set(this.defaultAccountId, this.client);\n if (this.accountNumber) {\n this.accountNumbers.set(this.defaultAccountId, this.accountNumber);\n }\n }\n if (this.clients.size === 0) return;\n\n this.runtime.logger.info(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountIds: Array.from(this.clients.keys()),\n },\n \"Initializing Signal service\"\n );\n\n for (const [accountId, client] of this.clients) {\n // Test connection by getting contacts\n const contacts = await client.getContacts();\n this.runtime.logger.info(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountId,\n contactCount: contacts.length,\n },\n \"Signal account connected\"\n );\n\n this.cacheContacts(accountId, contacts);\n this.cacheGroups(accountId, await client.getGroups());\n }\n\n this.isConnected = true;\n\n if (this.settings.receiveMode === \"on-start\") {\n this.startPolling();\n } else {\n this.runtime.logger.info(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n receiveMode: this.settings.receiveMode,\n },\n \"Signal receive polling is manual; LifeOps reads pull from signal-cli directly\"\n );\n }\n }\n\n private async shutdown(): Promise<void> {\n this.stopPolling();\n this.clients.clear();\n this.accountNumbers.clear();\n this.client = null;\n this.isConnected = false;\n if (this.daemonProcess) {\n this.daemonProcess.kill(\"SIGTERM\");\n this.daemonProcess = null;\n }\n\n this.runtime.logger.info(\n { src: \"plugin:signal\", agentId: this.runtime.agentId },\n \"Signal service stopped\"\n );\n }\n\n private async ensureDaemonRunning(\n cliPath: string,\n authDir: string,\n baseUrl: string,\n startupTimeoutMs: number\n ): Promise<void> {\n const current = await signalCheck(baseUrl, 1_500);\n if (current.ok) {\n return;\n }\n\n const resolvedCliPath = await resolveSignalCliExecutable({\n cliPath,\n env: process.env,\n });\n if (!resolvedCliPath) {\n throw new Error(missingSignalCliMessage(cliPath));\n }\n\n fs.mkdirSync(authDir, { recursive: true });\n const httpTarget = new URL(baseUrl).host;\n const daemonArgs = [\n \"--config\",\n authDir,\n \"daemon\",\n \"--http\",\n httpTarget,\n \"--receive-mode\",\n \"on-start\",\n \"--no-receive-stdout\",\n ];\n const child = spawn(resolvedCliPath, daemonArgs, {\n env: buildSignalCliEnv(),\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n this.daemonProcess = child;\n\n child.stdout.on(\"data\", (chunk) => {\n const text = chunk.toString().trim();\n if (text.length > 0) {\n this.runtime.logger.debug(\n { src: \"plugin:signal\", agentId: this.runtime.agentId, output: text },\n \"signal-cli daemon stdout\"\n );\n }\n });\n\n child.stderr.on(\"data\", (chunk) => {\n const text = chunk.toString().trim();\n if (text.length > 0) {\n this.runtime.logger.info(\n { src: \"plugin:signal\", agentId: this.runtime.agentId, output: text },\n \"signal-cli daemon stderr\"\n );\n }\n });\n\n child.once(\"exit\", (code, signal) => {\n if (this.daemonProcess === child) {\n this.daemonProcess = null;\n }\n this.runtime.logger.warn(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n code,\n signal,\n },\n \"signal-cli daemon exited\"\n );\n });\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < startupTimeoutMs) {\n if (child.exitCode !== null) {\n throw new Error(`signal-cli daemon exited before becoming ready (code ${child.exitCode})`);\n }\n\n const ready = await signalCheck(baseUrl, 1_500);\n if (ready.ok) {\n return;\n }\n\n await sleep(500);\n }\n\n throw new Error(\n `signal-cli daemon did not become ready at ${baseUrl} within ${startupTimeoutMs}ms`\n );\n }\n\n private startPolling(): void {\n if (this.pollInterval || this.eventStreams.size > 0 || this.eventStream) return;\n\n if (this.clients.size > 0) {\n for (const [accountId, client] of this.clients) {\n const eventStream = createSignalEventStream({\n baseUrl: client.baseUrl,\n account: client.accountNumber,\n onEvent: (event) => {\n const data = parseSignalEventData<unknown>(event.data);\n if (data !== null) {\n this.handleSignalEventPayload(data, accountId);\n }\n },\n onError: (error) => {\n this.runtime.logger.error(\n { src: \"plugin:signal\", accountId, error: String(error) },\n \"Signal event stream error\"\n );\n },\n });\n this.eventStreams.set(accountId, eventStream);\n if (accountId === this.defaultAccountId) {\n this.eventStream = eventStream;\n }\n eventStream.start();\n }\n return;\n }\n\n this.pollInterval = setInterval(async () => {\n await this.pollMessages();\n }, 2000); // Poll every 2 seconds\n }\n\n private stopPolling(): void {\n if (this.pollInterval) {\n clearInterval(this.pollInterval);\n this.pollInterval = null;\n }\n if (this.eventStream) {\n this.eventStream.stop();\n this.eventStream = null;\n }\n for (const eventStream of this.eventStreams.values()) {\n eventStream.stop();\n }\n this.eventStreams.clear();\n }\n\n /**\n * Unwraps signal-cli REST API envelope format into a flat SignalMessage.\n *\n * signal-cli returns `{envelope:{source, sourceNumber, sourceName, dataMessage:{message,...}}}`\n * but the plugin expects flat `{sender, message, timestamp, ...}` objects.\n */\n static unwrapEnvelope(raw: Record<string, unknown>): SignalMessage | null {\n if (!(\"envelope\" in raw)) {\n if (typeof raw.sender !== \"string\" || typeof raw.timestamp !== \"number\") {\n return null;\n }\n return {\n sender: raw.sender,\n senderUuid: typeof raw.senderUuid === \"string\" ? raw.senderUuid : undefined,\n message: typeof raw.message === \"string\" ? raw.message : undefined,\n timestamp: raw.timestamp,\n groupId: typeof raw.groupId === \"string\" ? raw.groupId : undefined,\n attachments: Array.isArray(raw.attachments) ? (raw.attachments as SignalAttachment[]) : [],\n reaction: raw.reaction as SignalReactionInfo | undefined,\n expiresInSeconds:\n typeof raw.expiresInSeconds === \"number\" ? raw.expiresInSeconds : undefined,\n viewOnce: raw.viewOnce === true,\n quote: raw.quote as SignalQuote | undefined,\n };\n }\n\n const env = raw.envelope as Record<string, unknown>;\n const dm = (env.dataMessage || {}) as Record<string, unknown>;\n const groupInfo = dm.groupInfo as Record<string, unknown> | undefined;\n\n const sender = (env.sourceNumber as string) || (env.source as string);\n const timestamp = (dm.timestamp as number) || (env.timestamp as number);\n\n // Both sender and timestamp are required to produce a usable message.\n if (!sender || !timestamp) return null;\n\n return {\n sender,\n senderUuid: env.source as string | undefined,\n message: dm.message as string | undefined,\n timestamp,\n groupId: groupInfo?.groupId as string | undefined,\n attachments: (dm.attachments as SignalAttachment[]) || [],\n reaction: dm.reaction as SignalReactionInfo | undefined,\n expiresInSeconds: (dm.expiresInSeconds as number) || 0,\n viewOnce: (dm.viewOnce as boolean) || false,\n quote: dm.quote as SignalQuote | undefined,\n };\n }\n\n private async pollMessages(accountId?: string | null): Promise<void> {\n if (this.isPolling) return;\n\n const entries = accountId\n ? ([[this.normalizeAccountId(accountId), this.getClientForAccount(accountId)]].filter(\n ([, client]) => Boolean(client)\n ) as Array<[string, SignalApiClient]>)\n : Array.from(this.clients.entries());\n if (entries.length === 0 && this.client) {\n entries.push([this.defaultAccountId, this.client]);\n }\n if (entries.length === 0) return;\n\n this.isPolling = true;\n\n try {\n for (const [entryAccountId, client] of entries) {\n const rawMessages = (await client.receive()) || [];\n\n for (const raw of rawMessages) {\n try {\n if (!isRecord(raw)) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", accountId: entryAccountId },\n \"Skipping malformed envelope (not an object)\"\n );\n continue;\n }\n\n const msg = SignalService.unwrapEnvelope(raw);\n if (!msg) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", accountId: entryAccountId },\n \"Skipping malformed envelope (missing sender or timestamp)\"\n );\n continue;\n }\n await this.handleIncomingMessage(msg, entryAccountId);\n } catch (msgErr) {\n this.runtime.logger.error(\n { src: \"plugin:signal\", accountId: entryAccountId, error: String(msgErr) },\n \"Error handling incoming message\"\n );\n }\n }\n }\n } catch (err) {\n this.runtime.logger.error(\n { src: \"plugin:signal\", error: String(err) },\n \"Error polling messages\"\n );\n } finally {\n this.isPolling = false;\n }\n }\n\n private handleSignalEventPayload(raw: unknown, accountId?: string | null): void {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const payloads = Array.isArray(raw) ? raw : [raw];\n for (const payload of payloads) {\n if (!payload || typeof payload !== \"object\") {\n continue;\n }\n void (async () => {\n try {\n const msg = SignalService.unwrapEnvelope(payload as Record<string, unknown>);\n if (!msg) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\" },\n \"Skipping malformed Signal event (missing sender or timestamp)\"\n );\n return;\n }\n await this.handleIncomingMessage(msg, normalizedAccountId);\n } catch (error) {\n this.runtime.logger.error(\n { src: \"plugin:signal\", error: String(error) },\n \"Error handling Signal event\"\n );\n }\n })();\n }\n }\n\n private async handleIncomingMessage(\n msg: SignalMessage,\n accountId = this.defaultAccountId\n ): Promise<void> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n // Handle reactions separately\n if (msg.reaction) {\n await this.handleReaction(msg, normalizedAccountId);\n return;\n }\n\n // Skip if no message content\n if (!msg.message && msg.attachments.length === 0) {\n return;\n }\n\n const isGroupMessage = Boolean(msg.groupId);\n\n // Check if we should ignore group messages\n if (isGroupMessage && this.settings.shouldIgnoreGroupMessages) {\n return;\n }\n\n // Ensure entity, room, and world exist before creating memories.\n // Without this, the DB insert fails because the foreign keys don't exist.\n const entityId = this.getEntityId(msg.sender, normalizedAccountId);\n const roomId = await this.getRoomId(msg.sender, msg.groupId, normalizedAccountId);\n const worldId = createUniqueUuid(\n this.runtime,\n normalizedAccountId === DEFAULT_ACCOUNT_ID\n ? \"signal-world\"\n : `signal-world-${normalizedAccountId}`\n );\n const contact = this.getCachedContact(msg.sender, normalizedAccountId);\n const displayName = contact ? getSignalContactDisplayName(contact) : msg.sender;\n\n await this.runtime.ensureConnection({\n entityId,\n roomId,\n worldId,\n worldName: \"Signal\",\n userId: msg.sender,\n userName: displayName,\n name: displayName,\n source: \"signal\",\n type: isGroupMessage ? ChannelType.GROUP : ChannelType.DM,\n channelId: msg.groupId || msg.sender,\n metadata: {\n accountId: normalizedAccountId,\n isGroup: isGroupMessage,\n ...(msg.groupId ? { groupId: msg.groupId } : {}),\n sender: msg.sender,\n },\n });\n await this.ensureRoomExists(msg.sender, msg.groupId, normalizedAccountId);\n\n // Build memory from message\n const memory = await this.buildMemoryFromMessage(msg, normalizedAccountId);\n if (!memory) return;\n\n // Store the memory\n await this.runtime.createMemory(memory, \"messages\");\n\n // Emit event\n await this.runtime.emitEvent(\n SignalEventTypes.MESSAGE_RECEIVED as string,\n {\n runtime: this.runtime,\n source: \"signal\",\n accountId: normalizedAccountId,\n message: memory,\n } as EventPayload\n );\n\n // Get the room for processMessage; fall back to ensureRoomExists if\n // getRoom returns null (e.g. race condition after ensureConnection).\n let room = await this.runtime.getRoom(roomId);\n if (!room) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", accountId: normalizedAccountId, roomId, sender: msg.sender },\n \"Room not found after ensureConnection, creating via ensureRoomExists\"\n );\n room = await this.ensureRoomExists(msg.sender, msg.groupId, normalizedAccountId);\n }\n\n // Inbound messages are always ingested (memory + MESSAGE_RECEIVED event)\n // so the user can read history and dispatch sends through LifeOps. The\n // agent only auto-generates a reply when SIGNAL_AUTO_REPLY is explicitly\n // enabled — default-off prevents the runtime from speaking on the user's\n // behalf to real Signal contacts.\n if (this.settings.autoReply && !lifeOpsPassiveConnectorsEnabled(this.runtime)) {\n await this.processMessage(memory, room, msg.sender, msg.groupId, normalizedAccountId);\n }\n }\n\n private async handleReaction(\n msg: SignalMessage,\n accountId = this.defaultAccountId\n ): Promise<void> {\n if (!msg.reaction) return;\n\n await this.runtime.emitEvent(\n SignalEventTypes.REACTION_RECEIVED as string,\n {\n runtime: this.runtime,\n source: \"signal\",\n accountId: this.normalizeAccountId(accountId),\n } as EventPayload\n );\n }\n\n private async processMessage(\n memory: Memory,\n room: Room,\n sender: string,\n groupId?: string,\n accountId = this.defaultAccountId\n ): Promise<void> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const callback: HandlerCallback = async (response: Content): Promise<Memory[]> => {\n if (groupId) {\n await this.sendGroupMessage(groupId, response.text || \"\", {\n accountId: normalizedAccountId,\n });\n } else {\n await this.sendMessage(sender, response.text || \"\", {\n accountId: normalizedAccountId,\n });\n }\n\n // Create memory for the response\n const responseMemory: Memory = {\n id: createUniqueUuid(this.runtime, `signal-response-${Date.now()}`),\n agentId: this.runtime.agentId,\n roomId: room.id,\n entityId: this.runtime.agentId,\n content: {\n text: response.text || \"\",\n source: \"signal\",\n inReplyTo: memory.id,\n },\n metadata: {\n accountId: normalizedAccountId,\n source: \"signal\",\n provider: \"signal\",\n signal: {\n groupId,\n },\n } satisfies Memory[\"metadata\"],\n createdAt: Date.now(),\n };\n\n await this.runtime.createMemory(responseMemory, \"messages\");\n\n await this.runtime.emitEvent(\n SignalEventTypes.MESSAGE_SENT as string,\n {\n runtime: this.runtime,\n source: \"signal\",\n accountId: normalizedAccountId,\n } as EventPayload\n );\n\n return [responseMemory];\n };\n\n const messageService = getMessageService(this.runtime);\n if (messageService) {\n await messageService.handleMessage(this.runtime, memory, callback);\n }\n }\n\n private async buildMemoryFromMessage(\n msg: SignalMessage,\n accountId = this.defaultAccountId\n ): Promise<Memory | null> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const roomId = await this.getRoomId(msg.sender, msg.groupId, normalizedAccountId);\n const entityId = this.getEntityId(msg.sender, normalizedAccountId);\n\n // Get contact info for display name\n const contact = this.getCachedContact(msg.sender, normalizedAccountId);\n const displayName = contact ? getSignalContactDisplayName(contact) : msg.sender;\n\n // Extract media from attachments\n const media: Media[] = (msg.attachments || []).map((att) => ({\n id: att.id,\n url: `signal://attachment/${att.id}`,\n title: att.filename || att.id,\n source: \"signal\",\n description: att.caption || att.filename,\n contentType: att.contentType as ContentType | undefined,\n }));\n\n const memory: Memory = {\n id: createUniqueUuid(this.runtime, `signal-${msg.timestamp}`),\n agentId: this.runtime.agentId,\n roomId,\n entityId,\n content: {\n text: msg.message || \"\",\n source: \"signal\",\n name: displayName,\n ...(media.length > 0 ? { attachments: media } : {}),\n },\n metadata: {\n type: \"message\",\n source: \"signal\",\n provider: \"signal\",\n accountId: normalizedAccountId,\n timestamp: msg.timestamp,\n entityName: displayName,\n entityUserName: msg.sender,\n fromBot: false,\n fromId: msg.sender,\n sourceId: entityId,\n chatType: msg.groupId ? ChannelType.GROUP : ChannelType.DM,\n messageIdFull: String(msg.timestamp),\n sender: {\n id: msg.sender,\n name: displayName,\n username: msg.sender,\n },\n signal: {\n senderId: msg.sender,\n groupId: msg.groupId,\n timestamp: msg.timestamp,\n },\n } satisfies Memory[\"metadata\"],\n createdAt: msg.timestamp,\n };\n\n return memory;\n }\n\n private async getRoomId(\n sender: string,\n groupId?: string,\n accountId = this.defaultAccountId\n ): Promise<UUID> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const roomKey = groupId || sender;\n return createUniqueUuid(\n this.runtime,\n this.accountScopedKey(normalizedAccountId, \"room\", roomKey)\n );\n }\n\n private getEntityId(number: string, accountId = this.defaultAccountId): UUID {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n return normalizedAccountId === DEFAULT_ACCOUNT_ID\n ? stringToUuid(`signal-user-${number}`)\n : stringToUuid(`signal-user-${normalizedAccountId}-${number}`);\n }\n\n private async ensureRoomExists(\n sender: string,\n groupId?: string,\n accountId = this.defaultAccountId\n ): Promise<Room> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const roomId = await this.getRoomId(sender, groupId, normalizedAccountId);\n\n const existingRoom = await this.runtime.getRoom(roomId);\n\n const isGroup = Boolean(groupId);\n const group = groupId ? this.getCachedGroupForAccount(groupId, normalizedAccountId) : null;\n const contact = this.getCachedContact(sender, normalizedAccountId);\n const worldId = createUniqueUuid(\n this.runtime,\n normalizedAccountId === DEFAULT_ACCOUNT_ID\n ? \"signal-world\"\n : `signal-world-${normalizedAccountId}`\n );\n\n const room: Room = {\n id: roomId,\n name: isGroup\n ? group?.name || `Signal Group ${groupId}`\n : contact\n ? getSignalContactDisplayName(contact)\n : sender,\n agentId: this.runtime.agentId,\n source: \"signal\",\n type: isGroup ? ChannelType.GROUP : ChannelType.DM,\n channelId: groupId || sender,\n worldId,\n metadata: {\n ...(existingRoom?.metadata as Record<string, unknown> | undefined),\n accountId: normalizedAccountId,\n isGroup,\n groupId,\n sender,\n groupName: group?.name,\n groupDescription: group?.description,\n },\n };\n\n if (typeof this.runtime.ensureRoomExists === \"function\") {\n await this.runtime.ensureRoomExists(room);\n } else if (!existingRoom) {\n await this.runtime.createRoom(room);\n }\n\n return room;\n }\n\n async sendMessage(\n recipient: string,\n text: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n const accountId = this.normalizeAccountId(options?.accountId);\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n // signal-cli may identify senders by UUID instead of phone number.\n // Accept both UUID and E.164 formats.\n const normalizedRecipient = isValidUuid(recipient) ? recipient : normalizeE164(recipient);\n if (!normalizedRecipient) {\n throw new Error(`Invalid recipient number: ${recipient}`);\n }\n\n // Split message if too long\n const messages = this.splitMessage(text);\n let lastTimestamp = 0;\n\n for (let i = 0; i < messages.length; i++) {\n // Only send attachments/quote with the first chunk\n const chunkOptions = i === 0 ? options : undefined;\n const result = await client.sendMessage(normalizedRecipient, messages[i], chunkOptions);\n lastTimestamp = result.timestamp;\n }\n\n if (options?.record !== false) {\n await this.recordOutgoingMessage({\n accountId,\n channelId: normalizedRecipient,\n text,\n timestamp: lastTimestamp,\n isGroup: false,\n });\n }\n\n return { timestamp: lastTimestamp };\n }\n\n async sendGroupMessage(\n groupId: string,\n text: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n const accountId = this.normalizeAccountId(options?.accountId);\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n // Split message if too long\n const messages = this.splitMessage(text);\n let lastTimestamp = 0;\n\n for (let i = 0; i < messages.length; i++) {\n // Only send attachments with the first chunk\n const chunkOptions = i === 0 ? options : undefined;\n const result = await client.sendGroupMessage(groupId, messages[i], chunkOptions);\n lastTimestamp = result.timestamp;\n }\n\n if (options?.record !== false) {\n await this.recordOutgoingMessage({\n accountId,\n channelId: groupId,\n text,\n timestamp: lastTimestamp,\n isGroup: true,\n });\n }\n\n return { timestamp: lastTimestamp };\n }\n\n async sendDirectMessage(target: string, content: Content): Promise<void> {\n const text = typeof content.text === \"string\" ? content.text.trim() : \"\";\n if (!text) {\n return;\n }\n await this.sendMessage(target, text);\n }\n\n async sendRoomMessage(target: string, content: Content): Promise<void> {\n const text = typeof content.text === \"string\" ? content.text.trim() : \"\";\n if (!text) {\n return;\n }\n if (isValidGroupId(target)) {\n await this.sendGroupMessage(target, text);\n return;\n }\n await this.sendMessage(target, text);\n }\n\n private async recordOutgoingMessage(args: {\n accountId?: string;\n channelId: string;\n text: string;\n timestamp: number;\n isGroup: boolean;\n }): Promise<void> {\n const accountId = this.normalizeAccountId(args.accountId);\n const roomId = await this.getRoomId(\n args.isGroup ? this.getAccountNumberForAccount(accountId) || \"signal-agent\" : args.channelId,\n args.isGroup ? args.channelId : undefined,\n accountId\n );\n const worldId = createUniqueUuid(\n this.runtime,\n accountId === DEFAULT_ACCOUNT_ID ? \"signal-world\" : `signal-world-${accountId}`\n );\n const displayName = this.character?.name || \"Agent\";\n\n await this.runtime.ensureConnection({\n entityId: this.runtime.agentId,\n roomId,\n worldId,\n worldName: \"Signal\",\n userId: this.runtime.agentId,\n userName: displayName,\n name: displayName,\n source: \"signal\",\n type: args.isGroup ? ChannelType.GROUP : ChannelType.DM,\n channelId: args.channelId,\n metadata: {\n accountId,\n isGroup: args.isGroup,\n channelId: args.channelId,\n },\n });\n\n const memory = createMessageMemory({\n id: createUniqueUuid(this.runtime, `signal:${args.timestamp}`),\n entityId: this.runtime.agentId,\n roomId,\n content: {\n text: args.text,\n source: \"signal\",\n },\n });\n await this.runtime.createMemory(\n {\n ...memory,\n metadata: {\n ...(memory.metadata ?? {}),\n type: \"message\",\n accountId,\n source: \"signal\",\n provider: \"signal\",\n timestamp: args.timestamp,\n messageIdFull: String(args.timestamp),\n signal: {\n timestamp: args.timestamp,\n },\n } satisfies Memory[\"metadata\"],\n createdAt: args.timestamp,\n },\n \"messages\"\n );\n }\n\n async sendReaction(\n recipient: string,\n emoji: string,\n targetTimestamp: number,\n targetAuthor: string,\n accountId?: string\n ): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n await client.sendReaction(recipient, emoji, targetTimestamp, targetAuthor);\n }\n\n async removeReaction(\n recipient: string,\n emoji: string,\n targetTimestamp: number,\n targetAuthor: string,\n accountId?: string\n ): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n await client.sendReaction(recipient, emoji, targetTimestamp, targetAuthor, true);\n }\n\n async getContacts(accountId?: string): Promise<SignalContact[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const client = this.getClientForAccount(normalizedAccountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n const contacts = await client.getContacts();\n\n this.cacheContacts(normalizedAccountId, contacts);\n\n return contacts;\n }\n\n private async listConnectorContacts(accountId?: string): Promise<SignalContact[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n try {\n return await this.getContacts(normalizedAccountId);\n } catch {\n return Array.from(\n this.contactCaches.get(normalizedAccountId)?.values() ?? this.contactCache.values()\n );\n }\n }\n\n async getGroups(accountId?: string): Promise<SignalGroup[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const client = this.getClientForAccount(normalizedAccountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n const groups = await client.getGroups();\n\n this.cacheGroups(normalizedAccountId, groups);\n\n return groups;\n }\n\n private async listConnectorGroups(accountId?: string): Promise<SignalGroup[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n try {\n return await this.getGroups(normalizedAccountId);\n } catch {\n return Array.from(\n this.groupCaches.get(normalizedAccountId)?.values() ?? this.groupCache.values()\n );\n }\n }\n\n private roomMatchesAccount(room: Room, accountId: string): boolean {\n const metadata = room.metadata as Record<string, unknown> | undefined;\n const roomAccountId =\n typeof metadata?.accountId === \"string\" && metadata.accountId.trim()\n ? this.normalizeAccountId(metadata.accountId)\n : undefined;\n return roomAccountId ? roomAccountId === accountId : accountId === DEFAULT_ACCOUNT_ID;\n }\n\n private memoryMatchesAccount(memory: Memory, accountId: string): boolean {\n const metadata = memory.metadata as Record<string, unknown> | undefined;\n const memoryAccountId =\n typeof metadata?.accountId === \"string\" && metadata.accountId.trim()\n ? this.normalizeAccountId(metadata.accountId)\n : undefined;\n return memoryAccountId ? memoryAccountId === accountId : accountId === DEFAULT_ACCOUNT_ID;\n }\n\n async getRecentMessages(\n limit: number = 20,\n accountId = this.defaultAccountId\n ): Promise<SignalRecentMessage[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n if (\n typeof this.runtime.getRoomsForParticipant !== \"function\" ||\n typeof this.runtime.getMemoriesByRoomIds !== \"function\"\n ) {\n return [];\n }\n\n const requestedLimit = Number.isFinite(limit) ? Math.max(1, Math.min(limit, 100)) : 20;\n const participantRoomIds = await this.runtime.getRoomsForParticipant(this.runtime.agentId);\n\n const signalRooms: Room[] = [];\n for (const roomId of participantRoomIds) {\n const room = await this.runtime.getRoom(roomId);\n if (room?.source === \"signal\" && this.roomMatchesAccount(room, normalizedAccountId)) {\n signalRooms.push(room);\n }\n }\n\n if (signalRooms.length === 0) {\n return [];\n }\n\n const roomIds = signalRooms.map((room) => room.id);\n const roomsById = new Map(signalRooms.map((room) => [room.id, room]));\n const memories = await this.runtime.getMemoriesByRoomIds({\n tableName: \"messages\",\n roomIds,\n limit: requestedLimit * 4,\n });\n\n return memories\n .filter((memory) => memory.content?.source === \"signal\")\n .filter((memory) => this.memoryMatchesAccount(memory, normalizedAccountId))\n .filter(\n (memory) =>\n typeof memory.content?.text === \"string\" && memory.content.text.trim().length > 0\n )\n .sort((left, right) => Number(right.createdAt ?? 0) - Number(left.createdAt ?? 0))\n .slice(0, requestedLimit)\n .map((memory) => {\n const room = roomsById.get(memory.roomId);\n const isGroup =\n room?.type === ChannelType.GROUP ||\n Boolean((room?.metadata as Record<string, unknown> | undefined)?.isGroup);\n const text = String(memory.content.text ?? \"\").trim();\n const speakerName =\n memory.entityId === this.runtime.agentId\n ? this.character?.name || \"Agent\"\n : typeof memory.content.name === \"string\" && memory.content.name.trim().length > 0\n ? memory.content.name.trim()\n : room?.name || room?.channelId || \"Unknown\";\n\n return {\n id: String(memory.id),\n roomId: String(memory.roomId),\n channelId: String(room?.channelId ?? \"\"),\n roomName: room?.name || room?.channelId || \"Signal\",\n speakerName,\n text,\n createdAt: Number(memory.createdAt ?? Date.now()),\n isFromAgent: memory.entityId === this.runtime.agentId,\n isGroup,\n } satisfies SignalRecentMessage;\n });\n }\n\n private async getSignalRooms(\n channelId?: string,\n roomId?: UUID,\n accountId = this.defaultAccountId\n ): Promise<Room[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n if (roomId) {\n const room = await this.runtime.getRoom(roomId);\n return room?.source === \"signal\" && this.roomMatchesAccount(room, normalizedAccountId)\n ? [room]\n : [];\n }\n\n if (\n typeof this.runtime.getRoomsForParticipant !== \"function\" ||\n typeof this.runtime.getRoom !== \"function\"\n ) {\n return [];\n }\n\n const participantRoomIds = await this.runtime.getRoomsForParticipant(this.runtime.agentId);\n const rooms: Room[] = [];\n for (const participantRoomId of participantRoomIds) {\n const room = await this.runtime.getRoom(participantRoomId);\n if (room?.source !== \"signal\") {\n continue;\n }\n if (!this.roomMatchesAccount(room, normalizedAccountId)) {\n continue;\n }\n if (channelId && room.channelId !== channelId) {\n continue;\n }\n rooms.push(room);\n }\n return rooms;\n }\n\n async fetchConnectorMessages(\n context: MessageConnectorQueryContext,\n params: ConnectorFetchMessagesParams\n ): Promise<Memory[]> {\n if (typeof this.runtime.getMemoriesByRoomIds !== \"function\") {\n return [];\n }\n\n const target = params.target ?? context.target;\n const accountId = this.normalizeAccountId(target?.accountId ?? context.accountId);\n const channelId = params.channelId ?? target?.channelId;\n const roomId = params.roomId ?? target?.roomId;\n const rooms = await this.getSignalRooms(channelId, roomId, accountId);\n if (rooms.length === 0) {\n return [];\n }\n\n const limit = Number.isFinite(params.limit)\n ? Math.max(1, Math.min(Number(params.limit), 100))\n : 25;\n const memories = await this.runtime.getMemoriesByRoomIds({\n tableName: \"messages\",\n roomIds: rooms.map((room) => room.id),\n limit: limit * Math.max(rooms.length, 1),\n });\n const before = params.before ? Number(params.before) : undefined;\n const after = params.after ? Number(params.after) : undefined;\n\n return memories\n .filter((memory) => memory.content?.source === \"signal\")\n .filter((memory) => this.memoryMatchesAccount(memory, accountId))\n .filter((memory) => {\n const createdAt = Number(memory.createdAt ?? 0);\n if (before !== undefined && Number.isFinite(before) && createdAt >= before) {\n return false;\n }\n if (after !== undefined && Number.isFinite(after) && createdAt <= after) {\n return false;\n }\n return true;\n })\n .sort((left, right) => Number(right.createdAt ?? 0) - Number(left.createdAt ?? 0))\n .slice(0, limit);\n }\n\n async searchConnectorMessages(\n context: MessageConnectorQueryContext,\n params: ConnectorSearchMessagesParams\n ): Promise<Memory[]> {\n const query = params.query?.trim().toLowerCase();\n if (!query) {\n return [];\n }\n const memories = await this.fetchConnectorMessages(context, {\n ...params,\n limit: Math.max(params.limit ?? 100, 100),\n });\n return memories\n .filter((memory) => {\n const text = String(memory.content?.text ?? \"\").toLowerCase();\n const name = String(memory.content?.name ?? \"\").toLowerCase();\n return text.includes(query) || name.includes(query);\n })\n .slice(0, params.limit ?? 25);\n }\n\n async reactConnectorMessage(\n runtime: IAgentRuntime,\n params: ConnectorReactionParams\n ): Promise<void> {\n const target = params.target;\n const accountId = this.normalizeAccountId(target?.accountId);\n const room =\n params.roomId || target?.roomId\n ? await runtime.getRoom((params.roomId ?? target?.roomId) as UUID)\n : null;\n const recipient = params.channelId ?? target?.channelId ?? room?.channelId;\n if (!recipient) {\n throw new Error(\"Signal reaction requires a target recipient or room.\");\n }\n\n let targetTimestamp = params.targetTimestamp;\n let targetAuthor = params.targetAuthor;\n if ((!targetTimestamp || !targetAuthor) && params.messageId) {\n const memory = await runtime.getMemoryById(params.messageId as UUID).catch(() => null);\n const metadata = memory?.metadata as Record<string, unknown> | undefined;\n const sender = metadata?.sender as Record<string, unknown> | undefined;\n targetTimestamp =\n targetTimestamp ??\n Number(metadata?.messageIdFull ?? metadata?.timestamp ?? memory?.createdAt);\n targetAuthor =\n targetAuthor ??\n (typeof sender?.id === \"string\"\n ? sender.id\n : typeof metadata?.fromId === \"string\"\n ? metadata.fromId\n : undefined);\n }\n\n if (!params.emoji || !targetTimestamp || !targetAuthor) {\n throw new Error(\"Signal reaction requires emoji, targetTimestamp, and targetAuthor.\");\n }\n\n if (params.remove) {\n await this.removeReaction(recipient, params.emoji, targetTimestamp, targetAuthor, accountId);\n return;\n }\n await this.sendReaction(recipient, params.emoji, targetTimestamp, targetAuthor, accountId);\n }\n\n async getConnectorUser(\n _runtime: IAgentRuntime,\n params: ConnectorUserLookupParams\n ): Promise<unknown> {\n const lookup = params.userId ?? params.handle ?? params.username ?? params.query;\n if (!lookup) {\n return null;\n }\n const accountId = this.normalizeAccountId(params.target?.accountId);\n const contacts = await this.listConnectorContacts(accountId);\n const normalizedLookup = normalizeSignalQuery(lookup);\n const contact = contacts.find((candidate) =>\n [candidate.number, candidate.uuid, candidate.name, candidate.profileName]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .some((value) => normalizeSignalQuery(value).includes(normalizedLookup))\n );\n if (!contact) {\n return null;\n }\n const label = getSignalContactDisplayName(contact);\n return {\n id: this.getEntityId(contact.number, accountId),\n agentId: this.runtime.agentId,\n names: [label, contact.name, contact.profileName, contact.number].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0\n ),\n metadata: {\n source: \"signal\",\n accountId,\n signal: {\n accountId,\n number: contact.number,\n uuid: contact.uuid,\n blocked: contact.blocked,\n },\n },\n };\n }\n\n async getGroup(groupId: string, accountId?: string): Promise<SignalGroup | null> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const client = this.getClientForAccount(normalizedAccountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n const group = await client.getGroup(groupId);\n if (group) {\n this.cacheGroups(normalizedAccountId, [group]);\n }\n\n return group;\n }\n\n async sendTypingIndicator(recipient: string, accountId?: string): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) return;\n await client.sendTyping(recipient);\n }\n\n async stopTypingIndicator(recipient: string, accountId?: string): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) return;\n await client.sendTyping(recipient, true);\n }\n\n private splitMessage(text: string): string[] {\n if (text.length <= MAX_SIGNAL_MESSAGE_LENGTH) {\n return [text];\n }\n\n const messages: string[] = [];\n let remaining = text;\n\n while (remaining.length > 0) {\n if (remaining.length <= MAX_SIGNAL_MESSAGE_LENGTH) {\n messages.push(remaining);\n break;\n }\n\n let splitIndex = MAX_SIGNAL_MESSAGE_LENGTH;\n\n const lastNewline = remaining.lastIndexOf(\"\\n\", MAX_SIGNAL_MESSAGE_LENGTH);\n if (lastNewline > MAX_SIGNAL_MESSAGE_LENGTH / 2) {\n splitIndex = lastNewline + 1;\n } else {\n const lastSpace = remaining.lastIndexOf(\" \", MAX_SIGNAL_MESSAGE_LENGTH);\n if (lastSpace > MAX_SIGNAL_MESSAGE_LENGTH / 2) {\n splitIndex = lastSpace + 1;\n }\n }\n\n messages.push(remaining.slice(0, splitIndex));\n remaining = remaining.slice(splitIndex);\n }\n\n return messages;\n }\n\n getContact(number: string): SignalContact | null {\n return this.contactCache.get(number) || null;\n }\n\n getCachedGroup(groupId: string): SignalGroup | null {\n return this.groupCache.get(groupId) || null;\n }\n\n getAccountNumber(): string | null {\n return this.accountNumber;\n }\n\n isServiceConnected(): boolean {\n return this.isConnected;\n }\n}\n",
62
+ "import { getConnectorAccountManager, type IAgentRuntime, logger, type Plugin } from \"@elizaos/core\";\nimport { createSignalConnectorAccountProvider } from \"./connector-account-provider\";\n\n// Service\nimport { DEFAULT_SIGNAL_CLI_PATH, SignalService } from \"./service\";\n\n// Setup routes (QR pairing / disconnect)\nimport { signalSetupRoutes } from \"./setup-routes\";\n\n// Types\nimport { normalizeE164 } from \"./types\";\nimport { SignalWorkflowCredentialProvider } from \"./workflow-credential-provider\";\n\nconst signalPlugin: Plugin = {\n name: \"signal\",\n description: \"Signal messaging integration plugin for ElizaOS with end-to-end encryption\",\n services: [SignalService, SignalWorkflowCredentialProvider],\n actions: [],\n providers: [],\n routes: signalSetupRoutes,\n // Self-declared auto-enable: activate when the \"signal\" connector is\n // configured under config.connectors. The hardcoded CONNECTOR_PLUGINS map\n // in plugin-auto-enable-engine.ts still serves as a fallback.\n autoEnable: {\n connectorKeys: [\"signal\"],\n },\n init: async (_config: Record<string, string>, runtime: IAgentRuntime) => {\n // Register the Signal provider with the ConnectorAccountManager so the\n // HTTP CRUD surface (packages/agent/src/api/connector-account-routes.ts)\n // can list, create, patch, and delete Signal accounts.\n try {\n const manager = getConnectorAccountManager(runtime);\n manager.registerProvider(createSignalConnectorAccountProvider(runtime));\n } catch (err) {\n logger.warn(\n {\n src: \"plugin:signal\",\n err: err instanceof Error ? err.message : String(err),\n },\n \"Failed to register Signal provider with ConnectorAccountManager\"\n );\n }\n\n const accountNumber = runtime.getSetting(\"SIGNAL_ACCOUNT_NUMBER\") as string;\n const httpUrl = runtime.getSetting(\"SIGNAL_HTTP_URL\") as string;\n const cliPath = runtime.getSetting(\"SIGNAL_CLI_PATH\") as string;\n const effectiveCliPath = cliPath.trim() || DEFAULT_SIGNAL_CLI_PATH;\n const ignoreGroups = runtime.getSetting(\"SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES\") as string;\n\n // Log configuration status\n const maskNumber = (number: string | undefined): string => {\n if (!number || number.trim() === \"\") return \"[not set]\";\n if (number.length <= 6) return \"***\";\n return `${number.slice(0, 3)}...${number.slice(-2)}`;\n };\n\n logger.info(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n settings: {\n accountNumber: maskNumber(accountNumber),\n httpUrl: httpUrl || \"[not set]\",\n cliPath: cliPath ? cliPath : `[default: ${DEFAULT_SIGNAL_CLI_PATH}]`,\n ignoreGroups: ignoreGroups || \"false\",\n },\n },\n \"Signal plugin initializing\"\n );\n\n if (!accountNumber || accountNumber.trim() === \"\") {\n logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId },\n \"SIGNAL_ACCOUNT_NUMBER not provided - Signal plugin is loaded but will not be functional\"\n );\n return;\n }\n\n const normalizedNumber = normalizeE164(accountNumber);\n if (!normalizedNumber) {\n logger.error(\n { src: \"plugin:signal\", agentId: runtime.agentId, accountNumber },\n \"SIGNAL_ACCOUNT_NUMBER is not a valid E.164 phone number\"\n );\n return;\n }\n\n // When neither SIGNAL_HTTP_URL nor SIGNAL_CLI_PATH is set explicitly, we\n // fall back to the default local signal-cli binary (name resolved via\n // PATH + Homebrew/common paths at service start). No warning here — the\n // service will surface a clearer error if signal-cli isn't actually\n // available on the host.\n logger.info(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n mode: httpUrl ? \"http\" : \"local-cli\",\n cliPath: effectiveCliPath,\n },\n \"Signal plugin configuration validated successfully\"\n );\n },\n async dispose(runtime: IAgentRuntime) {\n const svc = runtime.getService<SignalService>(SignalService.serviceType);\n await svc?.stop();\n },\n};\n\nexport default signalPlugin;\n\n// Account management exports\nexport {\n DEFAULT_ACCOUNT_ID,\n isMultiAccountEnabled,\n listEnabledSignalAccounts,\n listSignalAccountIds,\n normalizeAccountId,\n type ResolvedSignalAccount,\n resolveDefaultSignalAccountId,\n resolveSignalAccount,\n type SignalAccountConfig,\n type SignalDmConfig,\n type SignalGroupConfig,\n type SignalMultiAccountConfig,\n type SignalReactionNotificationMode,\n} from \"./accounts\";\n// Channel configuration types\nexport type {\n SignalActionConfig,\n SignalConfig,\n SignalReactionLevel,\n} from \"./config\";\n// ConnectorAccountManager provider exports\nexport {\n createSignalConnectorAccountProvider,\n SIGNAL_PROVIDER_ID,\n} from \"./connector-account-provider\";\n// Pairing service (device linking via QR code / signal-cli)\nexport {\n classifySignalPairingErrorStatus,\n extractSignalCliProvisioningUrl,\n parseSignalCliAccountsOutput,\n type SignalPairingEvent,\n type SignalPairingOptions,\n SignalPairingSession,\n type SignalPairingSnapshot,\n type SignalPairingStatus,\n sanitizeAccountId as sanitizeSignalAccountId,\n signalAuthExists,\n signalLogout,\n} from \"./pairing-service\";\n// RPC client exports\nexport {\n createSignalEventStream,\n normalizeBaseUrl,\n parseSignalEventData,\n type SignalCheckResult,\n type SignalRpcError,\n type SignalRpcOptions,\n type SignalRpcResponse,\n type SignalSseEvent,\n signalCheck,\n signalGetVersion,\n signalListAccounts,\n signalListContacts,\n signalListGroups,\n signalRpcRequest,\n signalSend,\n signalSendReaction,\n signalSendReadReceipt,\n signalSendTyping,\n streamSignalEvents,\n} from \"./rpc\";\n// Export service for direct access\nexport { SignalService } from \"./service\";\n// Setup routes (QR pairing / disconnect)\nexport { applySignalQrOverride, signalSetupRoutes } from \"./setup-routes\";\n// Export types\nexport type {\n ISignalService,\n SignalAttachment,\n SignalContact,\n SignalEventPayloadMap,\n SignalGroup,\n SignalGroupMember,\n SignalMessage,\n SignalMessageReceivedPayload,\n SignalMessageSendOptions,\n SignalMessageSentPayload,\n SignalQuote,\n SignalReactionInfo,\n SignalReactionPayload,\n SignalRecentMessage,\n SignalSettings,\n} from \"./types\";\nexport {\n getSignalContactDisplayName,\n isValidE164,\n isValidGroupId,\n isValidUuid,\n MAX_SIGNAL_ATTACHMENT_SIZE,\n MAX_SIGNAL_MESSAGE_LENGTH,\n normalizeE164,\n SIGNAL_SERVICE_NAME,\n SignalApiError,\n SignalClientNotAvailableError,\n SignalConfigurationError,\n SignalEventTypes,\n SignalPluginError,\n SignalServiceNotInitializedError,\n} from \"./types\";\nexport {\n readSignalInboundMessages,\n readSignalLocalClientConfigFromEnv,\n type SignalLocalClientConfig,\n} from \"./local-client\";\n",
63
+ "import type { IAgentRuntime } from \"@elizaos/core\";\n\n/**\n * Default account identifier used when no specific account is configured\n */\nexport const DEFAULT_ACCOUNT_ID = \"default\";\n\n/**\n * DM-specific configuration\n */\nexport interface SignalDmConfig {\n /** If false, ignore all incoming Signal DMs */\n enabled?: boolean;\n /** Direct message access policy */\n policy?: \"open\" | \"disabled\" | \"allowlist\" | \"pairing\";\n /** Allowlist for DM senders (phone numbers or UUIDs) */\n allowFrom?: Array<string | number>;\n}\n\n/**\n * Group-specific configuration\n */\nexport interface SignalGroupConfig {\n /** If false, ignore all group messages */\n enabled?: boolean;\n /** Group message access policy */\n policy?: \"open\" | \"disabled\" | \"allowlist\";\n /** Require bot mention to respond in groups */\n requireMention?: boolean;\n /** Allowlist for groups (IDs or names) */\n allowFrom?: Array<string | number>;\n}\n\n/**\n * Reaction notification mode\n */\nexport type SignalReactionNotificationMode = \"off\" | \"own\" | \"all\" | \"allowlist\";\n\n/**\n * Configuration for a single Signal account\n */\nexport interface SignalAccountConfig {\n /** Optional display name for this account */\n name?: string;\n /** If false, do not start this Signal account */\n enabled?: boolean;\n /** Signal account phone number in E.164 format */\n account?: string;\n /** Signal CLI HTTP server URL */\n httpUrl?: string;\n /** Signal CLI auth/data directory */\n authDir?: string;\n /** Signal CLI HTTP server host */\n httpHost?: string;\n /** Signal CLI HTTP server port */\n httpPort?: number;\n /** Path to signal-cli binary */\n cliPath?: string;\n /** Auto-start signal-cli daemon if not running */\n autoStart?: boolean;\n /** Outbound text chunk size (chars) */\n textChunkLimit?: number;\n /** History limit for context */\n historyLimit?: number;\n /** Reaction notification mode */\n reactionNotifications?: SignalReactionNotificationMode;\n /** Reaction allowlist when mode is 'allowlist' */\n reactionAllowlist?: Array<string | number>;\n /** DM configuration */\n dm?: SignalDmConfig;\n /** Group configuration */\n group?: SignalGroupConfig;\n /** Whether to ignore group messages */\n shouldIgnoreGroupMessages?: boolean;\n /** Allowed groups */\n allowedGroups?: string[];\n /** Blocked numbers */\n blockedNumbers?: string[];\n}\n\n/**\n * Multi-account Signal configuration structure\n */\nexport interface SignalMultiAccountConfig {\n /** Default/base configuration applied to all accounts */\n enabled?: boolean;\n account?: string;\n httpUrl?: string;\n authDir?: string;\n /** Per-account configuration overrides */\n accounts?: Record<string, SignalAccountConfig>;\n}\n\n/**\n * Resolved Signal account with all configuration merged\n */\nexport interface ResolvedSignalAccount {\n accountId: string;\n enabled: boolean;\n name?: string;\n account?: string;\n baseUrl: string;\n configured: boolean;\n config: SignalAccountConfig;\n}\n\n/**\n * Normalizes an account ID, returning the default if not provided\n */\nexport function normalizeAccountId(accountId?: string | null): string {\n if (!accountId || typeof accountId !== \"string\") {\n return DEFAULT_ACCOUNT_ID;\n }\n const trimmed = accountId.trim().toLowerCase();\n return trimmed || DEFAULT_ACCOUNT_ID;\n}\n\n/**\n * Gets the account configuration records from runtime settings\n */\nfunction getMultiAccountConfig(runtime: IAgentRuntime): SignalMultiAccountConfig {\n const characterSignal = runtime.character.settings?.signal as\n | SignalMultiAccountConfig\n | undefined;\n\n return {\n enabled: characterSignal?.enabled,\n account: characterSignal?.account,\n httpUrl: characterSignal?.httpUrl,\n authDir: characterSignal?.authDir,\n accounts: characterSignal?.accounts,\n };\n}\n\n/**\n * Lists all configured account IDs\n */\nexport function listSignalAccountIds(runtime: IAgentRuntime): string[] {\n const config = getMultiAccountConfig(runtime);\n const accounts = config.accounts;\n\n if (!accounts || typeof accounts !== \"object\") {\n return [DEFAULT_ACCOUNT_ID];\n }\n\n const ids = Object.keys(accounts).filter(Boolean);\n if (ids.length === 0) {\n return [DEFAULT_ACCOUNT_ID];\n }\n\n return [...ids].sort((a: string, b: string) => a.localeCompare(b));\n}\n\n/**\n * Resolves the default account ID to use\n */\nexport function resolveDefaultSignalAccountId(runtime: IAgentRuntime): string {\n const ids = listSignalAccountIds(runtime);\n if (ids.includes(DEFAULT_ACCOUNT_ID)) {\n return DEFAULT_ACCOUNT_ID;\n }\n return ids[0] ?? DEFAULT_ACCOUNT_ID;\n}\n\n/**\n * Gets the account-specific configuration\n */\nfunction getAccountConfig(\n runtime: IAgentRuntime,\n accountId: string\n): SignalAccountConfig | undefined {\n const config = getMultiAccountConfig(runtime);\n const accounts = config.accounts;\n\n if (!accounts || typeof accounts !== \"object\") {\n return undefined;\n }\n\n return accounts[accountId];\n}\n\n/**\n * Removes undefined values from an object to prevent them from overwriting during spread\n */\nfunction filterDefined<T extends object>(obj: T): Partial<T> {\n return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined)) as Partial<T>;\n}\n\n/**\n * Merges base configuration with account-specific overrides\n */\nfunction mergeSignalAccountConfig(runtime: IAgentRuntime, accountId: string): SignalAccountConfig {\n const multiConfig = getMultiAccountConfig(runtime);\n const { accounts: _ignored, ...baseConfig } = multiConfig;\n const accountConfig = getAccountConfig(runtime, accountId) ?? {};\n\n // Get environment/runtime settings for the base config\n const envAccount = runtime.getSetting(\"SIGNAL_ACCOUNT_NUMBER\") as string | undefined;\n const envHttpUrl = runtime.getSetting(\"SIGNAL_HTTP_URL\") as string | undefined;\n const envAuthDir = runtime.getSetting(\"SIGNAL_AUTH_DIR\") as string | undefined;\n const envCliPath = runtime.getSetting(\"SIGNAL_CLI_PATH\") as string | undefined;\n const envIgnoreGroups = runtime.getSetting(\"SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES\") as\n | string\n | undefined;\n\n const envConfig: SignalAccountConfig = {\n account: envAccount || undefined,\n httpUrl: envHttpUrl || undefined,\n authDir: envAuthDir || undefined,\n cliPath: envCliPath || undefined,\n shouldIgnoreGroupMessages: envIgnoreGroups?.toLowerCase() === \"true\",\n };\n\n // Merge order: env defaults < base config < account config\n // Filter undefined values to prevent them from overwriting defined values\n return {\n ...filterDefined(envConfig),\n ...filterDefined(baseConfig),\n ...filterDefined(accountConfig),\n };\n}\n\n/**\n * Resolves the base URL for Signal CLI HTTP server\n */\nfunction resolveBaseUrl(config: SignalAccountConfig): string {\n if (config.httpUrl?.trim()) {\n return config.httpUrl.trim().replace(/\\/+$/, \"\");\n }\n const host = config.httpHost?.trim() || \"127.0.0.1\";\n const port = config.httpPort ?? 8080;\n return `http://${host}:${port}`;\n}\n\n/**\n * Resolves a complete Signal account configuration\n */\nexport function resolveSignalAccount(\n runtime: IAgentRuntime,\n accountId?: string | null\n): ResolvedSignalAccount {\n const normalizedAccountId = normalizeAccountId(accountId);\n const multiConfig = getMultiAccountConfig(runtime);\n\n const baseEnabled = multiConfig.enabled !== false;\n const merged = mergeSignalAccountConfig(runtime, normalizedAccountId);\n const accountEnabled = merged.enabled !== false;\n const enabled = baseEnabled && accountEnabled;\n\n const baseUrl = resolveBaseUrl(merged);\n\n // Determine if this account is actually configured\n const configured = Boolean(\n merged.account?.trim() ||\n merged.httpUrl?.trim() ||\n merged.cliPath?.trim() ||\n merged.httpHost?.trim() ||\n typeof merged.httpPort === \"number\" ||\n typeof merged.autoStart === \"boolean\"\n );\n\n return {\n accountId: normalizedAccountId,\n enabled,\n name: merged.name?.trim() || undefined,\n account: merged.account?.trim(),\n baseUrl,\n configured,\n config: merged,\n };\n}\n\n/**\n * Lists all enabled Signal accounts\n */\nexport function listEnabledSignalAccounts(runtime: IAgentRuntime): ResolvedSignalAccount[] {\n return listSignalAccountIds(runtime)\n .map((accountId) => resolveSignalAccount(runtime, accountId))\n .filter((account) => account.enabled && account.configured);\n}\n\n/**\n * Checks whether more than one enabled account is configured\n */\nexport function isMultiAccountEnabled(runtime: IAgentRuntime): boolean {\n const accounts = listEnabledSignalAccounts(runtime);\n return accounts.length > 1;\n}\n",
64
+ "/**\n * Signal ConnectorAccountManager provider.\n *\n * Adapts the existing multi-account scaffolding in `accounts.ts` to the\n * `ConnectorAccountProvider` contract from\n * `@elizaos/core/connectors/account-manager`.\n *\n * Source of truth for accounts is character settings (`character.settings.signal`)\n * plus env-var fallbacks (SIGNAL_ACCOUNT_NUMBER, SIGNAL_HTTP_URL, SIGNAL_CLI_PATH).\n * Single-account env-only deployments still surface as a `default` account.\n *\n * Signal pairing happens out of band via signal-cli device link / QR code (see\n * `pairing-service.ts` + `setup-routes.ts`); there is no OAuth flow.\n */\n\nimport type {\n ConnectorAccount,\n ConnectorAccountManager,\n ConnectorAccountPatch,\n ConnectorAccountProvider,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport {\n DEFAULT_ACCOUNT_ID,\n listEnabledSignalAccounts,\n normalizeAccountId,\n type ResolvedSignalAccount,\n resolveSignalAccount,\n} from \"./accounts\";\n\nexport const SIGNAL_PROVIDER_ID = \"signal\";\n\nfunction purposeForAccount(_account: ResolvedSignalAccount): string[] {\n return [\"messaging\"];\n}\n\nfunction accessGateForAccount(account: ResolvedSignalAccount): string {\n // Signal numbers are owner-paired via signal-cli device link.\n const dmPolicy = account.config.dm?.policy;\n if (dmPolicy === \"disabled\") return \"disabled\";\n if (dmPolicy === \"pairing\") return \"pairing\";\n // Default: device link is itself a pairing operation, so treat as pairing.\n return \"pairing\";\n}\n\nfunction roleForAccount(_account: ResolvedSignalAccount): \"OWNER\" | \"AGENT\" {\n // Signal accounts are linked to a real phone number owned by the user.\n return \"OWNER\";\n}\n\nfunction toConnectorAccount(account: ResolvedSignalAccount): ConnectorAccount {\n const now = Date.now();\n return {\n id: normalizeAccountId(account.accountId),\n provider: SIGNAL_PROVIDER_ID,\n label: account.name ?? account.account ?? account.accountId,\n role: roleForAccount(account),\n purpose: purposeForAccount(account),\n accessGate: accessGateForAccount(account),\n status: account.enabled && account.configured ? \"connected\" : \"disabled\",\n externalId: account.account,\n displayHandle: account.account,\n createdAt: now,\n updatedAt: now,\n metadata: {\n phoneNumber: account.account,\n baseUrl: account.baseUrl,\n dmPolicy: account.config.dm?.policy ?? \"pairing\",\n groupPolicy: account.config.group?.policy ?? \"open\",\n },\n };\n}\n\nexport function createSignalConnectorAccountProvider(\n runtime: IAgentRuntime\n): ConnectorAccountProvider {\n return {\n provider: SIGNAL_PROVIDER_ID,\n label: \"Signal\",\n listAccounts: async (_manager: ConnectorAccountManager): Promise<ConnectorAccount[]> => {\n const enabled = listEnabledSignalAccounts(runtime);\n if (enabled.length > 0) {\n return enabled.map(toConnectorAccount);\n }\n const fallback = resolveSignalAccount(runtime, DEFAULT_ACCOUNT_ID);\n return [toConnectorAccount(fallback)];\n },\n createAccount: async (input: ConnectorAccountPatch, _manager: ConnectorAccountManager) => {\n return {\n ...input,\n provider: SIGNAL_PROVIDER_ID,\n role: input.role ?? \"OWNER\",\n purpose: input.purpose ?? [\"messaging\"],\n accessGate: input.accessGate ?? \"pairing\",\n status: input.status ?? \"pending\",\n };\n },\n patchAccount: async (\n _accountId: string,\n patch: ConnectorAccountPatch,\n _manager: ConnectorAccountManager\n ) => {\n return { ...patch, provider: SIGNAL_PROVIDER_ID };\n },\n deleteAccount: async (_accountId: string, _manager: ConnectorAccountManager) => {\n // Persistent credentials for Signal live in signal-cli auth dir;\n // unlinking happens via `signalLogout`. Deletion at the manager layer is\n // only a connector-manager account marker.\n },\n // Signal uses device-link pairing (QR code via signal-cli), not OAuth.\n // startOAuth/completeOAuth intentionally omitted.\n };\n}\n",
65
+ "import { type ChildProcess, spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport {\n ChannelType,\n type Character,\n type Content,\n type ContentType,\n createMessageMemory,\n createUniqueUuid,\n type EventPayload,\n EventType,\n type HandlerCallback,\n type IAgentRuntime,\n type IMessageService,\n lifeOpsPassiveConnectorsEnabled,\n type Media,\n type Memory,\n type MessageConnectorChatContext,\n type MessageConnectorQueryContext,\n type MessageConnectorTarget,\n type MessageConnectorUserContext,\n type Room,\n Service,\n stringToUuid,\n type TargetInfo,\n type UUID,\n} from \"@elizaos/core\";\nimport {\n DEFAULT_ACCOUNT_ID,\n listEnabledSignalAccounts,\n normalizeAccountId as normalizeSignalAccountId,\n type ResolvedSignalAccount,\n resolveDefaultSignalAccountId,\n} from \"./accounts\";\nimport {\n createSignalEventStream,\n parseSignalEventData,\n signalCheck,\n signalListContacts,\n signalListGroups,\n signalRpcRequest,\n signalSend,\n signalSendReaction,\n signalSendTyping,\n} from \"./rpc\";\n\ntype MessageService = Pick<IMessageService, \"handleMessage\">;\ntype MessageConnectorRegistration = Parameters<IAgentRuntime[\"registerMessageConnector\"]>[0];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\ntype ConnectorFetchMessagesParams = {\n target?: TargetInfo;\n limit?: number;\n before?: string;\n after?: string;\n channelId?: string;\n roomId?: UUID;\n};\n\ntype ConnectorSearchMessagesParams = ConnectorFetchMessagesParams & {\n query?: string;\n};\n\ntype ConnectorReactionParams = {\n target?: TargetInfo;\n channelId?: string;\n roomId?: UUID;\n messageId?: string;\n targetTimestamp?: number;\n targetAuthor?: string;\n emoji?: string;\n remove?: boolean;\n};\n\ntype ConnectorUserLookupParams = {\n userId?: string;\n username?: string;\n handle?: string;\n query?: string;\n target?: TargetInfo;\n};\n\ntype SignalStartupConfig = {\n defaultAuthDir: string;\n configuredCliPath: string;\n startupTimeoutMs: number;\n};\n\ntype SignalReactionTarget = {\n recipient: string;\n accountId: string;\n targetTimestamp: number;\n targetAuthor: string;\n};\n\ntype ExtendedMessageConnectorRegistration = MessageConnectorRegistration & {\n fetchMessages?: (\n context: MessageConnectorQueryContext,\n params: ConnectorFetchMessagesParams\n ) => Promise<Memory[]>;\n searchMessages?: (\n context: MessageConnectorQueryContext,\n params: ConnectorSearchMessagesParams\n ) => Promise<Memory[]>;\n reactHandler?: (runtime: IAgentRuntime, params: ConnectorReactionParams) => Promise<void>;\n getUser?: (runtime: IAgentRuntime, params: ConnectorUserLookupParams) => Promise<unknown>;\n};\n\nconst getMessageService = (runtime: IAgentRuntime): MessageService | null => {\n if (\"messageService\" in runtime) {\n const withMessageService = runtime as IAgentRuntime & {\n messageService?: MessageService | null;\n };\n return withMessageService.messageService ?? null;\n }\n return null;\n};\n\nfunction normalizeSignalQuery(query: string): string {\n return query.trim().toLowerCase();\n}\n\nfunction scoreSignalCandidate(values: Array<string | undefined>, query: string): number {\n const normalized = normalizeSignalQuery(query);\n if (!normalized) {\n return 0.4;\n }\n\n const candidates = values\n .filter((value): value is string => typeof value === \"string\" && value.trim().length > 0)\n .map((value) => value.trim().toLowerCase());\n\n if (candidates.some((candidate) => candidate === normalized)) {\n return 1;\n }\n if (candidates.some((candidate) => candidate.includes(normalized))) {\n return 0.85;\n }\n\n const digits = normalized.replace(/\\D/g, \"\");\n if (digits && candidates.some((candidate) => candidate.replace(/\\D/g, \"\").includes(digits))) {\n return 0.8;\n }\n\n return 0;\n}\n\nfunction signalContactToConnectorTarget(\n contact: SignalContact,\n accountId: string,\n score = 0.5\n): MessageConnectorTarget {\n const label = getSignalContactDisplayName(contact);\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId,\n channelId: contact.number,\n entityId: stringToUuid(`signal-user-${contact.number}`),\n },\n label,\n kind: \"contact\",\n description: contact.blocked ? \"Blocked Signal contact\" : \"Signal contact\",\n score,\n contexts: [\"social\", \"connectors\"],\n metadata: {\n accountId,\n number: contact.number,\n uuid: contact.uuid,\n blocked: contact.blocked,\n },\n };\n}\n\nfunction signalGroupToConnectorTarget(\n group: SignalGroup,\n accountId: string,\n score = 0.5\n): MessageConnectorTarget {\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId,\n channelId: group.id,\n },\n label: group.name || `Signal Group ${group.id}`,\n kind: \"group\",\n description:\n group.description ||\n `${group.members.length} Signal member${group.members.length === 1 ? \"\" : \"s\"}`,\n score,\n contexts: [\"social\", \"connectors\"],\n metadata: {\n accountId,\n groupId: group.id,\n isMember: group.isMember,\n isBlocked: group.isBlocked,\n memberCount: group.members.length,\n },\n };\n}\n\nfunction signalRecentToConnectorTarget(\n recent: SignalRecentMessage,\n accountId: string,\n score = 0.55\n): MessageConnectorTarget {\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId,\n roomId: recent.roomId as UUID,\n channelId: recent.channelId,\n },\n label: recent.roomName,\n kind: recent.isGroup ? \"group\" : \"contact\",\n description: `${recent.speakerName}: ${recent.text.slice(0, 120)}`,\n score,\n contexts: [\"social\", \"connectors\"],\n metadata: {\n accountId,\n recentMessageId: recent.id,\n isGroup: recent.isGroup,\n createdAt: recent.createdAt,\n },\n };\n}\n\nimport { missingSignalCliMessage, resolveSignalCliExecutable } from \"./pairing-service\";\nimport {\n getSignalContactDisplayName,\n type ISignalService,\n isValidGroupId,\n isValidUuid,\n MAX_SIGNAL_MESSAGE_LENGTH,\n normalizeE164,\n SIGNAL_SERVICE_NAME,\n type SignalAttachment,\n type SignalContact,\n SignalEventTypes,\n type SignalGroup,\n type SignalMessage,\n type SignalMessageSendOptions,\n type SignalQuote,\n type SignalReactionInfo,\n type SignalRecentMessage,\n type SignalSettings,\n} from \"./types\";\n\nconst DEFAULT_SIGNAL_DAEMON_STARTUP_TIMEOUT_MS = 30_000;\nexport const DEFAULT_SIGNAL_CLI_PATH = \"signal-cli\";\nconst BREW_OPENJDK_HOME = \"/opt/homebrew/opt/openjdk\";\n\n/**\n * signal-cli uses `$HOME/.local/share/signal-cli` as its default data\n * directory on every platform (the XDG path is hardcoded in signal-cli —\n * it does not honour `Library/Application Support` on macOS). Matching\n * that default here means a locally-installed signal-cli + a user who\n * ran `signal-cli -a +1555… link` once will \"just work\" — no config\n * needed beyond `SIGNAL_ACCOUNT_NUMBER`.\n *\n * Override with `SIGNAL_AUTH_DIR` to point at a custom install.\n */\nfunction defaultSignalAuthDir(): string {\n const home = os.homedir();\n return path.join(home, \".local\", \"share\", \"signal-cli\");\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction normalizeBaseUrl(url: string): string {\n return url.trim().replace(/\\/+$/, \"\");\n}\n\nfunction buildSignalCliEnv(): NodeJS.ProcessEnv {\n const env = { ...process.env };\n const javaHome =\n (fs.existsSync(BREW_OPENJDK_HOME) ? BREW_OPENJDK_HOME : null) ||\n (typeof env.JAVA_HOME === \"string\" && env.JAVA_HOME.trim().length > 0\n ? env.JAVA_HOME.trim()\n : null);\n\n if (javaHome) {\n env.JAVA_HOME = javaHome;\n const javaBin = path.join(javaHome, \"bin\");\n env.PATH = env.PATH ? `${javaBin}:${env.PATH}` : javaBin;\n }\n\n return env;\n}\n\n/**\n * Signal API client for HTTP API mode\n */\nclass SignalApiClient {\n constructor(\n public readonly baseUrl: string,\n public readonly accountNumber: string\n ) {}\n\n private rpcOptions(timeoutMs?: number): {\n baseUrl: string;\n timeoutMs?: number;\n } {\n return timeoutMs ? { baseUrl: this.baseUrl, timeoutMs } : { baseUrl: this.baseUrl };\n }\n\n async sendMessage(\n recipient: string,\n message: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n return signalSend(\n {\n account: this.accountNumber,\n recipients: [recipient],\n message,\n ...(options?.attachments ? { attachments: options.attachments } : {}),\n ...(options?.quote ? { quote: options.quote } : {}),\n },\n this.rpcOptions()\n );\n }\n\n async sendGroupMessage(\n groupId: string,\n message: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n return signalSend(\n {\n account: this.accountNumber,\n groupId,\n message,\n ...(options?.attachments ? { attachments: options.attachments } : {}),\n },\n this.rpcOptions()\n );\n }\n\n async sendReaction(\n recipient: string,\n emoji: string,\n targetTimestamp: number,\n targetAuthor: string,\n remove = false\n ): Promise<void> {\n await signalSendReaction(\n {\n account: this.accountNumber,\n recipient,\n emoji,\n targetAuthor,\n targetTimestamp,\n remove,\n },\n this.rpcOptions()\n );\n }\n\n async getContacts(): Promise<SignalContact[]> {\n return signalListContacts(this.accountNumber, this.rpcOptions()) as Promise<SignalContact[]>;\n }\n\n async getGroups(): Promise<SignalGroup[]> {\n return signalListGroups(this.accountNumber, this.rpcOptions()) as Promise<SignalGroup[]>;\n }\n\n async getGroup(groupId: string): Promise<SignalGroup | null> {\n const groups = await this.getGroups();\n return groups.find((g) => g.id === groupId) || null;\n }\n\n async receive(): Promise<Record<string, unknown>[]> {\n return signalRpcRequest<Record<string, unknown>[]>(\n \"receive\",\n { account: this.accountNumber },\n this.rpcOptions(1_500)\n ).catch((error) => {\n if (error instanceof Error && error.name === \"AbortError\") {\n return [];\n }\n throw error;\n });\n }\n\n async sendTyping(recipient: string, stop = false): Promise<void> {\n await signalSendTyping(\n {\n account: this.accountNumber,\n recipient,\n stop,\n },\n this.rpcOptions()\n );\n }\n\n async setProfile(name: string, about?: string): Promise<void> {\n await signalRpcRequest(\n \"setProfile\",\n {\n account: this.accountNumber,\n name,\n about: about || \"\",\n },\n this.rpcOptions()\n );\n }\n\n async getIdentities(): Promise<\n Array<{ number: string; safety_number: string; trust_level: string }>\n > {\n return signalRpcRequest(\"listIdentities\", { account: this.accountNumber }, this.rpcOptions());\n }\n\n async trustIdentity(\n number: string,\n trustLevel: \"TRUSTED_VERIFIED\" | \"TRUSTED_UNVERIFIED\" | \"UNTRUSTED\"\n ): Promise<void> {\n await signalRpcRequest(\n \"trustIdentity\",\n {\n account: this.accountNumber,\n number,\n trustLevel,\n },\n this.rpcOptions()\n );\n }\n}\n\n/**\n * SignalService class for interacting with Signal via HTTP API or CLI\n */\nexport class SignalService extends Service implements ISignalService {\n static serviceType: string = SIGNAL_SERVICE_NAME;\n capabilityDescription = \"The agent is able to send and receive messages on Signal\";\n\n async stop(): Promise<void> {\n await this.shutdown();\n }\n\n character: Character;\n accountNumber: string | null = null;\n isConnected = false;\n\n private defaultAccountId = DEFAULT_ACCOUNT_ID;\n private accountNumbers: Map<string, string> = new Map();\n private clients: Map<string, SignalApiClient> = new Map();\n private client: SignalApiClient | null = null;\n private settings: SignalSettings;\n private contactCache: Map<string, SignalContact> = new Map();\n private contactCaches: Map<string, Map<string, SignalContact>> = new Map();\n private groupCache: Map<string, SignalGroup> = new Map();\n private groupCaches: Map<string, Map<string, SignalGroup>> = new Map();\n private pollInterval: NodeJS.Timeout | null = null;\n private eventStream: ReturnType<typeof createSignalEventStream> | null = null;\n private eventStreams: Map<string, ReturnType<typeof createSignalEventStream>> = new Map();\n private isPolling = false;\n private daemonProcess: ChildProcess | null = null;\n\n constructor(runtime?: IAgentRuntime) {\n super(runtime);\n if (runtime) {\n this.character = runtime.character;\n this.settings = this.loadSettings();\n } else {\n this.character = {} as Character;\n this.settings = {\n shouldIgnoreGroupMessages: false,\n allowedGroups: undefined,\n blockedNumbers: undefined,\n autoReply: false,\n receiveMode: \"manual\",\n };\n }\n }\n\n private loadSettings(): SignalSettings {\n const ignoreGroups = this.runtime.getSetting(\"SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES\");\n const autoReply = this.runtime.getSetting(\"SIGNAL_AUTO_REPLY\");\n const receiveMode = this.runtime.getSetting(\"SIGNAL_RECEIVE_MODE\");\n\n return {\n shouldIgnoreGroupMessages: ignoreGroups === \"true\" || ignoreGroups === true,\n allowedGroups: undefined,\n blockedNumbers: undefined,\n autoReply:\n !lifeOpsPassiveConnectorsEnabled(this.runtime) &&\n (autoReply === \"true\" || autoReply === true),\n receiveMode: receiveMode === \"on-start\" ? \"on-start\" : \"manual\",\n };\n }\n\n private normalizeAccountId(accountId?: string | null): string {\n return normalizeSignalAccountId(accountId ?? this.defaultAccountId);\n }\n\n private getConnectorAccountIds(): string[] {\n const ids = this.clients instanceof Map ? Array.from(this.clients.keys()) : [];\n if (ids.length > 0) {\n return ids;\n }\n return [this.defaultAccountId];\n }\n\n private getClientForAccount(accountId?: string | null): SignalApiClient | null {\n const normalized = this.normalizeAccountId(accountId);\n return (\n (this.clients instanceof Map ? this.clients.get(normalized) : null) ??\n (normalized === this.defaultAccountId ? this.client : null)\n );\n }\n\n private getAccountNumberForAccount(accountId?: string | null): string | null {\n const normalized = this.normalizeAccountId(accountId);\n return (\n (this.accountNumbers instanceof Map ? this.accountNumbers.get(normalized) : null) ??\n (normalized === this.defaultAccountId ? this.accountNumber : null)\n );\n }\n\n private cacheContacts(accountId: string, contacts: SignalContact[]): void {\n const accountCache = this.contactCaches.get(accountId) ?? new Map<string, SignalContact>();\n for (const contact of contacts) {\n accountCache.set(contact.number, contact);\n if (accountId === this.defaultAccountId) {\n this.contactCache.set(contact.number, contact);\n }\n }\n this.contactCaches.set(accountId, accountCache);\n }\n\n private cacheGroups(accountId: string, groups: SignalGroup[]): void {\n const accountCache = this.groupCaches.get(accountId) ?? new Map<string, SignalGroup>();\n for (const group of groups) {\n accountCache.set(group.id, group);\n if (accountId === this.defaultAccountId) {\n this.groupCache.set(group.id, group);\n }\n }\n this.groupCaches.set(accountId, accountCache);\n }\n\n private getCachedContact(number: string, accountId?: string | null): SignalContact | undefined {\n const normalized = this.normalizeAccountId(accountId);\n return this.contactCaches.get(normalized)?.get(number) ?? this.contactCache.get(number);\n }\n\n private getCachedGroupForAccount(\n groupId: string,\n accountId?: string | null\n ): SignalGroup | undefined {\n const normalized = this.normalizeAccountId(accountId);\n return this.groupCaches.get(normalized)?.get(groupId) ?? this.groupCache.get(groupId);\n }\n\n private accountScopedKey(accountId: string, kind: string, value: string): string {\n return accountId === DEFAULT_ACCOUNT_ID\n ? `signal-${kind}-${value}`\n : `signal-${kind}-${accountId}-${value}`;\n }\n\n private static resolveStartupConfig(runtime: IAgentRuntime): SignalStartupConfig {\n const rawAuthDir = runtime.getSetting(\"SIGNAL_AUTH_DIR\") as string | undefined;\n const defaultAuthDir =\n typeof rawAuthDir === \"string\" && rawAuthDir.trim().length > 0\n ? rawAuthDir.trim()\n : defaultSignalAuthDir();\n const configuredCliPath =\n (runtime.getSetting(\"SIGNAL_CLI_PATH\") as string | undefined) || DEFAULT_SIGNAL_CLI_PATH;\n const parsedStartupTimeout = Number.parseInt(\n String(runtime.getSetting(\"SIGNAL_STARTUP_TIMEOUT_MS\") ?? \"\"),\n 10\n );\n const startupTimeoutMs =\n Number.isFinite(parsedStartupTimeout) && parsedStartupTimeout > 0\n ? Math.min(parsedStartupTimeout, 120_000)\n : DEFAULT_SIGNAL_DAEMON_STARTUP_TIMEOUT_MS;\n\n return { defaultAuthDir, configuredCliPath, startupTimeoutMs };\n }\n\n private async initializeConfiguredAccount(\n account: ResolvedSignalAccount,\n config: SignalStartupConfig\n ): Promise<void> {\n const accountNumber = account.account;\n if (!accountNumber) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", agentId: this.runtime.agentId, accountId: account.accountId },\n \"Signal account is missing account number, skipping\"\n );\n return;\n }\n\n const normalizedNumber = normalizeE164(accountNumber);\n if (!normalizedNumber) {\n this.runtime.logger.error(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountId: account.accountId,\n accountNumber,\n },\n \"Invalid Signal account number format\"\n );\n return;\n }\n\n const baseUrl = normalizeBaseUrl(account.baseUrl);\n const authDir = account.config.authDir?.trim() || config.defaultAuthDir;\n const accountCliPath = account.config.cliPath?.trim() || config.configuredCliPath;\n if (\n !account.config.httpUrl?.trim() &&\n !(await this.ensureAccountDaemon(account, accountCliPath, authDir, baseUrl, config))\n ) {\n return;\n }\n\n const client = new SignalApiClient(baseUrl, normalizedNumber);\n this.clients.set(account.accountId, client);\n this.accountNumbers.set(account.accountId, normalizedNumber);\n if (account.accountId === this.defaultAccountId || !this.client) {\n this.client = client;\n this.accountNumber = normalizedNumber;\n }\n }\n\n private async ensureAccountDaemon(\n account: ResolvedSignalAccount,\n cliPath: string,\n authDir: string,\n baseUrl: string,\n config: SignalStartupConfig\n ): Promise<boolean> {\n if (!fs.existsSync(authDir)) {\n this.runtime.logger.warn(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountId: account.accountId,\n authDir,\n },\n \"Signal auth directory does not exist yet — run `signal-cli -a <number> link` (or set SIGNAL_AUTH_DIR to a pre-existing install) before starting the plugin\"\n );\n return false;\n }\n\n try {\n await this.ensureDaemonRunning(cliPath, authDir, baseUrl, config.startupTimeoutMs);\n return true;\n } catch (error) {\n this.runtime.logger.error(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountId: account.accountId,\n error: String(error),\n authDir,\n cliPath,\n },\n \"Failed to start signal-cli daemon\"\n );\n return false;\n }\n }\n\n static async start(runtime: IAgentRuntime): Promise<SignalService> {\n const service = new SignalService(runtime);\n const accounts = listEnabledSignalAccounts(runtime);\n const startupConfig = SignalService.resolveStartupConfig(runtime);\n\n if (accounts.length === 0) {\n runtime.logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId },\n \"SIGNAL_ACCOUNT_NUMBER not provided, Signal service will not start\"\n );\n return service;\n }\n\n service.defaultAccountId = resolveDefaultSignalAccountId(runtime);\n\n for (const account of accounts) {\n await service.initializeConfiguredAccount(account, startupConfig);\n }\n\n if (service.clients.size === 0) {\n runtime.logger.warn(\n { src: \"plugin:signal\", agentId: runtime.agentId },\n \"No configured Signal accounts could be initialized\"\n );\n return service;\n }\n\n try {\n await service.initialize();\n } catch (error) {\n runtime.logger.warn(\n {\n src: \"plugin:signal\",\n agentId: runtime.agentId,\n error: String(error),\n },\n \"Signal service failed to initialize\"\n );\n }\n\n return service;\n }\n\n static registerSendHandlers(runtime: IAgentRuntime, service: SignalService): void {\n const sendHandler = async (_runtime: IAgentRuntime, target: TargetInfo, content: Content) => {\n const accountId = service.normalizeAccountId(target.accountId);\n const text = typeof content.text === \"string\" ? content.text.trim() : \"\";\n if (!text) {\n return;\n }\n\n const room = target.roomId ? await runtime.getRoom(target.roomId) : null;\n const channelId = String(target.channelId ?? room?.channelId ?? \"\").trim();\n if (!channelId) {\n throw new Error(\"Signal target is missing a channel identifier\");\n }\n\n const isGroup = room?.type === ChannelType.GROUP;\n const result = isGroup\n ? await service.sendGroupMessage(channelId, text, { record: false, accountId })\n : await service.sendMessage(channelId, text, { record: false, accountId });\n\n if (!target.roomId) {\n return;\n }\n\n const memory = createMessageMemory({\n id: createUniqueUuid(runtime, `signal:${result.timestamp}`),\n entityId: runtime.agentId,\n roomId: target.roomId,\n content: {\n ...content,\n text,\n source: \"signal\",\n },\n }) as Memory;\n memory.metadata = {\n ...(memory.metadata ?? {}),\n type: \"message\",\n accountId,\n messageIdFull: String(result.timestamp),\n signalTimestamp: result.timestamp,\n signal: {\n timestamp: result.timestamp,\n },\n } satisfies Memory[\"metadata\"];\n return memory;\n };\n\n if (typeof runtime.registerMessageConnector === \"function\") {\n const accountIds = service.getConnectorAccountIds();\n const registrationAccountIds =\n accountIds.length > 1 ? accountIds : [undefined as string | undefined];\n\n for (const registrationAccountId of registrationAccountIds) {\n const connectorAccountId = service.normalizeAccountId(registrationAccountId);\n const registration: ExtendedMessageConnectorRegistration = {\n source: SIGNAL_SERVICE_NAME,\n ...(registrationAccountId ? { accountId: connectorAccountId } : {}),\n label:\n registrationAccountId && connectorAccountId !== DEFAULT_ACCOUNT_ID\n ? `Signal (${connectorAccountId})`\n : \"Signal\",\n capabilities: [\n \"send_message\",\n \"send_direct_message\",\n \"send_group_message\",\n \"send_reaction\",\n \"read_messages\",\n \"search_messages\",\n \"list_contacts\",\n \"list_groups\",\n \"read_recent_messages\",\n \"get_user\",\n ],\n supportedTargetKinds: [\"contact\", \"phone\", \"group\", \"room\"],\n contexts: [\"social\", \"connectors\"],\n description:\n \"Send, read, search, and react in Signal direct and group conversations with known contacts, phone numbers, groups, and recent Signal rooms.\",\n metadata: {\n accountId: connectorAccountId,\n },\n sendHandler: (handlerRuntime, target, content) =>\n sendHandler(\n handlerRuntime,\n target.accountId\n ? target\n : ({ ...target, accountId: connectorAccountId } as TargetInfo),\n content\n ),\n resolveTargets: async (query) => {\n const contacts = await service.listConnectorContacts(connectorAccountId);\n const groups = await service.listConnectorGroups(connectorAccountId);\n const recentMessages = await service\n .getRecentMessages(30, connectorAccountId)\n .catch((): SignalRecentMessage[] => []);\n const recentTargets = recentMessages\n .map((recent) => ({\n recent,\n score: scoreSignalCandidate(\n [recent.roomName, recent.channelId, recent.speakerName, recent.text],\n query\n ),\n }))\n .filter(({ score }) => score > 0)\n .map(({ recent, score }) =>\n signalRecentToConnectorTarget(recent, connectorAccountId, score)\n );\n\n const contactTargets = contacts\n .map((contact) => ({\n contact,\n score: scoreSignalCandidate(\n [contact.number, contact.name, contact.profileName, contact.uuid],\n query\n ),\n }))\n .filter(({ score }) => score > 0)\n .map(({ contact, score }) =>\n signalContactToConnectorTarget(contact, connectorAccountId, score)\n );\n\n const groupTargets = groups\n .map((group) => ({\n group,\n score: scoreSignalCandidate([group.id, group.name, group.description], query),\n }))\n .filter(({ score }) => score > 0)\n .map(({ group, score }) =>\n signalGroupToConnectorTarget(group, connectorAccountId, score)\n );\n\n return [...contactTargets, ...groupTargets, ...recentTargets]\n .sort((left, right) => (right.score ?? 0) - (left.score ?? 0))\n .slice(0, 12);\n },\n listRecentTargets: async () => {\n const recent = await service\n .getRecentMessages(12, connectorAccountId)\n .catch((): SignalRecentMessage[] => []);\n return recent.map((message) =>\n signalRecentToConnectorTarget(message, connectorAccountId)\n );\n },\n listRooms: async () => {\n const groups = await service.listConnectorGroups(connectorAccountId);\n return groups.map((group) => signalGroupToConnectorTarget(group, connectorAccountId));\n },\n fetchMessages: (context, params) =>\n service.fetchConnectorMessages(\n {\n ...context,\n accountId: context.accountId ?? connectorAccountId,\n target:\n context.target && !context.target.accountId\n ? ({ ...context.target, accountId: connectorAccountId } as TargetInfo)\n : context.target,\n },\n {\n ...params,\n target:\n params.target && !params.target.accountId\n ? ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : params.target,\n }\n ),\n searchMessages: (context, params) =>\n service.searchConnectorMessages(\n {\n ...context,\n accountId: context.accountId ?? connectorAccountId,\n target:\n context.target && !context.target.accountId\n ? ({ ...context.target, accountId: connectorAccountId } as TargetInfo)\n : context.target,\n },\n {\n ...params,\n target:\n params.target && !params.target.accountId\n ? ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : params.target,\n }\n ),\n reactHandler: (handlerRuntime, params) => {\n const channelId =\n params.target?.channelId ?? (\"channelId\" in params ? params.channelId : undefined);\n const roomId =\n params.target?.roomId ?? (\"roomId\" in params ? params.roomId : undefined);\n return service.reactConnectorMessage(handlerRuntime, {\n ...params,\n target: params.target\n ? params.target.accountId\n ? params.target\n : ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : ({\n source: SIGNAL_SERVICE_NAME,\n accountId: connectorAccountId,\n channelId,\n roomId,\n } as TargetInfo),\n });\n },\n getUser: (handlerRuntime, params) =>\n service.getConnectorUser(handlerRuntime, {\n ...params,\n target: params.target\n ? params.target.accountId\n ? params.target\n : ({ ...params.target, accountId: connectorAccountId } as TargetInfo)\n : ({ source: SIGNAL_SERVICE_NAME, accountId: connectorAccountId } as TargetInfo),\n }),\n getChatContext: async (target, context) => {\n const targetAccountId = service.normalizeAccountId(\n target.accountId ?? context.accountId ?? connectorAccountId\n );\n const room = target.roomId ? await context.runtime.getRoom(target.roomId) : null;\n const channelId = String(target.channelId ?? room?.channelId ?? \"\").trim();\n if (!channelId) {\n return null;\n }\n\n const signalRecentMessages: SignalRecentMessage[] = await service\n .getRecentMessages(50, targetAccountId)\n .catch((): SignalRecentMessage[] => []);\n const recentMessages = signalRecentMessages\n .filter((recent) => recent.channelId === channelId || recent.roomId === target.roomId)\n .slice(0, 10)\n .map((recent) => ({\n name: recent.speakerName,\n text: recent.text,\n timestamp: recent.createdAt,\n metadata: {\n accountId: targetAccountId,\n isFromAgent: recent.isFromAgent,\n isGroup: recent.isGroup,\n },\n }));\n\n return {\n target: {\n source: SIGNAL_SERVICE_NAME,\n accountId: targetAccountId,\n roomId: target.roomId,\n channelId,\n },\n label: room?.name || channelId,\n recentMessages,\n metadata: {\n accountId: targetAccountId,\n isGroup: room?.type === ChannelType.GROUP,\n channelId,\n },\n } satisfies MessageConnectorChatContext;\n },\n getUserContext: async (entityId) => {\n const contacts = await service.listConnectorContacts(connectorAccountId);\n const contact = contacts.find(\n (candidate) => service.getEntityId(candidate.number, connectorAccountId) === entityId\n );\n if (!contact) {\n return null;\n }\n return {\n entityId,\n label: getSignalContactDisplayName(contact),\n aliases: [contact.name, contact.profileName, contact.number].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0\n ),\n handles: {\n signal: contact.number,\n },\n metadata: {\n accountId: connectorAccountId,\n uuid: contact.uuid,\n blocked: contact.blocked,\n },\n } satisfies MessageConnectorUserContext;\n },\n };\n runtime.registerMessageConnector(registration);\n }\n return;\n }\n\n runtime.registerSendHandler(SIGNAL_SERVICE_NAME, sendHandler);\n }\n\n private async initialize(): Promise<void> {\n if (this.clients.size === 0 && this.client) {\n this.clients.set(this.defaultAccountId, this.client);\n if (this.accountNumber) {\n this.accountNumbers.set(this.defaultAccountId, this.accountNumber);\n }\n }\n if (this.clients.size === 0) return;\n\n this.runtime.logger.info(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountIds: Array.from(this.clients.keys()),\n },\n \"Initializing Signal service\"\n );\n\n for (const [accountId, client] of this.clients) {\n // Test connection by getting contacts\n const contacts = await client.getContacts();\n this.runtime.logger.info(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n accountId,\n contactCount: contacts.length,\n },\n \"Signal account connected\"\n );\n\n this.cacheContacts(accountId, contacts);\n this.cacheGroups(accountId, await client.getGroups());\n }\n\n this.isConnected = true;\n\n if (this.settings.receiveMode === \"on-start\") {\n this.startPolling();\n } else {\n this.runtime.logger.info(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n receiveMode: this.settings.receiveMode,\n },\n \"Signal receive polling is manual; LifeOps reads pull from signal-cli directly\"\n );\n }\n }\n\n private async shutdown(): Promise<void> {\n this.stopPolling();\n this.clients.clear();\n this.accountNumbers.clear();\n this.client = null;\n this.isConnected = false;\n if (this.daemonProcess) {\n this.daemonProcess.kill(\"SIGTERM\");\n this.daemonProcess = null;\n }\n\n this.runtime.logger.info(\n { src: \"plugin:signal\", agentId: this.runtime.agentId },\n \"Signal service stopped\"\n );\n }\n\n private async ensureDaemonRunning(\n cliPath: string,\n authDir: string,\n baseUrl: string,\n startupTimeoutMs: number\n ): Promise<void> {\n const current = await signalCheck(baseUrl, 1_500);\n if (current.ok) {\n return;\n }\n\n const resolvedCliPath = await resolveSignalCliExecutable({\n cliPath,\n env: process.env,\n });\n if (!resolvedCliPath) {\n throw new Error(missingSignalCliMessage(cliPath));\n }\n\n fs.mkdirSync(authDir, { recursive: true });\n const httpTarget = new URL(baseUrl).host;\n const daemonArgs = [\n \"--config\",\n authDir,\n \"daemon\",\n \"--http\",\n httpTarget,\n \"--receive-mode\",\n \"on-start\",\n \"--no-receive-stdout\",\n ];\n const child = spawn(resolvedCliPath, daemonArgs, {\n env: buildSignalCliEnv(),\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n this.daemonProcess = child;\n\n child.stdout.on(\"data\", (chunk) => {\n const text = chunk.toString().trim();\n if (text.length > 0) {\n this.runtime.logger.debug(\n { src: \"plugin:signal\", agentId: this.runtime.agentId, output: text },\n \"signal-cli daemon stdout\"\n );\n }\n });\n\n child.stderr.on(\"data\", (chunk) => {\n const text = chunk.toString().trim();\n if (text.length > 0) {\n this.runtime.logger.info(\n { src: \"plugin:signal\", agentId: this.runtime.agentId, output: text },\n \"signal-cli daemon stderr\"\n );\n }\n });\n\n child.once(\"exit\", (code, signal) => {\n if (this.daemonProcess === child) {\n this.daemonProcess = null;\n }\n this.runtime.logger.warn(\n {\n src: \"plugin:signal\",\n agentId: this.runtime.agentId,\n code,\n signal,\n },\n \"signal-cli daemon exited\"\n );\n });\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < startupTimeoutMs) {\n if (child.exitCode !== null) {\n throw new Error(`signal-cli daemon exited before becoming ready (code ${child.exitCode})`);\n }\n\n const ready = await signalCheck(baseUrl, 1_500);\n if (ready.ok) {\n return;\n }\n\n await sleep(500);\n }\n\n throw new Error(\n `signal-cli daemon did not become ready at ${baseUrl} within ${startupTimeoutMs}ms`\n );\n }\n\n private startPolling(): void {\n if (this.pollInterval || this.eventStreams.size > 0 || this.eventStream) return;\n\n if (this.clients.size > 0) {\n for (const [accountId, client] of this.clients) {\n const eventStream = createSignalEventStream({\n baseUrl: client.baseUrl,\n account: client.accountNumber,\n onEvent: (event) => {\n const data = parseSignalEventData<unknown>(event.data);\n if (data !== null) {\n this.handleSignalEventPayload(data, accountId);\n }\n },\n onError: (error) => {\n this.runtime.logger.error(\n { src: \"plugin:signal\", accountId, error: String(error) },\n \"Signal event stream error\"\n );\n },\n });\n this.eventStreams.set(accountId, eventStream);\n if (accountId === this.defaultAccountId) {\n this.eventStream = eventStream;\n }\n eventStream.start();\n }\n return;\n }\n\n this.pollInterval = setInterval(async () => {\n await this.pollMessages();\n }, 2000); // Poll every 2 seconds\n }\n\n private stopPolling(): void {\n if (this.pollInterval) {\n clearInterval(this.pollInterval);\n this.pollInterval = null;\n }\n if (this.eventStream) {\n this.eventStream.stop();\n this.eventStream = null;\n }\n for (const eventStream of this.eventStreams.values()) {\n eventStream.stop();\n }\n this.eventStreams.clear();\n }\n\n /**\n * Unwraps signal-cli REST API envelope format into a flat SignalMessage.\n *\n * signal-cli returns `{envelope:{source, sourceNumber, sourceName, dataMessage:{message,...}}}`\n * but the plugin expects flat `{sender, message, timestamp, ...}` objects.\n */\n static unwrapEnvelope(raw: Record<string, unknown>): SignalMessage | null {\n if (!(\"envelope\" in raw)) {\n return SignalService.unwrapFlatMessage(raw);\n }\n if (!isRecord(raw.envelope)) {\n return null;\n }\n return SignalService.unwrapEnvelopeMessage(raw.envelope);\n }\n\n private static unwrapFlatMessage(raw: Record<string, unknown>): SignalMessage | null {\n if (typeof raw.sender !== \"string\" || typeof raw.timestamp !== \"number\") {\n return null;\n }\n return {\n sender: raw.sender,\n senderUuid: typeof raw.senderUuid === \"string\" ? raw.senderUuid : undefined,\n message: typeof raw.message === \"string\" ? raw.message : undefined,\n timestamp: raw.timestamp,\n groupId: typeof raw.groupId === \"string\" ? raw.groupId : undefined,\n attachments: Array.isArray(raw.attachments) ? (raw.attachments as SignalAttachment[]) : [],\n reaction: raw.reaction as SignalReactionInfo | undefined,\n expiresInSeconds: typeof raw.expiresInSeconds === \"number\" ? raw.expiresInSeconds : undefined,\n viewOnce: raw.viewOnce === true,\n quote: raw.quote as SignalQuote | undefined,\n };\n }\n\n private static unwrapEnvelopeMessage(env: Record<string, unknown>): SignalMessage | null {\n const dm = isRecord(env.dataMessage) ? env.dataMessage : {};\n const groupInfo = isRecord(dm.groupInfo) ? dm.groupInfo : undefined;\n\n const sender =\n (typeof env.sourceNumber === \"string\" && env.sourceNumber) ||\n (typeof env.source === \"string\" && env.source) ||\n \"\";\n const timestamp =\n (typeof dm.timestamp === \"number\" && dm.timestamp) ||\n (typeof env.timestamp === \"number\" && env.timestamp) ||\n 0;\n\n // Both sender and timestamp are required to produce a usable message.\n if (!sender || !timestamp) return null;\n\n return {\n sender,\n senderUuid: typeof env.source === \"string\" ? env.source : undefined,\n message: typeof dm.message === \"string\" ? dm.message : undefined,\n timestamp,\n groupId: typeof groupInfo?.groupId === \"string\" ? groupInfo.groupId : undefined,\n attachments: Array.isArray(dm.attachments) ? (dm.attachments as SignalAttachment[]) : [],\n reaction: dm.reaction as SignalReactionInfo | undefined,\n expiresInSeconds: typeof dm.expiresInSeconds === \"number\" ? dm.expiresInSeconds : 0,\n viewOnce: dm.viewOnce === true,\n quote: dm.quote as SignalQuote | undefined,\n };\n }\n\n private async pollMessages(accountId?: string | null): Promise<void> {\n if (this.isPolling) return;\n\n const entries = accountId\n ? ([[this.normalizeAccountId(accountId), this.getClientForAccount(accountId)]].filter(\n ([, client]) => Boolean(client)\n ) as Array<[string, SignalApiClient]>)\n : Array.from(this.clients.entries());\n if (entries.length === 0 && this.client) {\n entries.push([this.defaultAccountId, this.client]);\n }\n if (entries.length === 0) return;\n\n this.isPolling = true;\n\n try {\n for (const [entryAccountId, client] of entries) {\n const rawMessages = (await client.receive()) || [];\n\n for (const raw of rawMessages) {\n try {\n if (!isRecord(raw)) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", accountId: entryAccountId },\n \"Skipping malformed envelope (not an object)\"\n );\n continue;\n }\n\n const msg = SignalService.unwrapEnvelope(raw);\n if (!msg) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", accountId: entryAccountId },\n \"Skipping malformed envelope (missing sender or timestamp)\"\n );\n continue;\n }\n await this.handleIncomingMessage(msg, entryAccountId);\n } catch (msgErr) {\n this.runtime.logger.error(\n { src: \"plugin:signal\", accountId: entryAccountId, error: String(msgErr) },\n \"Error handling incoming message\"\n );\n }\n }\n }\n } catch (err) {\n this.runtime.logger.error(\n { src: \"plugin:signal\", error: String(err) },\n \"Error polling messages\"\n );\n } finally {\n this.isPolling = false;\n }\n }\n\n private handleSignalEventPayload(raw: unknown, accountId?: string | null): void {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const payloads = Array.isArray(raw) ? raw : [raw];\n for (const payload of payloads) {\n if (!payload || typeof payload !== \"object\") {\n continue;\n }\n void (async () => {\n try {\n const msg = SignalService.unwrapEnvelope(payload as Record<string, unknown>);\n if (!msg) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\" },\n \"Skipping malformed Signal event (missing sender or timestamp)\"\n );\n return;\n }\n await this.handleIncomingMessage(msg, normalizedAccountId);\n } catch (error) {\n this.runtime.logger.error(\n { src: \"plugin:signal\", error: String(error) },\n \"Error handling Signal event\"\n );\n }\n })();\n }\n }\n\n private async handleIncomingMessage(\n msg: SignalMessage,\n accountId = this.defaultAccountId\n ): Promise<void> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n // Handle reactions separately\n if (msg.reaction) {\n await this.handleReaction(msg, normalizedAccountId);\n return;\n }\n\n // Skip if no message content\n if (!msg.message && msg.attachments.length === 0) {\n return;\n }\n\n const isGroupMessage = Boolean(msg.groupId);\n\n // Check if we should ignore group messages\n if (isGroupMessage && this.settings.shouldIgnoreGroupMessages) {\n return;\n }\n\n // Ensure entity, room, and world exist before creating memories.\n // Without this, the DB insert fails because the foreign keys don't exist.\n const entityId = this.getEntityId(msg.sender, normalizedAccountId);\n const roomId = await this.getRoomId(msg.sender, msg.groupId, normalizedAccountId);\n const worldId = createUniqueUuid(\n this.runtime,\n normalizedAccountId === DEFAULT_ACCOUNT_ID\n ? \"signal-world\"\n : `signal-world-${normalizedAccountId}`\n );\n const contact = this.getCachedContact(msg.sender, normalizedAccountId);\n const displayName = contact ? getSignalContactDisplayName(contact) : msg.sender;\n\n await this.runtime.ensureConnection({\n entityId,\n roomId,\n worldId,\n worldName: \"Signal\",\n userId: msg.sender,\n userName: displayName,\n name: displayName,\n source: \"signal\",\n type: isGroupMessage ? ChannelType.GROUP : ChannelType.DM,\n channelId: msg.groupId || msg.sender,\n metadata: {\n accountId: normalizedAccountId,\n isGroup: isGroupMessage,\n ...(msg.groupId ? { groupId: msg.groupId } : {}),\n sender: msg.sender,\n },\n });\n await this.ensureRoomExists(msg.sender, msg.groupId, normalizedAccountId);\n\n // Build memory from message\n const memory = await this.buildMemoryFromMessage(msg, normalizedAccountId);\n if (!memory) return;\n\n // Store the memory\n await this.runtime.createMemory(memory, \"messages\");\n\n // Emit event\n await this.runtime.emitEvent(\n SignalEventTypes.MESSAGE_RECEIVED as string,\n {\n runtime: this.runtime,\n source: \"signal\",\n accountId: normalizedAccountId,\n message: memory,\n } as EventPayload\n );\n\n // Get the room for processMessage; fall back to ensureRoomExists if\n // getRoom returns null (e.g. race condition after ensureConnection).\n let room = await this.runtime.getRoom(roomId);\n if (!room) {\n this.runtime.logger.warn(\n { src: \"plugin:signal\", accountId: normalizedAccountId, roomId, sender: msg.sender },\n \"Room not found after ensureConnection, creating via ensureRoomExists\"\n );\n room = await this.ensureRoomExists(msg.sender, msg.groupId, normalizedAccountId);\n }\n\n const autoReply = this.settings.autoReply && !lifeOpsPassiveConnectorsEnabled(this.runtime);\n\n // Inbound messages are always ingested (memory + MESSAGE_RECEIVED event)\n // so the user can read history and dispatch sends through LifeOps. The\n // agent only auto-generates a reply when SIGNAL_AUTO_REPLY is explicitly\n // enabled — default-off prevents the runtime from speaking on the user's\n // behalf to real Signal contacts.\n if (autoReply) {\n await this.processMessage(memory, room, msg.sender, msg.groupId, normalizedAccountId);\n return;\n }\n\n await this.runtime.emitEvent(EventType.MESSAGE_RECEIVED, {\n runtime: this.runtime,\n message: memory,\n source: \"signal\",\n });\n }\n\n private async handleReaction(\n msg: SignalMessage,\n accountId = this.defaultAccountId\n ): Promise<void> {\n if (!msg.reaction) return;\n\n await this.runtime.emitEvent(\n SignalEventTypes.REACTION_RECEIVED as string,\n {\n runtime: this.runtime,\n source: \"signal\",\n accountId: this.normalizeAccountId(accountId),\n } as EventPayload\n );\n }\n\n private async processMessage(\n memory: Memory,\n room: Room,\n sender: string,\n groupId?: string,\n accountId = this.defaultAccountId\n ): Promise<void> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const callback: HandlerCallback = async (response: Content): Promise<Memory[]> => {\n if (groupId) {\n await this.sendGroupMessage(groupId, response.text || \"\", {\n accountId: normalizedAccountId,\n });\n } else {\n await this.sendMessage(sender, response.text || \"\", {\n accountId: normalizedAccountId,\n });\n }\n\n // Create memory for the response\n const responseMemory: Memory = {\n id: createUniqueUuid(this.runtime, `signal-response-${Date.now()}`),\n agentId: this.runtime.agentId,\n roomId: room.id,\n entityId: this.runtime.agentId,\n content: {\n text: response.text || \"\",\n source: \"signal\",\n inReplyTo: memory.id,\n },\n metadata: {\n accountId: normalizedAccountId,\n source: \"signal\",\n provider: \"signal\",\n signal: {\n groupId,\n },\n } satisfies Memory[\"metadata\"],\n createdAt: Date.now(),\n };\n\n await this.runtime.createMemory(responseMemory, \"messages\");\n\n await this.runtime.emitEvent(\n SignalEventTypes.MESSAGE_SENT as string,\n {\n runtime: this.runtime,\n source: \"signal\",\n accountId: normalizedAccountId,\n } as EventPayload\n );\n\n return [responseMemory];\n };\n\n const messageService = getMessageService(this.runtime);\n if (messageService) {\n await messageService.handleMessage(this.runtime, memory, callback);\n }\n }\n\n private async buildMemoryFromMessage(\n msg: SignalMessage,\n accountId = this.defaultAccountId\n ): Promise<Memory | null> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const roomId = await this.getRoomId(msg.sender, msg.groupId, normalizedAccountId);\n const entityId = this.getEntityId(msg.sender, normalizedAccountId);\n\n // Get contact info for display name\n const contact = this.getCachedContact(msg.sender, normalizedAccountId);\n const displayName = contact ? getSignalContactDisplayName(contact) : msg.sender;\n\n // Extract media from attachments\n const media: Media[] = (msg.attachments || []).map((att) => ({\n id: att.id,\n url: `signal://attachment/${att.id}`,\n title: att.filename || att.id,\n source: \"signal\",\n description: att.caption || att.filename,\n contentType: att.contentType as ContentType | undefined,\n }));\n\n const memory: Memory = {\n id: createUniqueUuid(this.runtime, `signal-${msg.timestamp}`),\n agentId: this.runtime.agentId,\n roomId,\n entityId,\n content: {\n text: msg.message || \"\",\n source: \"signal\",\n name: displayName,\n ...(media.length > 0 ? { attachments: media } : {}),\n },\n metadata: {\n type: \"message\",\n source: \"signal\",\n provider: \"signal\",\n accountId: normalizedAccountId,\n timestamp: msg.timestamp,\n entityName: displayName,\n entityUserName: msg.sender,\n fromBot: false,\n fromId: msg.sender,\n sourceId: entityId,\n chatType: msg.groupId ? ChannelType.GROUP : ChannelType.DM,\n messageIdFull: String(msg.timestamp),\n sender: {\n id: msg.sender,\n name: displayName,\n username: msg.sender,\n },\n signal: {\n senderId: msg.sender,\n groupId: msg.groupId,\n timestamp: msg.timestamp,\n },\n } satisfies Memory[\"metadata\"],\n createdAt: msg.timestamp,\n };\n\n return memory;\n }\n\n private async getRoomId(\n sender: string,\n groupId?: string,\n accountId = this.defaultAccountId\n ): Promise<UUID> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const roomKey = groupId || sender;\n return createUniqueUuid(\n this.runtime,\n this.accountScopedKey(normalizedAccountId, \"room\", roomKey)\n );\n }\n\n private getEntityId(number: string, accountId = this.defaultAccountId): UUID {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n return normalizedAccountId === DEFAULT_ACCOUNT_ID\n ? stringToUuid(`signal-user-${number}`)\n : stringToUuid(`signal-user-${normalizedAccountId}-${number}`);\n }\n\n private async ensureRoomExists(\n sender: string,\n groupId?: string,\n accountId = this.defaultAccountId\n ): Promise<Room> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const roomId = await this.getRoomId(sender, groupId, normalizedAccountId);\n\n const existingRoom = await this.runtime.getRoom(roomId);\n\n const isGroup = Boolean(groupId);\n const group = groupId ? this.getCachedGroupForAccount(groupId, normalizedAccountId) : null;\n const contact = this.getCachedContact(sender, normalizedAccountId);\n const worldId = createUniqueUuid(\n this.runtime,\n normalizedAccountId === DEFAULT_ACCOUNT_ID\n ? \"signal-world\"\n : `signal-world-${normalizedAccountId}`\n );\n\n const room: Room = {\n id: roomId,\n name: isGroup\n ? group?.name || `Signal Group ${groupId}`\n : contact\n ? getSignalContactDisplayName(contact)\n : sender,\n agentId: this.runtime.agentId,\n source: \"signal\",\n type: isGroup ? ChannelType.GROUP : ChannelType.DM,\n channelId: groupId || sender,\n worldId,\n metadata: {\n ...(existingRoom?.metadata as Record<string, unknown> | undefined),\n accountId: normalizedAccountId,\n isGroup,\n groupId,\n sender,\n groupName: group?.name,\n groupDescription: group?.description,\n },\n };\n\n if (typeof this.runtime.ensureRoomExists === \"function\") {\n await this.runtime.ensureRoomExists(room);\n } else if (!existingRoom) {\n await this.runtime.createRoom(room);\n }\n\n return room;\n }\n\n async sendMessage(\n recipient: string,\n text: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n const accountId = this.normalizeAccountId(options?.accountId);\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n // signal-cli may identify senders by UUID instead of phone number.\n // Accept both UUID and E.164 formats.\n const normalizedRecipient = isValidUuid(recipient) ? recipient : normalizeE164(recipient);\n if (!normalizedRecipient) {\n throw new Error(`Invalid recipient number: ${recipient}`);\n }\n\n // Split message if too long\n const messages = this.splitMessage(text);\n let lastTimestamp = 0;\n\n for (let i = 0; i < messages.length; i++) {\n // Only send attachments/quote with the first chunk\n const chunkOptions = i === 0 ? options : undefined;\n const result = await client.sendMessage(normalizedRecipient, messages[i], chunkOptions);\n lastTimestamp = result.timestamp;\n }\n\n if (options?.record !== false) {\n await this.recordOutgoingMessage({\n accountId,\n channelId: normalizedRecipient,\n text,\n timestamp: lastTimestamp,\n isGroup: false,\n });\n }\n\n return { timestamp: lastTimestamp };\n }\n\n async sendGroupMessage(\n groupId: string,\n text: string,\n options?: SignalMessageSendOptions\n ): Promise<{ timestamp: number }> {\n const accountId = this.normalizeAccountId(options?.accountId);\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n // Split message if too long\n const messages = this.splitMessage(text);\n let lastTimestamp = 0;\n\n for (let i = 0; i < messages.length; i++) {\n // Only send attachments with the first chunk\n const chunkOptions = i === 0 ? options : undefined;\n const result = await client.sendGroupMessage(groupId, messages[i], chunkOptions);\n lastTimestamp = result.timestamp;\n }\n\n if (options?.record !== false) {\n await this.recordOutgoingMessage({\n accountId,\n channelId: groupId,\n text,\n timestamp: lastTimestamp,\n isGroup: true,\n });\n }\n\n return { timestamp: lastTimestamp };\n }\n\n async sendDirectMessage(target: string, content: Content): Promise<void> {\n const text = typeof content.text === \"string\" ? content.text.trim() : \"\";\n if (!text) {\n return;\n }\n await this.sendMessage(target, text);\n }\n\n async sendRoomMessage(target: string, content: Content): Promise<void> {\n const text = typeof content.text === \"string\" ? content.text.trim() : \"\";\n if (!text) {\n return;\n }\n if (isValidGroupId(target)) {\n await this.sendGroupMessage(target, text);\n return;\n }\n await this.sendMessage(target, text);\n }\n\n private async recordOutgoingMessage(args: {\n accountId?: string;\n channelId: string;\n text: string;\n timestamp: number;\n isGroup: boolean;\n }): Promise<void> {\n const accountId = this.normalizeAccountId(args.accountId);\n const roomId = await this.getRoomId(\n args.isGroup ? this.getAccountNumberForAccount(accountId) || \"signal-agent\" : args.channelId,\n args.isGroup ? args.channelId : undefined,\n accountId\n );\n const worldId = createUniqueUuid(\n this.runtime,\n accountId === DEFAULT_ACCOUNT_ID ? \"signal-world\" : `signal-world-${accountId}`\n );\n const displayName = this.character.name || \"Agent\";\n\n await this.runtime.ensureConnection({\n entityId: this.runtime.agentId,\n roomId,\n worldId,\n worldName: \"Signal\",\n userId: this.runtime.agentId,\n userName: displayName,\n name: displayName,\n source: \"signal\",\n type: args.isGroup ? ChannelType.GROUP : ChannelType.DM,\n channelId: args.channelId,\n metadata: {\n accountId,\n isGroup: args.isGroup,\n channelId: args.channelId,\n },\n });\n\n const memory = createMessageMemory({\n id: createUniqueUuid(this.runtime, `signal:${args.timestamp}`),\n entityId: this.runtime.agentId,\n roomId,\n content: {\n text: args.text,\n source: \"signal\",\n },\n });\n await this.runtime.createMemory(\n {\n ...memory,\n metadata: {\n ...(memory.metadata ?? {}),\n type: \"message\",\n accountId,\n source: \"signal\",\n provider: \"signal\",\n timestamp: args.timestamp,\n messageIdFull: String(args.timestamp),\n signal: {\n timestamp: args.timestamp,\n },\n } satisfies Memory[\"metadata\"],\n createdAt: args.timestamp,\n },\n \"messages\"\n );\n }\n\n async sendReaction(\n recipient: string,\n emoji: string,\n targetTimestamp: number,\n targetAuthor: string,\n accountId?: string\n ): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n await client.sendReaction(recipient, emoji, targetTimestamp, targetAuthor);\n }\n\n async removeReaction(\n recipient: string,\n emoji: string,\n targetTimestamp: number,\n targetAuthor: string,\n accountId?: string\n ): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n await client.sendReaction(recipient, emoji, targetTimestamp, targetAuthor, true);\n }\n\n async getContacts(accountId?: string): Promise<SignalContact[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const client = this.getClientForAccount(normalizedAccountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n const contacts = await client.getContacts();\n\n this.cacheContacts(normalizedAccountId, contacts);\n\n return contacts;\n }\n\n private async listConnectorContacts(accountId?: string): Promise<SignalContact[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n try {\n return await this.getContacts(normalizedAccountId);\n } catch {\n return Array.from(\n this.contactCaches.get(normalizedAccountId)?.values() ?? this.contactCache.values()\n );\n }\n }\n\n async getGroups(accountId?: string): Promise<SignalGroup[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const client = this.getClientForAccount(normalizedAccountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n const groups = await client.getGroups();\n\n this.cacheGroups(normalizedAccountId, groups);\n\n return groups;\n }\n\n private async listConnectorGroups(accountId?: string): Promise<SignalGroup[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n try {\n return await this.getGroups(normalizedAccountId);\n } catch {\n return Array.from(\n this.groupCaches.get(normalizedAccountId)?.values() ?? this.groupCache.values()\n );\n }\n }\n\n private roomMatchesAccount(room: Room, accountId: string): boolean {\n const metadata = room.metadata as Record<string, unknown> | undefined;\n const roomAccountId =\n typeof metadata?.accountId === \"string\" && metadata.accountId.trim()\n ? this.normalizeAccountId(metadata.accountId)\n : undefined;\n return roomAccountId ? roomAccountId === accountId : accountId === DEFAULT_ACCOUNT_ID;\n }\n\n private memoryMatchesAccount(memory: Memory, accountId: string): boolean {\n const metadata = memory.metadata as Record<string, unknown> | undefined;\n const memoryAccountId =\n typeof metadata?.accountId === \"string\" && metadata.accountId.trim()\n ? this.normalizeAccountId(metadata.accountId)\n : undefined;\n return memoryAccountId ? memoryAccountId === accountId : accountId === DEFAULT_ACCOUNT_ID;\n }\n\n async getRecentMessages(\n limit: number = 20,\n accountId = this.defaultAccountId\n ): Promise<SignalRecentMessage[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n if (\n typeof this.runtime.getRoomsForParticipant !== \"function\" ||\n typeof this.runtime.getMemoriesByRoomIds !== \"function\"\n ) {\n return [];\n }\n\n const requestedLimit = Number.isFinite(limit) ? Math.max(1, Math.min(limit, 100)) : 20;\n const participantRoomIds = await this.runtime.getRoomsForParticipant(this.runtime.agentId);\n\n const signalRooms: Room[] = [];\n for (const roomId of participantRoomIds) {\n const room = await this.runtime.getRoom(roomId);\n if (room?.source === \"signal\" && this.roomMatchesAccount(room, normalizedAccountId)) {\n signalRooms.push(room);\n }\n }\n\n if (signalRooms.length === 0) {\n return [];\n }\n\n const roomIds = signalRooms.map((room) => room.id);\n const roomsById = new Map(signalRooms.map((room) => [room.id, room]));\n const memories = await this.runtime.getMemoriesByRoomIds({\n tableName: \"messages\",\n roomIds,\n limit: requestedLimit * 4,\n });\n\n return memories\n .filter((memory) => memory.content.source === \"signal\")\n .filter((memory) => this.memoryMatchesAccount(memory, normalizedAccountId))\n .filter(\n (memory) => typeof memory.content.text === \"string\" && memory.content.text.trim().length > 0\n )\n .sort((left, right) => Number(right.createdAt ?? 0) - Number(left.createdAt ?? 0))\n .slice(0, requestedLimit)\n .map((memory) => {\n const room = roomsById.get(memory.roomId);\n const isGroup =\n room?.type === ChannelType.GROUP ||\n Boolean((room?.metadata as Record<string, unknown> | undefined)?.isGroup);\n const text = String(memory.content.text ?? \"\").trim();\n const speakerName =\n memory.entityId === this.runtime.agentId\n ? this.character.name || \"Agent\"\n : typeof memory.content.name === \"string\" && memory.content.name.trim().length > 0\n ? memory.content.name.trim()\n : room?.name || room?.channelId || \"Unknown\";\n\n return {\n id: String(memory.id),\n roomId: String(memory.roomId),\n channelId: String(room?.channelId ?? \"\"),\n roomName: room?.name || room?.channelId || \"Signal\",\n speakerName,\n text,\n createdAt: Number(memory.createdAt ?? Date.now()),\n isFromAgent: memory.entityId === this.runtime.agentId,\n isGroup,\n } satisfies SignalRecentMessage;\n });\n }\n\n private async getSignalRooms(\n channelId?: string,\n roomId?: UUID,\n accountId = this.defaultAccountId\n ): Promise<Room[]> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n if (roomId) {\n const room = await this.runtime.getRoom(roomId);\n return room?.source === \"signal\" && this.roomMatchesAccount(room, normalizedAccountId)\n ? [room]\n : [];\n }\n\n if (\n typeof this.runtime.getRoomsForParticipant !== \"function\" ||\n typeof this.runtime.getRoom !== \"function\"\n ) {\n return [];\n }\n\n const participantRoomIds = await this.runtime.getRoomsForParticipant(this.runtime.agentId);\n const rooms: Room[] = [];\n for (const participantRoomId of participantRoomIds) {\n const room = await this.runtime.getRoom(participantRoomId);\n if (room?.source !== \"signal\") {\n continue;\n }\n if (!this.roomMatchesAccount(room, normalizedAccountId)) {\n continue;\n }\n if (channelId && room.channelId !== channelId) {\n continue;\n }\n rooms.push(room);\n }\n return rooms;\n }\n\n async fetchConnectorMessages(\n context: MessageConnectorQueryContext,\n params: ConnectorFetchMessagesParams\n ): Promise<Memory[]> {\n if (typeof this.runtime.getMemoriesByRoomIds !== \"function\") {\n return [];\n }\n\n const target = params.target ?? context.target;\n const accountId = this.normalizeAccountId(target?.accountId ?? context.accountId);\n const channelId = params.channelId ?? target?.channelId;\n const roomId = params.roomId ?? target?.roomId;\n const rooms = await this.getSignalRooms(channelId, roomId, accountId);\n if (rooms.length === 0) {\n return [];\n }\n\n const limit = Number.isFinite(params.limit)\n ? Math.max(1, Math.min(Number(params.limit), 100))\n : 25;\n const memories = await this.runtime.getMemoriesByRoomIds({\n tableName: \"messages\",\n roomIds: rooms.map((room) => room.id),\n limit: limit * Math.max(rooms.length, 1),\n });\n const before = params.before ? Number(params.before) : undefined;\n const after = params.after ? Number(params.after) : undefined;\n\n return memories\n .filter((memory) => memory.content.source === \"signal\")\n .filter((memory) => this.memoryMatchesAccount(memory, accountId))\n .filter((memory) => {\n const createdAt = Number(memory.createdAt ?? 0);\n if (before !== undefined && Number.isFinite(before) && createdAt >= before) {\n return false;\n }\n if (after !== undefined && Number.isFinite(after) && createdAt <= after) {\n return false;\n }\n return true;\n })\n .sort((left, right) => Number(right.createdAt ?? 0) - Number(left.createdAt ?? 0))\n .slice(0, limit);\n }\n\n async searchConnectorMessages(\n context: MessageConnectorQueryContext,\n params: ConnectorSearchMessagesParams\n ): Promise<Memory[]> {\n const query = params.query?.trim().toLowerCase();\n if (!query) {\n return [];\n }\n const memories = await this.fetchConnectorMessages(context, {\n ...params,\n limit: Math.max(params.limit ?? 100, 100),\n });\n return memories\n .filter((memory) => {\n const text = String(memory.content.text ?? \"\").toLowerCase();\n const name = String(memory.content.name ?? \"\").toLowerCase();\n return text.includes(query) || name.includes(query);\n })\n .slice(0, params.limit ?? 25);\n }\n\n async reactConnectorMessage(\n runtime: IAgentRuntime,\n params: ConnectorReactionParams\n ): Promise<void> {\n const reactionTarget = await this.resolveReactionTarget(runtime, params);\n\n if (!params.emoji) {\n throw new Error(\"Signal reaction requires emoji, targetTimestamp, and targetAuthor.\");\n }\n\n if (params.remove) {\n await this.removeReaction(\n reactionTarget.recipient,\n params.emoji,\n reactionTarget.targetTimestamp,\n reactionTarget.targetAuthor,\n reactionTarget.accountId\n );\n return;\n }\n await this.sendReaction(\n reactionTarget.recipient,\n params.emoji,\n reactionTarget.targetTimestamp,\n reactionTarget.targetAuthor,\n reactionTarget.accountId\n );\n }\n\n private async resolveReactionTarget(\n runtime: IAgentRuntime,\n params: ConnectorReactionParams\n ): Promise<SignalReactionTarget> {\n const target = params.target;\n const accountId = this.normalizeAccountId(target?.accountId);\n const room =\n params.roomId || target?.roomId\n ? await runtime.getRoom((params.roomId ?? target?.roomId) as UUID)\n : null;\n const recipient = params.channelId ?? target?.channelId ?? room?.channelId;\n if (!recipient) {\n throw new Error(\"Signal reaction requires a target recipient or room.\");\n }\n\n const fallback = params.messageId\n ? await this.lookupReactionTargetFromMemory(runtime, params.messageId as UUID)\n : {};\n const targetTimestamp = params.targetTimestamp ?? fallback.targetTimestamp;\n const targetAuthor = params.targetAuthor ?? fallback.targetAuthor;\n if (!targetTimestamp || !targetAuthor) {\n throw new Error(\"Signal reaction requires emoji, targetTimestamp, and targetAuthor.\");\n }\n return { recipient, accountId, targetTimestamp, targetAuthor };\n }\n\n private async lookupReactionTargetFromMemory(\n runtime: IAgentRuntime,\n messageId: UUID\n ): Promise<Partial<Pick<SignalReactionTarget, \"targetTimestamp\" | \"targetAuthor\">>> {\n const memory = await runtime.getMemoryById(messageId).catch(() => null);\n const metadata = memory?.metadata as Record<string, unknown> | undefined;\n const sender = metadata?.sender as Record<string, unknown> | undefined;\n const targetTimestamp = Number(\n metadata?.messageIdFull ?? metadata?.timestamp ?? memory?.createdAt\n );\n const targetAuthor =\n typeof sender?.id === \"string\"\n ? sender.id\n : typeof metadata?.fromId === \"string\"\n ? metadata.fromId\n : undefined;\n return { targetTimestamp, targetAuthor };\n }\n\n async getConnectorUser(\n _runtime: IAgentRuntime,\n params: ConnectorUserLookupParams\n ): Promise<unknown> {\n const lookup = params.userId ?? params.handle ?? params.username ?? params.query;\n if (!lookup) {\n return null;\n }\n const accountId = this.normalizeAccountId(params.target?.accountId);\n const contacts = await this.listConnectorContacts(accountId);\n const normalizedLookup = normalizeSignalQuery(lookup);\n const contact = contacts.find((candidate) =>\n [candidate.number, candidate.uuid, candidate.name, candidate.profileName]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .some((value) => normalizeSignalQuery(value).includes(normalizedLookup))\n );\n if (!contact) {\n return null;\n }\n const label = getSignalContactDisplayName(contact);\n return {\n id: this.getEntityId(contact.number, accountId),\n agentId: this.runtime.agentId,\n names: [label, contact.name, contact.profileName, contact.number].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0\n ),\n metadata: {\n source: \"signal\",\n accountId,\n signal: {\n accountId,\n number: contact.number,\n uuid: contact.uuid,\n blocked: contact.blocked,\n },\n },\n };\n }\n\n async getGroup(groupId: string, accountId?: string): Promise<SignalGroup | null> {\n const normalizedAccountId = this.normalizeAccountId(accountId);\n const client = this.getClientForAccount(normalizedAccountId);\n if (!client) {\n throw new Error(\"Signal client not initialized\");\n }\n\n const group = await client.getGroup(groupId);\n if (group) {\n this.cacheGroups(normalizedAccountId, [group]);\n }\n\n return group;\n }\n\n async sendTypingIndicator(recipient: string, accountId?: string): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) return;\n await client.sendTyping(recipient);\n }\n\n async stopTypingIndicator(recipient: string, accountId?: string): Promise<void> {\n const client = this.getClientForAccount(accountId);\n if (!client) return;\n await client.sendTyping(recipient, true);\n }\n\n private splitMessage(text: string): string[] {\n if (text.length <= MAX_SIGNAL_MESSAGE_LENGTH) {\n return [text];\n }\n\n const messages: string[] = [];\n let remaining = text;\n\n while (remaining.length > 0) {\n if (remaining.length <= MAX_SIGNAL_MESSAGE_LENGTH) {\n messages.push(remaining);\n break;\n }\n\n let splitIndex = MAX_SIGNAL_MESSAGE_LENGTH;\n\n const lastNewline = remaining.lastIndexOf(\"\\n\", MAX_SIGNAL_MESSAGE_LENGTH);\n if (lastNewline > MAX_SIGNAL_MESSAGE_LENGTH / 2) {\n splitIndex = lastNewline + 1;\n } else {\n const lastSpace = remaining.lastIndexOf(\" \", MAX_SIGNAL_MESSAGE_LENGTH);\n if (lastSpace > MAX_SIGNAL_MESSAGE_LENGTH / 2) {\n splitIndex = lastSpace + 1;\n }\n }\n\n messages.push(remaining.slice(0, splitIndex));\n remaining = remaining.slice(splitIndex);\n }\n\n return messages;\n }\n\n getContact(number: string): SignalContact | null {\n return this.contactCache.get(number) || null;\n }\n\n getCachedGroup(groupId: string): SignalGroup | null {\n return this.groupCache.get(groupId) || null;\n }\n\n getAccountNumber(): string | null {\n return this.accountNumber;\n }\n\n isServiceConnected(): boolean {\n return this.isConnected;\n }\n}\n",
66
66
  "/**\n * Options for Signal RPC requests\n */\nexport interface SignalRpcOptions {\n baseUrl: string;\n timeoutMs?: number;\n}\n\n/**\n * Signal RPC error structure\n */\nexport interface SignalRpcError {\n code?: number;\n message?: string;\n data?: unknown;\n}\n\n/**\n * Signal RPC response structure\n */\nexport interface SignalRpcResponse<T> {\n jsonrpc?: string;\n result?: T;\n error?: SignalRpcError;\n id?: string | number | null;\n}\n\n/**\n * Signal SSE event structure\n */\nexport interface SignalSseEvent {\n event?: string;\n data?: string;\n id?: string;\n}\n\n/**\n * Result of a Signal health check\n */\nexport interface SignalCheckResult {\n ok: boolean;\n status?: number | null;\n error?: string | null;\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\n/**\n * Normalizes a base URL for Signal CLI HTTP server\n */\nexport function normalizeBaseUrl(url: string): string {\n const trimmed = url.trim().slice(0, 2048);\n if (!trimmed) {\n throw new Error(\"Signal base URL is required\");\n }\n if (/^https?:\\/\\//i.test(trimmed)) {\n return trimmed.replace(/\\/{1,256}$/, \"\");\n }\n return `http://${trimmed}`.replace(/\\/{1,256}$/, \"\");\n}\n\n/**\n * Generates a UUID for RPC request IDs\n */\nfunction generateId(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Fetches with a timeout\n */\nasync function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs: number\n): Promise<Response> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timer);\n }\n}\n\n/**\n * Makes a JSON-RPC request to the Signal CLI HTTP server\n */\nexport async function signalRpcRequest<T = unknown>(\n method: string,\n params: Record<string, unknown> | undefined,\n opts: SignalRpcOptions\n): Promise<T> {\n const baseUrl = normalizeBaseUrl(opts.baseUrl);\n const id = generateId();\n const body = JSON.stringify({\n jsonrpc: \"2.0\",\n method,\n params,\n id,\n });\n\n const res = await fetchWithTimeout(\n `${baseUrl}/api/v1/rpc`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body,\n },\n opts.timeoutMs ?? DEFAULT_TIMEOUT_MS\n );\n\n // 201 indicates success with no response body\n if (res.status === 201) {\n return undefined as T;\n }\n\n const text = await res.text();\n if (!text) {\n throw new Error(`Signal RPC empty response (status ${res.status})`);\n }\n\n const parsed = JSON.parse(text) as SignalRpcResponse<T>;\n if (parsed.error) {\n const code = parsed.error.code ?? \"unknown\";\n const msg = parsed.error.message ?? \"Signal RPC error\";\n throw new Error(`Signal RPC ${code}: ${msg}`);\n }\n\n return parsed.result as T;\n}\n\n/**\n * Checks if the Signal CLI HTTP server is available\n */\nexport async function signalCheck(\n baseUrl: string,\n timeoutMs: number = DEFAULT_TIMEOUT_MS\n): Promise<SignalCheckResult> {\n const normalized = normalizeBaseUrl(baseUrl);\n try {\n const res = await fetchWithTimeout(`${normalized}/api/v1/check`, { method: \"GET\" }, timeoutMs);\n if (!res.ok) {\n return { ok: false, status: res.status, error: `HTTP ${res.status}` };\n }\n return { ok: true, status: res.status, error: null };\n } catch (err) {\n return {\n ok: false,\n status: null,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\n/**\n * Gets the current Signal version from the CLI\n */\nexport async function signalGetVersion(opts: SignalRpcOptions): Promise<string> {\n return signalRpcRequest<string>(\"version\", undefined, opts);\n}\n\n/**\n * Lists all registered Signal accounts\n */\nexport async function signalListAccounts(\n opts: SignalRpcOptions\n): Promise<Array<{ number: string; uuid: string }>> {\n return signalRpcRequest<Array<{ number: string; uuid: string }>>(\"listAccounts\", undefined, opts);\n}\n\n/**\n * Gets contacts for a Signal account\n */\nexport async function signalListContacts(\n account: string,\n opts: SignalRpcOptions\n): Promise<\n Array<{\n number: string;\n uuid: string;\n name?: string;\n profileName?: string;\n blocked?: boolean;\n }>\n> {\n return signalRpcRequest(\"listContacts\", { account }, opts);\n}\n\n/**\n * Gets groups for a Signal account\n */\nexport async function signalListGroups(\n account: string,\n opts: SignalRpcOptions\n): Promise<\n Array<{\n id: string;\n name: string;\n description?: string;\n isMember: boolean;\n isBlocked: boolean;\n members: Array<{ uuid: string; number?: string }>;\n }>\n> {\n return signalRpcRequest(\"listGroups\", { account }, opts);\n}\n\n/**\n * Sends a message to a recipient or group\n */\nexport async function signalSend(\n params: {\n account: string;\n recipients?: string[];\n groupId?: string;\n message?: string;\n attachments?: string[];\n quote?: { timestamp: number; author: string };\n },\n opts: SignalRpcOptions\n): Promise<{ timestamp: number }> {\n return signalRpcRequest(\"send\", params, opts);\n}\n\n/**\n * Sends a reaction to a message\n */\nexport async function signalSendReaction(\n params: {\n account: string;\n recipient?: string;\n groupId?: string;\n emoji: string;\n targetAuthor: string;\n targetTimestamp: number;\n remove?: boolean;\n },\n opts: SignalRpcOptions\n): Promise<void> {\n return signalRpcRequest(\"sendReaction\", params, opts);\n}\n\n/**\n * Sends a typing indicator\n */\nexport async function signalSendTyping(\n params: {\n account: string;\n recipient?: string;\n groupId?: string;\n stop?: boolean;\n },\n opts: SignalRpcOptions\n): Promise<void> {\n return signalRpcRequest(\"sendTyping\", params, opts);\n}\n\n/**\n * Sends a read receipt\n */\nexport async function signalSendReadReceipt(\n params: {\n account: string;\n recipient: string;\n targetTimestamp: number;\n },\n opts: SignalRpcOptions\n): Promise<void> {\n return signalRpcRequest(\"sendReadReceipt\", params, opts);\n}\n\n/**\n * Streams SSE events from the Signal CLI HTTP server\n */\nexport async function streamSignalEvents(params: {\n baseUrl: string;\n account?: string;\n abortSignal?: AbortSignal;\n onEvent: (event: SignalSseEvent) => void;\n}): Promise<void> {\n const baseUrl = normalizeBaseUrl(params.baseUrl);\n const url = new URL(`${baseUrl}/api/v1/events`);\n if (params.account) {\n url.searchParams.set(\"account\", params.account);\n }\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: { Accept: \"text/event-stream\" },\n signal: params.abortSignal,\n });\n\n if (!res.ok || !res.body) {\n throw new Error(`Signal SSE failed (${res.status} ${res.statusText || \"error\"})`);\n }\n\n const reader = res.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let currentEvent: SignalSseEvent = {};\n\n const flushEvent = () => {\n if (!currentEvent.data && !currentEvent.event && !currentEvent.id) {\n return;\n }\n params.onEvent({\n event: currentEvent.event,\n data: currentEvent.data,\n id: currentEvent.id,\n });\n currentEvent = {};\n };\n\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n let lineEnd = buffer.indexOf(\"\\n\");\n\n while (lineEnd !== -1) {\n let line = buffer.slice(0, lineEnd);\n buffer = buffer.slice(lineEnd + 1);\n if (line.endsWith(\"\\r\")) {\n line = line.slice(0, -1);\n }\n\n // Empty line means end of event\n if (line === \"\") {\n flushEvent();\n lineEnd = buffer.indexOf(\"\\n\");\n continue;\n }\n\n // Comment line\n if (line.startsWith(\":\")) {\n lineEnd = buffer.indexOf(\"\\n\");\n continue;\n }\n\n // Parse field: value\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1) {\n lineEnd = buffer.indexOf(\"\\n\");\n continue;\n }\n\n const field = line.slice(0, colonIndex).trim();\n let value = line.slice(colonIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.slice(1);\n }\n\n if (field === \"event\") {\n currentEvent.event = value;\n } else if (field === \"data\") {\n currentEvent.data = currentEvent.data ? `${currentEvent.data}\\n${value}` : value;\n } else if (field === \"id\") {\n currentEvent.id = value;\n }\n\n lineEnd = buffer.indexOf(\"\\n\");\n }\n }\n\n // Flush any remaining event\n flushEvent();\n}\n\n/**\n * Parses an SSE data field as JSON\n */\nexport function parseSignalEventData<T>(data: string | undefined): T | null {\n if (!data) {\n return null;\n }\n try {\n return JSON.parse(data) as T;\n } catch {\n return null;\n }\n}\n\n/**\n * Creates an SSE event handler with reconnection logic\n */\nexport function createSignalEventStream(params: {\n baseUrl: string;\n account?: string;\n onEvent: (event: SignalSseEvent) => void;\n onError?: (error: Error) => void;\n onConnect?: () => void;\n onDisconnect?: () => void;\n reconnectDelayMs?: number;\n maxReconnectDelayMs?: number;\n}): {\n start: () => void;\n stop: () => void;\n isRunning: () => boolean;\n} {\n let abortController: AbortController | null = null;\n let running = false;\n let reconnectDelay = params.reconnectDelayMs ?? 1000;\n const maxDelay = params.maxReconnectDelayMs ?? 30000;\n\n const connect = async () => {\n if (!running) {\n return;\n }\n\n abortController = new AbortController();\n\n try {\n params.onConnect?.();\n reconnectDelay = params.reconnectDelayMs ?? 1000;\n\n await streamSignalEvents({\n baseUrl: params.baseUrl,\n account: params.account,\n abortSignal: abortController.signal,\n onEvent: params.onEvent,\n });\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n params.onError?.(error instanceof Error ? error : new Error(String(error)));\n } finally {\n params.onDisconnect?.();\n }\n\n // Reconnect with exponential backoff\n if (running) {\n setTimeout(connect, reconnectDelay);\n reconnectDelay = Math.min(reconnectDelay * 2, maxDelay);\n }\n };\n\n return {\n start: () => {\n if (running) {\n return;\n }\n running = true;\n connect();\n },\n stop: () => {\n running = false;\n abortController?.abort();\n abortController = null;\n },\n isRunning: () => running,\n };\n}\n",
67
- "/**\n * Signal pairing service — manages device linking via QR code.\n *\n * Mirrors whatsapp-pairing.ts but uses @elizaos/signal-native instead of\n * Baileys. Signal linking produces a single provisioning URL (not a refresh\n * loop) — if it times out, restart the session.\n */\n\nimport { type ChildProcess, execFile, spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { promisify } from \"node:util\";\nimport { logger } from \"@elizaos/core\";\n\nconst LOG_PREFIX = \"[signal-pairing]\";\nconst SIGNAL_NATIVE_MODULE_ID = \"@elizaos/signal-native\";\nconst execFileAsync = promisify(execFile);\nconst DEFAULT_SIGNAL_CLI_NAME = \"signal-cli\";\nconst DEFAULT_SIGNAL_DEVICE_NAME = \"Eliza Mac\";\nconst DEFAULT_SIGNAL_CLI_WAIT_TIMEOUT_MS = 30_000;\nconst BREW_OPENJDK_HOME = \"/opt/homebrew/opt/openjdk\";\nconst COMMON_SIGNAL_CLI_PATHS = [\n \"/opt/homebrew/bin/signal-cli\",\n \"/usr/local/bin/signal-cli\",\n \"/home/linuxbrew/.linuxbrew/bin/signal-cli\",\n];\nconst COMMON_HOMEBREW_PATHS = [\n \"/opt/homebrew/bin/brew\",\n \"/usr/local/bin/brew\",\n \"/home/linuxbrew/.linuxbrew/bin/brew\",\n];\nconst SIGNAL_CLI_AUTO_INSTALL_ENV = \"SIGNAL_CLI_AUTO_INSTALL\";\nconst ELIZA_SIGNAL_CLI_AUTO_INSTALL_ENV = \"ELIZA_SIGNAL_CLI_AUTO_INSTALL\";\n\ntype ExecFileAsync = (\n file: string,\n args?: readonly string[],\n options?: { env?: NodeJS.ProcessEnv }\n) => Promise<{ stdout: string; stderr: string }>;\n\ninterface ExecutableResolutionDeps {\n env: NodeJS.ProcessEnv;\n execFile: ExecFileAsync;\n existsSync: (path: string) => boolean;\n platform: NodeJS.Platform;\n}\n\ntype SignalNativeModule = {\n linkDevice: (authDir: string, deviceName: string) => Promise<string>;\n finishLink: (authDir: string) => Promise<void>;\n getProfile: (authDir: string) => Promise<{ uuid: string; phoneNumber?: string | null }>;\n};\n\n/** Validate accountId to prevent path traversal. */\nexport function sanitizeAccountId(raw: string): string {\n const cleaned = raw.replace(/[^a-zA-Z0-9_-]/g, \"\");\n if (!cleaned || cleaned !== raw) {\n throw new Error(\n `Invalid accountId: must only contain alphanumeric characters, dashes, and underscores`\n );\n }\n return cleaned;\n}\n\nexport type SignalPairingStatus =\n | \"idle\"\n | \"initializing\"\n | \"waiting_for_qr\"\n | \"connected\"\n | \"disconnected\"\n | \"timeout\"\n | \"error\";\n\nexport interface SignalPairingEvent {\n type: \"signal-qr\" | \"signal-status\";\n accountId: string;\n qrDataUrl?: string;\n status?: SignalPairingStatus;\n uuid?: string;\n phoneNumber?: string;\n error?: string;\n}\n\nexport interface SignalPairingSnapshot {\n status: SignalPairingStatus;\n qrDataUrl: string | null;\n phoneNumber: string | null;\n error: string | null;\n}\n\nexport interface SignalPairingOptions {\n authDir: string;\n accountId: string;\n cliPath?: string;\n onEvent: (event: SignalPairingEvent) => void;\n}\n\ninterface QrCodeModule {\n toDataURL: (text: string, options?: Record<string, unknown>) => Promise<string>;\n}\n\nexport function extractSignalCliProvisioningUrl(text: string): string | null {\n const match = text.match(/sgnl:\\/\\/linkdevice\\?[^\\s]+/);\n return match?.[0] ?? null;\n}\n\nexport function parseSignalCliAccountsOutput(output: string): string | null {\n const trimmed = output.trim();\n if (!trimmed) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(trimmed) as unknown;\n if (Array.isArray(parsed)) {\n for (const entry of parsed) {\n if (typeof entry === \"string\" && entry.trim().length > 0) {\n return entry.trim();\n }\n if (\n entry &&\n typeof entry === \"object\" &&\n typeof (entry as Record<string, unknown>).number === \"string\"\n ) {\n const number = (entry as Record<string, unknown>).number as string;\n if (number.trim().length > 0) {\n return number;\n }\n }\n }\n }\n } catch {\n // Plain-text output fallback handled below.\n }\n\n for (const line of trimmed.split(/\\r?\\n/)) {\n const account = line.trim();\n if (account.length > 0) {\n return account;\n }\n }\n\n return null;\n}\n\nfunction createExecutableResolutionDeps(\n env: NodeJS.ProcessEnv = process.env\n): ExecutableResolutionDeps {\n return {\n env,\n execFile: execFileAsync as ExecFileAsync,\n existsSync: fs.existsSync,\n platform: os.platform(),\n };\n}\n\nasync function resolveExecutablePath(\n binary: string,\n deps: ExecutableResolutionDeps = createExecutableResolutionDeps()\n): Promise<string | null> {\n const trimmed = binary.trim();\n if (!trimmed) {\n return null;\n }\n\n if (trimmed.includes(\"/\") || trimmed.startsWith(\".\")) {\n return deps.existsSync(trimmed) ? trimmed : null;\n }\n\n try {\n const { stdout } = await deps.execFile(\"/usr/bin/which\", [trimmed]);\n const resolved = stdout.trim();\n return resolved.length > 0 ? resolved : null;\n } catch {\n if (trimmed !== DEFAULT_SIGNAL_CLI_NAME) {\n return null;\n }\n\n for (const candidate of COMMON_SIGNAL_CLI_PATHS) {\n if (deps.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n }\n}\n\nfunction autoInstallSignalCliEnabled(env: NodeJS.ProcessEnv): boolean {\n const raw = env[ELIZA_SIGNAL_CLI_AUTO_INSTALL_ENV] ?? env[SIGNAL_CLI_AUTO_INSTALL_ENV];\n if (typeof raw !== \"string\") {\n return true;\n }\n return ![\"0\", \"false\", \"no\", \"off\"].includes(raw.trim().toLowerCase());\n}\n\nfunction canAutoInstallSignalCli(platform: NodeJS.Platform): boolean {\n return platform === \"darwin\" || platform === \"linux\";\n}\n\nasync function resolveHomebrewPath(deps: ExecutableResolutionDeps): Promise<string | null> {\n try {\n const { stdout } = await deps.execFile(\"/usr/bin/which\", [\"brew\"]);\n const resolved = stdout.trim();\n if (resolved.length > 0) {\n return resolved;\n }\n } catch {\n for (const candidate of COMMON_HOMEBREW_PATHS) {\n if (deps.existsSync(candidate)) {\n return candidate;\n }\n }\n }\n return null;\n}\n\nasync function installSignalCliWithHomebrew(deps: ExecutableResolutionDeps): Promise<boolean> {\n const brewPath = await resolveHomebrewPath(deps);\n if (!brewPath) {\n return false;\n }\n\n try {\n await deps.execFile(brewPath, [\"install\", \"signal-cli\"], { env: deps.env });\n } catch (error) {\n throw new Error(\n `Failed to auto-install signal-cli with Homebrew. ${signalCliInstallInstructions(deps.platform)}`,\n { cause: error }\n );\n }\n return true;\n}\n\nfunction isDefaultSignalCliRequest(\n requestedBinary: string,\n options: Pick<SignalPairingOptions, \"cliPath\">,\n env: NodeJS.ProcessEnv\n): boolean {\n return (\n requestedBinary === DEFAULT_SIGNAL_CLI_NAME &&\n !options.cliPath?.trim() &&\n !env.SIGNAL_CLI_PATH?.trim()\n );\n}\n\nexport async function resolveSignalCliExecutable(\n options: {\n cliPath?: string;\n env?: NodeJS.ProcessEnv;\n execFile?: ExecFileAsync;\n existsSync?: (path: string) => boolean;\n platform?: NodeJS.Platform;\n } = {}\n): Promise<string | null> {\n const deps: ExecutableResolutionDeps = {\n ...createExecutableResolutionDeps(options.env),\n ...(options.execFile ? { execFile: options.execFile } : {}),\n ...(options.existsSync ? { existsSync: options.existsSync } : {}),\n ...(options.platform ? { platform: options.platform } : {}),\n };\n const requestedBinary =\n options.cliPath?.trim() || deps.env.SIGNAL_CLI_PATH?.trim() || DEFAULT_SIGNAL_CLI_NAME;\n\n const existingPath = await resolveExecutablePath(requestedBinary, deps);\n if (existingPath) {\n return existingPath;\n }\n\n if (\n !canAutoInstallSignalCli(deps.platform) ||\n !isDefaultSignalCliRequest(requestedBinary, options, deps.env) ||\n !autoInstallSignalCliEnabled(deps.env)\n ) {\n return null;\n }\n\n const installed = await installSignalCliWithHomebrew(deps);\n if (!installed) {\n return null;\n }\n return resolveExecutablePath(DEFAULT_SIGNAL_CLI_NAME, deps);\n}\n\nexport function signalCliInstallInstructions(platform: NodeJS.Platform): string {\n if (platform === \"darwin\") {\n return \"Eliza can auto-install the default Signal CLI on macOS when Homebrew is available (`brew install signal-cli`). Fallback: install signal-cli from https://github.com/AsamK/signal-cli/releases and set SIGNAL_CLI_PATH to its bin/signal-cli executable.\";\n }\n if (platform === \"linux\") {\n return \"Eliza can auto-install the default Signal CLI on Linux when Homebrew/Linuxbrew is available (`brew install signal-cli`). Fallback: install the latest signal-cli Linux release from https://github.com/AsamK/signal-cli/releases, ensure Java Runtime 25+ is installed, and set SIGNAL_CLI_PATH to its bin/signal-cli executable.\";\n }\n if (platform === \"win32\") {\n return \"On Windows, install the latest signal-cli release from https://github.com/AsamK/signal-cli/releases, ensure Java Runtime 25+ is installed, and set SIGNAL_CLI_PATH to signal-cli.bat or signal-cli.exe. Eliza does not auto-run a Windows package manager.\";\n }\n return \"Install signal-cli from https://github.com/AsamK/signal-cli/releases for your platform, ensure Java Runtime 25+ is installed, and set SIGNAL_CLI_PATH to the signal-cli executable.\";\n}\n\nexport function missingSignalCliMessage(\n cliPath: string | undefined,\n env: NodeJS.ProcessEnv = process.env,\n platform: NodeJS.Platform = os.platform()\n): string {\n const requestedBinary = cliPath?.trim() || env.SIGNAL_CLI_PATH?.trim() || DEFAULT_SIGNAL_CLI_NAME;\n const installHint =\n requestedBinary === DEFAULT_SIGNAL_CLI_NAME\n ? signalCliInstallInstructions(platform)\n : \"Install that binary or update SIGNAL_CLI_PATH to point at an existing signal-cli executable.\";\n return `Failed to load dependencies: Cannot find ${requestedBinary}. ${installHint}`;\n}\n\nfunction resolveSignalCliJavaHome(): string | null {\n if (fs.existsSync(BREW_OPENJDK_HOME)) {\n return BREW_OPENJDK_HOME;\n }\n\n if (typeof process.env.JAVA_HOME === \"string\" && process.env.JAVA_HOME.trim().length > 0) {\n return process.env.JAVA_HOME.trim();\n }\n\n return null;\n}\n\nfunction buildSignalCliEnv(): NodeJS.ProcessEnv {\n const env = { ...process.env };\n const javaHome = resolveSignalCliJavaHome();\n\n if (javaHome) {\n env.JAVA_HOME = javaHome;\n const javaBin = path.join(javaHome, \"bin\");\n env.PATH = env.PATH ? `${javaBin}:${env.PATH}` : javaBin;\n }\n\n return env;\n}\n\nexport function classifySignalPairingErrorStatus(errorMessage: string): SignalPairingStatus {\n return /(timed?\\s*out|timeout|expired)/i.test(errorMessage) ? \"timeout\" : \"error\";\n}\n\nexport class SignalPairingSession {\n private status: SignalPairingStatus = \"idle\";\n private options: SignalPairingOptions;\n private aborted = false;\n private qrDataUrl: string | null = null;\n private phoneNumber: string | null = null;\n private lastError: string | null = null;\n private activeChild: ChildProcess | null = null;\n\n constructor(options: SignalPairingOptions) {\n this.options = options;\n }\n\n async start(): Promise<void> {\n this.aborted = false;\n this.qrDataUrl = null;\n this.phoneNumber = null;\n this.lastError = null;\n this.setStatus(\"initializing\");\n\n let qrCode: QrCodeModule;\n try {\n const importedQrCode = await import(\"qrcode\");\n qrCode = (importedQrCode.default ?? importedQrCode) as QrCodeModule;\n } catch (err) {\n const message = `Failed to load QR dependency: ${String(err)}`;\n this.lastError = message;\n this.setStatus(\"error\");\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status: \"error\",\n error: message,\n });\n return;\n }\n\n fs.mkdirSync(this.options.authDir, { recursive: true });\n\n try {\n const native = await this.loadSignalNativeModule();\n if (native) {\n await this.startWithSignalNative(native, qrCode);\n return;\n }\n\n await this.startWithSignalCli(qrCode);\n } catch (err) {\n if (this.aborted) return;\n\n const errMsg = String(err);\n logger.error(`${LOG_PREFIX} Linking failed: ${errMsg}`);\n\n this.qrDataUrl = null;\n this.lastError = errMsg;\n const status = classifySignalPairingErrorStatus(errMsg);\n this.setStatus(status);\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status,\n error: errMsg,\n });\n }\n }\n\n stop(): void {\n this.aborted = true;\n this.activeChild?.kill(\"SIGTERM\");\n this.activeChild = null;\n }\n\n getStatus(): SignalPairingStatus {\n return this.status;\n }\n\n getSnapshot(): SignalPairingSnapshot {\n return {\n status: this.status,\n qrDataUrl: this.qrDataUrl,\n phoneNumber: this.phoneNumber,\n error: this.lastError,\n };\n }\n\n private setStatus(status: SignalPairingStatus): void {\n this.status = status;\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status,\n });\n }\n\n private async loadSignalNativeModule(): Promise<SignalNativeModule | null> {\n try {\n const moduleSpecifier: string = SIGNAL_NATIVE_MODULE_ID;\n const imported = await import(/* @vite-ignore */ moduleSpecifier);\n return imported as SignalNativeModule;\n } catch (error) {\n logger.info(\n `${LOG_PREFIX} Signal native module unavailable, using signal-cli pairing: ${String(error)}`\n );\n return null;\n }\n }\n\n private async startWithSignalNative(\n native: SignalNativeModule,\n qrCode: QrCodeModule\n ): Promise<void> {\n logger.info(`${LOG_PREFIX} Starting device linking with signal-native...`);\n const provisioningUrl = await native.linkDevice(\n this.options.authDir,\n DEFAULT_SIGNAL_DEVICE_NAME\n );\n\n if (this.aborted) return;\n\n const qrDataUrl = await qrCode.toDataURL(provisioningUrl, {\n width: 256,\n margin: 2,\n color: { dark: \"#000000\", light: \"#ffffff\" },\n });\n\n this.qrDataUrl = qrDataUrl;\n this.lastError = null;\n this.setStatus(\"waiting_for_qr\");\n this.options.onEvent({\n type: \"signal-qr\",\n accountId: this.options.accountId,\n qrDataUrl,\n });\n\n logger.info(`${LOG_PREFIX} QR code generated, waiting for user to scan...`);\n\n await native.finishLink(this.options.authDir);\n if (this.aborted) return;\n\n let uuid = \"\";\n let phoneNumber = \"\";\n try {\n const profile = await native.getProfile(this.options.authDir);\n uuid = profile.uuid;\n phoneNumber = profile.phoneNumber ?? \"\";\n } catch (error) {\n logger.warn(`${LOG_PREFIX} Failed to read Signal profile after linking: ${String(error)}`);\n }\n\n this.finishConnected(phoneNumber || null, uuid || undefined);\n }\n\n private async startWithSignalCli(qrCode: QrCodeModule): Promise<void> {\n const cliPath = await resolveSignalCliExecutable({\n cliPath: this.options.cliPath,\n env: process.env,\n });\n\n if (!cliPath) {\n throw new Error(missingSignalCliMessage(this.options.cliPath));\n }\n\n logger.info(`${LOG_PREFIX} Starting device linking with signal-cli...`);\n\n const child = spawn(\n cliPath,\n [\"--config\", this.options.authDir, \"link\", \"-n\", DEFAULT_SIGNAL_DEVICE_NAME],\n {\n env: buildSignalCliEnv(),\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n }\n );\n this.activeChild = child;\n\n const stderrLines: string[] = [];\n let provisioningUrl: string | null = null;\n const waitForProvisioningUrl = new Promise<string>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(\n new Error(\n `signal-cli link did not emit a provisioning URL within ${DEFAULT_SIGNAL_CLI_WAIT_TIMEOUT_MS}ms`\n )\n );\n }, DEFAULT_SIGNAL_CLI_WAIT_TIMEOUT_MS);\n\n const onLine = (line: string, source: \"stdout\" | \"stderr\"): void => {\n const trimmed = line.trim();\n if (!trimmed) {\n return;\n }\n const extracted = extractSignalCliProvisioningUrl(trimmed);\n if (extracted) {\n provisioningUrl = extracted;\n clearTimeout(timer);\n resolve(extracted);\n return;\n }\n if (source === \"stderr\") {\n stderrLines.push(trimmed);\n }\n };\n\n const stdoutReader = createInterface({ input: child.stdout });\n const stderrReader = createInterface({ input: child.stderr });\n stdoutReader.on(\"line\", (line) => onLine(line, \"stdout\"));\n stderrReader.on(\"line\", (line) => onLine(line, \"stderr\"));\n\n child.once(\"error\", (error) => {\n clearTimeout(timer);\n reject(error);\n });\n\n child.once(\"exit\", (code, signal) => {\n if (provisioningUrl) {\n return;\n }\n clearTimeout(timer);\n const detail =\n stderrLines.join(\"\\n\") ||\n (signal\n ? `signal-cli link terminated by ${signal}`\n : `signal-cli link exited with code ${String(code)}`);\n reject(new Error(detail));\n });\n });\n\n const linkUrl = await waitForProvisioningUrl;\n if (this.aborted) {\n return;\n }\n\n const qrDataUrl = await qrCode.toDataURL(linkUrl, {\n width: 256,\n margin: 2,\n color: { dark: \"#000000\", light: \"#ffffff\" },\n });\n this.qrDataUrl = qrDataUrl;\n this.lastError = null;\n this.setStatus(\"waiting_for_qr\");\n this.options.onEvent({\n type: \"signal-qr\",\n accountId: this.options.accountId,\n qrDataUrl,\n });\n\n await new Promise<void>((resolve, reject) => {\n child.once(\"error\", reject);\n child.once(\"exit\", (code, signal) => {\n if (this.aborted) {\n resolve();\n return;\n }\n if (code === 0) {\n resolve();\n return;\n }\n const detail =\n stderrLines.join(\"\\n\") ||\n (signal\n ? `signal-cli link terminated by ${signal}`\n : `signal-cli link exited with code ${String(code)}`);\n reject(new Error(detail));\n });\n });\n\n if (this.aborted) {\n return;\n }\n\n const phoneNumber = await this.readLinkedSignalAccount(cliPath);\n this.finishConnected(phoneNumber, undefined);\n }\n\n private finishConnected(phoneNumber: string | null, uuid?: string): void {\n this.activeChild = null;\n this.qrDataUrl = null;\n this.phoneNumber = phoneNumber;\n this.lastError = null;\n this.setStatus(\"connected\");\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status: \"connected\",\n ...(uuid ? { uuid } : {}),\n phoneNumber: this.phoneNumber ?? undefined,\n });\n\n logger.info(\n `${LOG_PREFIX} Device linked successfully${phoneNumber ? ` (${phoneNumber})` : \"\"}`\n );\n }\n\n private async readLinkedSignalAccount(cliPath: string): Promise<string | null> {\n try {\n const { stdout } = await execFileAsync(\n cliPath,\n [\"--config\", this.options.authDir, \"-o\", \"json\", \"listAccounts\"],\n {\n env: buildSignalCliEnv(),\n }\n );\n return parseSignalCliAccountsOutput(stdout);\n } catch (error) {\n logger.warn(`${LOG_PREFIX} Failed to read linked Signal account: ${String(error)}`);\n return null;\n }\n }\n}\n\nexport function signalAuthExists(workspaceDir: string, accountId = \"default\"): boolean {\n const authDir = path.join(workspaceDir, \"signal-auth\", accountId);\n if (!fs.existsSync(authDir)) {\n return false;\n }\n\n const accountsPath = path.join(authDir, \"data\", \"accounts.json\");\n if (!fs.existsSync(accountsPath)) {\n return false;\n }\n\n try {\n const parsed = JSON.parse(fs.readFileSync(accountsPath, \"utf8\")) as {\n accounts?: unknown;\n };\n return Array.isArray(parsed.accounts) && parsed.accounts.length > 0;\n } catch {\n return false;\n }\n}\n\nexport function signalLogout(workspaceDir: string, accountId = \"default\"): void {\n const authDir = path.join(workspaceDir, \"signal-auth\", accountId);\n fs.rmSync(authDir, { recursive: true, force: true });\n}\n",
68
- "import type { Character, EventPayload, MessagePayload, WorldPayload } from \"@elizaos/core\";\n\n/**\n * Signal-specific event types\n */\nexport enum SignalEventTypes {\n MESSAGE_RECEIVED = \"SIGNAL_MESSAGE_RECEIVED\",\n MESSAGE_SENT = \"SIGNAL_MESSAGE_SENT\",\n REACTION_RECEIVED = \"SIGNAL_REACTION_RECEIVED\",\n GROUP_JOINED = \"SIGNAL_GROUP_JOINED\",\n GROUP_LEFT = \"SIGNAL_GROUP_LEFT\",\n TYPING_STARTED = \"SIGNAL_TYPING_STARTED\",\n TYPING_STOPPED = \"SIGNAL_TYPING_STOPPED\",\n READ_RECEIPT = \"SIGNAL_READ_RECEIPT\",\n}\n\nexport interface SignalMessageReceivedPayload extends MessagePayload {\n sender: string;\n groupId: string | undefined;\n timestamp: number;\n attachments: SignalAttachment[];\n isGroupMessage: boolean;\n}\n\nexport interface SignalMessageSentPayload extends MessagePayload {\n recipient: string;\n groupId: string | undefined;\n timestamp: number;\n}\n\nexport interface SignalReactionPayload extends EventPayload {\n emoji: string;\n sender: string;\n targetTimestamp: number;\n targetAuthor: string;\n isRemove: boolean;\n}\n\nexport interface SignalGroupPayload extends WorldPayload {\n groupId: string;\n groupName: string;\n members: string[];\n}\n\nexport interface SignalAttachment {\n contentType: string;\n filename: string | undefined;\n id: string;\n size: number;\n width: number | undefined;\n height: number | undefined;\n caption: string | undefined;\n blurhash: string | undefined;\n}\n\nexport interface SignalEventPayloadMap {\n [SignalEventTypes.MESSAGE_RECEIVED]: SignalMessageReceivedPayload;\n [SignalEventTypes.MESSAGE_SENT]: SignalMessageSentPayload;\n [SignalEventTypes.REACTION_RECEIVED]: SignalReactionPayload;\n [SignalEventTypes.GROUP_JOINED]: SignalGroupPayload;\n [SignalEventTypes.GROUP_LEFT]: SignalGroupPayload;\n}\n\nexport interface SignalContact {\n number: string;\n uuid: string | undefined;\n name: string | undefined;\n profileName: string | undefined;\n color: string | undefined;\n blocked: boolean;\n}\n\nexport interface SignalGroup {\n id: string;\n name: string;\n description: string | undefined;\n isMember: boolean;\n isBlocked: boolean;\n members: SignalGroupMember[];\n admins: string[];\n inviteLink: string | undefined;\n}\n\nexport interface SignalGroupMember {\n uuid: string;\n number: string | undefined;\n role: \"ADMINISTRATOR\" | \"DEFAULT\";\n}\n\nexport interface SignalMessage {\n timestamp: number;\n sender: string;\n senderUuid: string | undefined;\n groupId: string | undefined;\n message: string | undefined;\n attachments: SignalAttachment[];\n quote: SignalQuote | undefined;\n reaction: SignalReactionInfo | undefined;\n expiresInSeconds: number | undefined;\n viewOnce: boolean;\n}\n\nexport interface SignalRecentMessage {\n id: string;\n roomId: string;\n channelId: string;\n roomName: string;\n speakerName: string;\n text: string;\n createdAt: number;\n isFromAgent: boolean;\n isGroup: boolean;\n}\n\nexport interface SignalQuote {\n id: number;\n author: string;\n authorUuid: string | undefined;\n text: string;\n attachments: SignalAttachment[];\n}\n\nexport interface SignalReactionInfo {\n emoji: string;\n targetAuthor: string;\n targetAuthorUuid: string | undefined;\n targetSentTimestamp: number;\n isRemove: boolean;\n}\n\nexport interface ISignalService {\n accountNumber: string | null;\n character: Character;\n isConnected: boolean;\n getRecentMessages(limit?: number): Promise<SignalRecentMessage[]>;\n}\n\nexport const SIGNAL_SERVICE_NAME = \"signal\";\n\nexport const ServiceType = {\n SIGNAL: \"signal\",\n} as const;\n\nexport interface SignalSettings {\n shouldIgnoreGroupMessages: boolean;\n allowedGroups: string[] | undefined;\n blockedNumbers: string[] | undefined;\n /**\n * When false (default), inbound messages are persisted as memories and a\n * MESSAGE_RECEIVED event is emitted, but the agent does NOT auto-generate\n * a reply. Sends only happen via explicit caller action (LifeOps send\n * route, user-issued chat command). Set SIGNAL_AUTO_REPLY=true to opt in.\n */\n autoReply: boolean;\n receiveMode: \"on-start\" | \"manual\";\n}\n\nexport interface SignalMessageSendOptions {\n /** Connector account ID to send from. Defaults to the configured default account. */\n accountId?: string;\n attachments?: string[];\n quote?: { timestamp: number; author: string };\n expiresInSeconds?: number;\n record?: boolean;\n}\n\nexport class SignalPluginError extends Error {\n constructor(\n message: string,\n public readonly code: string\n ) {\n super(message);\n this.name = \"SignalPluginError\";\n }\n}\n\nexport class SignalServiceNotInitializedError extends SignalPluginError {\n constructor() {\n super(\"Signal service is not initialized\", \"SERVICE_NOT_INITIALIZED\");\n this.name = \"SignalServiceNotInitializedError\";\n }\n}\n\nexport class SignalClientNotAvailableError extends SignalPluginError {\n constructor() {\n super(\"Signal client is not available\", \"CLIENT_NOT_AVAILABLE\");\n this.name = \"SignalClientNotAvailableError\";\n }\n}\n\nexport class SignalConfigurationError extends SignalPluginError {\n constructor(missingConfig: string) {\n super(`Missing required configuration: ${missingConfig}`, \"MISSING_CONFIG\");\n this.name = \"SignalConfigurationError\";\n }\n}\n\nexport class SignalApiError extends SignalPluginError {\n constructor(\n message: string,\n public readonly apiErrorCode: string | undefined\n ) {\n super(message, \"API_ERROR\");\n this.name = \"SignalApiError\";\n }\n}\n\n/**\n * Normalize a phone number to E.164 format\n */\nexport function normalizeE164(number: string): string | null {\n // Remove all non-digit characters except leading +\n let cleaned = number.replace(/[^\\d+]/g, \"\");\n\n // Ensure it starts with +\n if (!cleaned.startsWith(\"+\")) {\n // Assume US number if no country code\n if (cleaned.length === 10) {\n cleaned = `+1${cleaned}`;\n } else if (cleaned.length === 11 && cleaned.startsWith(\"1\")) {\n cleaned = `+${cleaned}`;\n } else {\n cleaned = `+${cleaned}`;\n }\n }\n\n // Validate E.164 format: + followed by 7-15 digits\n if (!/^\\+\\d{7,15}$/.test(cleaned)) {\n return null;\n }\n\n return cleaned;\n}\n\n/**\n * Validates an E.164 phone number format\n */\nexport function isValidE164(number: string): boolean {\n return /^\\+\\d{7,15}$/.test(number);\n}\n\n/**\n * Validates a Signal group ID format (base64-encoded)\n */\nexport function isValidGroupId(id: string): boolean {\n // Signal group IDs are base64-encoded\n return /^[A-Za-z0-9+/]+=*$/.test(id) && id.length >= 32;\n}\n\n/**\n * Validates a Signal UUID format\n */\nexport function isValidUuid(uuid: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid);\n}\n\n/**\n * Gets the display name for a Signal contact\n */\nexport function getSignalContactDisplayName(contact: SignalContact): string {\n return contact.profileName || contact.name || contact.number;\n}\n\n/**\n * Maximum message length for Signal messages\n */\nexport const MAX_SIGNAL_MESSAGE_LENGTH = 4000;\n\n/**\n * Maximum attachment size (100MB)\n */\nexport const MAX_SIGNAL_ATTACHMENT_SIZE = 100 * 1024 * 1024;\n",
69
- "/**\n * Signal connector setup HTTP routes.\n *\n * Provides QR-code pairing and disconnect flows for Signal:\n *\n * POST /api/signal/pair start a device-linking session\n * GET /api/signal/status check current connection / pairing state\n * POST /api/signal/pair/stop stop an active pairing session\n * POST /api/signal/disconnect disconnect + wipe auth data\n *\n * These routes are registered with `rawPath: true` so they mount at their\n * legacy paths without the plugin-name prefix.\n */\n\nimport path from \"node:path\";\nimport type { IAgentRuntime, Route, RouteRequest, RouteResponse } from \"@elizaos/core\";\nimport {\n type SignalPairingEvent,\n SignalPairingSession,\n type SignalPairingSnapshot,\n type SignalPairingStatus,\n sanitizeAccountId,\n signalAuthExists,\n signalLogout,\n} from \"./pairing-service\";\n\n// ── Module-level state ──────────────────────────────────────────────────\n// These maps survive across requests within the same process lifetime,\n// mirroring how they were held on ServerState in the monolithic server.\n\ninterface SignalPairingSessionLike {\n start(): Promise<void>;\n stop(): void;\n getStatus(): SignalPairingStatus;\n getSnapshot(): SignalPairingSnapshot;\n}\n\nconst signalPairingSessions = new Map<string, SignalPairingSessionLike>();\nconst signalPairingSnapshots = new Map<string, SignalPairingSnapshot>();\n\nexport const MAX_PAIRING_SESSIONS = 10;\nconst TERMINAL_SIGNAL_PAIRING_STATUSES = new Set<SignalPairingStatus>([\n \"connected\",\n \"disconnected\",\n \"timeout\",\n \"error\",\n]);\n\n// ── Connector setup service interface ───────────────────────────────────\n\ninterface ConnectorSetupService {\n getConfig(): Record<string, unknown>;\n persistConfig(config: Record<string, unknown>): void;\n updateConfig(updater: (config: Record<string, unknown>) => void): void;\n registerEscalationChannel(channelName: string): boolean;\n setOwnerContact(update: {\n source: string;\n channelId?: string;\n entityId?: string;\n roomId?: string;\n }): boolean;\n getWorkspaceDir(): string;\n broadcastWs(data: object): void;\n}\n\nfunction isConnectorSetupService(service: unknown): service is ConnectorSetupService {\n if (!service || typeof service !== \"object\") {\n return false;\n }\n const candidate = service as Partial<ConnectorSetupService>;\n return (\n typeof candidate.getConfig === \"function\" &&\n typeof candidate.updateConfig === \"function\" &&\n typeof candidate.persistConfig === \"function\" &&\n typeof candidate.registerEscalationChannel === \"function\" &&\n typeof candidate.setOwnerContact === \"function\" &&\n typeof candidate.getWorkspaceDir === \"function\" &&\n typeof candidate.broadcastWs === \"function\"\n );\n}\n\nfunction getSetupService(runtime: IAgentRuntime): ConnectorSetupService | null {\n const service = runtime.getService(\"connector-setup\");\n return isConnectorSetupService(service) ? service : null;\n}\n\n// ── Helpers ─────────────────────────────────────────────────────────────\n\nfunction resolveSignalStatusResponse(\n accountId: string,\n session: SignalPairingSessionLike | undefined,\n previousSnapshot: SignalPairingSnapshot | undefined,\n authExists: boolean,\n serviceConnected: boolean\n) {\n const snapshot = session?.getSnapshot() ?? previousSnapshot;\n const status = snapshot?.status ?? (authExists || serviceConnected ? \"connected\" : \"idle\");\n\n return {\n accountId,\n status,\n authExists,\n serviceConnected,\n qrDataUrl: snapshot?.qrDataUrl ?? null,\n phoneNumber: snapshot?.phoneNumber ?? null,\n error: snapshot?.error ?? null,\n };\n}\n\n/** Reap terminal pairing sessions before handling a request. */\nfunction reapTerminalSessions(): void {\n for (const [id, session] of signalPairingSessions) {\n const status = session.getStatus();\n if (status === \"disconnected\" || status === \"timeout\" || status === \"error\") {\n signalPairingSnapshots.set(id, session.getSnapshot());\n session.stop();\n signalPairingSessions.delete(id);\n }\n }\n}\n\n// ── POST /api/signal/pair ───────────────────────────────────────────────\n\nasync function handlePair(\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n): Promise<void> {\n reapTerminalSessions();\n\n const body = (req.body ?? {}) as { accountId?: string };\n let accountId: string;\n try {\n accountId = sanitizeAccountId(\n typeof body.accountId === \"string\" && body.accountId.trim()\n ? body.accountId.trim()\n : \"default\"\n );\n } catch (err) {\n res.status(400).json({ error: (err as Error).message });\n return;\n }\n\n const isReplacing = signalPairingSessions.has(accountId);\n if (!isReplacing && signalPairingSessions.size >= MAX_PAIRING_SESSIONS) {\n res.status(429).json({\n error: `Too many concurrent pairing sessions (max ${MAX_PAIRING_SESSIONS})`,\n });\n return;\n }\n\n const setupService = getSetupService(runtime);\n const workspaceDir = setupService?.getWorkspaceDir() ?? \"\";\n const config = setupService?.getConfig() ?? {};\n const connectors = (config.connectors ?? {}) as Record<string, unknown>;\n\n const authDir = path.join(workspaceDir, \"signal-auth\", accountId);\n signalPairingSessions.get(accountId)?.stop();\n signalPairingSnapshots.delete(accountId);\n\n const signalConfig = (connectors.signal as Record<string, unknown> | undefined) ?? {};\n const configuredCliPath =\n typeof signalConfig.cliPath === \"string\" && signalConfig.cliPath.trim()\n ? signalConfig.cliPath.trim()\n : undefined;\n\n let session: SignalPairingSessionLike;\n session = new SignalPairingSession({\n authDir,\n accountId,\n cliPath: configuredCliPath,\n onEvent: (event: SignalPairingEvent) => {\n setupService?.broadcastWs(event);\n signalPairingSnapshots.set(accountId, session.getSnapshot());\n\n if (event.status === \"connected\") {\n const phoneNumber = event.phoneNumber;\n\n if (setupService) {\n setupService.updateConfig((cfg) => {\n if (!cfg.connectors) cfg.connectors = {};\n const cfgConnectors = cfg.connectors as Record<string, unknown>;\n const previousConfig =\n (cfgConnectors.signal as Record<string, unknown> | undefined) ?? {};\n if (accountId !== \"default\") {\n const accounts =\n typeof previousConfig.accounts === \"object\" && previousConfig.accounts !== null\n ? { ...(previousConfig.accounts as Record<string, Record<string, unknown>>) }\n : {};\n accounts[accountId] = {\n ...(accounts[accountId] ?? {}),\n authDir,\n enabled: true,\n ...(phoneNumber && phoneNumber.trim().length > 0\n ? { account: phoneNumber.trim() }\n : {}),\n };\n cfgConnectors.signal = {\n ...previousConfig,\n accounts,\n enabled: true,\n };\n return;\n }\n cfgConnectors.signal = {\n ...previousConfig,\n authDir,\n enabled: true,\n ...(phoneNumber && phoneNumber.trim().length > 0\n ? { account: phoneNumber.trim() }\n : {}),\n };\n });\n\n // Auto-populate owner contact so LifeOps can deliver reminders\n setupService.setOwnerContact({\n source: \"signal\",\n channelId: phoneNumber ?? undefined,\n });\n // Add Signal to the escalation channel list\n setupService.registerEscalationChannel(\"signal\");\n }\n }\n\n if (\n event.status &&\n TERMINAL_SIGNAL_PAIRING_STATUSES.has(event.status) &&\n signalPairingSessions.get(accountId) === session\n ) {\n signalPairingSessions.delete(accountId);\n }\n },\n });\n\n signalPairingSessions.set(accountId, session);\n signalPairingSnapshots.set(accountId, session.getSnapshot());\n\n void session.start().catch((err) => {\n console.error(`[signal] Pairing session failed for ${accountId}:`, String(err));\n signalPairingSnapshots.set(accountId, session.getSnapshot());\n signalPairingSessions.delete(accountId);\n });\n\n res.status(200).json({\n ok: true,\n ...resolveSignalStatusResponse(\n accountId,\n session,\n signalPairingSnapshots.get(accountId),\n false,\n false\n ),\n });\n}\n\n// ── GET /api/signal/status ──────────────────────────────────────────────\n\nasync function handleStatus(\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n): Promise<void> {\n reapTerminalSessions();\n\n // Extract accountId from query string\n const rawUrl = typeof req.url === \"string\" ? req.url : \"/\";\n const url = new URL(rawUrl, \"http://localhost\");\n let accountId: string;\n try {\n accountId = sanitizeAccountId(url.searchParams.get(\"accountId\") || \"default\");\n } catch (err) {\n res.status(400).json({ error: (err as Error).message });\n return;\n }\n\n const setupService = getSetupService(runtime);\n const workspaceDir = setupService?.getWorkspaceDir() ?? \"\";\n\n const session = signalPairingSessions.get(accountId);\n const previousSnapshot = signalPairingSnapshots.get(accountId);\n const authExists = signalAuthExists(workspaceDir, accountId);\n\n let serviceConnected = false;\n try {\n const sigService = runtime.getService(\"signal\") as {\n connected?: unknown;\n isConnected?: unknown;\n isServiceConnected?: () => boolean;\n } | null;\n if (sigService) {\n serviceConnected =\n Boolean(sigService.connected) ||\n Boolean(sigService.isConnected) ||\n (typeof sigService.isServiceConnected === \"function\" &&\n Boolean((sigService.isServiceConnected as () => boolean)()));\n }\n } catch {\n /* service not yet registered */\n }\n\n res\n .status(200)\n .json(\n resolveSignalStatusResponse(\n accountId,\n session,\n previousSnapshot,\n authExists,\n serviceConnected\n )\n );\n}\n\n// ── POST /api/signal/pair/stop ──────────────────────────────────────────\n\nasync function handlePairStop(\n req: RouteRequest,\n res: RouteResponse,\n _runtime: IAgentRuntime\n): Promise<void> {\n const body = (req.body ?? {}) as { accountId?: string };\n let accountId: string;\n try {\n accountId = sanitizeAccountId(\n typeof body.accountId === \"string\" && body.accountId.trim()\n ? body.accountId.trim()\n : \"default\"\n );\n } catch (err) {\n res.status(400).json({ error: (err as Error).message });\n return;\n }\n\n const session = signalPairingSessions.get(accountId);\n if (session) {\n session.stop();\n signalPairingSessions.delete(accountId);\n }\n signalPairingSnapshots.delete(accountId);\n\n res.status(200).json({ ok: true, accountId, status: \"idle\" });\n}\n\n// ── POST /api/signal/disconnect ─────────────────────────────────────────\n\nasync function handleDisconnect(\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n): Promise<void> {\n const body = (req.body ?? {}) as { accountId?: string };\n let accountId: string;\n try {\n accountId = sanitizeAccountId(\n typeof body.accountId === \"string\" && body.accountId.trim()\n ? body.accountId.trim()\n : \"default\"\n );\n } catch (err) {\n res.status(400).json({ error: (err as Error).message });\n return;\n }\n\n const session = signalPairingSessions.get(accountId);\n if (session) {\n session.stop();\n signalPairingSessions.delete(accountId);\n }\n signalPairingSnapshots.delete(accountId);\n\n const setupService = getSetupService(runtime);\n const workspaceDir = setupService?.getWorkspaceDir() ?? \"\";\n\n try {\n signalLogout(workspaceDir, accountId);\n } catch (err) {\n res.status(500).json({\n error: `Failed to disconnect Signal: ${String(err)}`,\n });\n return;\n }\n\n if (setupService) {\n try {\n setupService.updateConfig((cfg) => {\n const connectors = (cfg.connectors ?? {}) as Record<string, unknown>;\n if (accountId === \"default\") {\n delete connectors.signal;\n return;\n }\n const signalConfig = connectors.signal as Record<string, unknown> | undefined;\n const accounts = signalConfig?.accounts as Record<string, unknown> | undefined;\n if (accounts) {\n delete accounts[accountId];\n }\n connectors.signal = {\n ...(signalConfig ?? {}),\n ...(accounts ? { accounts } : {}),\n };\n });\n } catch (error) {\n res.status(500).json({\n error: `Failed to persist Signal disconnect: ${String(error)}`,\n });\n return;\n }\n }\n\n res.status(200).json({ ok: true, accountId });\n}\n\n// ── Exported route definitions ──────────────────────────────────────────\n\n/**\n * Plugin routes for Signal device-linking setup.\n * Registered with `rawPath: true` to preserve legacy `/api/signal/*` paths.\n */\nexport const signalSetupRoutes: Route[] = [\n {\n type: \"POST\",\n path: \"/api/signal/pair\",\n handler: handlePair,\n rawPath: true,\n },\n {\n type: \"GET\",\n path: \"/api/signal/status\",\n handler: handleStatus,\n rawPath: true,\n },\n {\n type: \"POST\",\n path: \"/api/signal/pair/stop\",\n handler: handlePairStop,\n rawPath: true,\n },\n {\n type: \"POST\",\n path: \"/api/signal/disconnect\",\n handler: handleDisconnect,\n rawPath: true,\n },\n];\n\n/**\n * Override plugin-discovery status for Signal when QR-paired auth exists.\n * Exported so the agent can still use it during plugin discovery if needed.\n */\nexport function applySignalQrOverride(\n plugins: {\n id: string;\n validationErrors: unknown[];\n configured: boolean;\n qrConnected?: boolean;\n }[],\n workspaceDir: string\n): void {\n if (signalAuthExists(workspaceDir, \"default\")) {\n const sigPlugin = plugins.find((plugin) => plugin.id === \"signal\");\n if (sigPlugin) {\n sigPlugin.validationErrors = [];\n sigPlugin.configured = true;\n sigPlugin.qrConnected = true;\n }\n }\n}\n",
70
- "import { type IAgentRuntime, Service } from \"@elizaos/core\";\n\n// Inlined to avoid adding @elizaos/plugin-workflow as a compile-time dependency.\n// The runtime duck-types the service — only the serviceType string and resolve() shape matter.\nconst WORKFLOW_CREDENTIAL_PROVIDER_TYPE = \"workflow_credential_provider\";\ntype CredentialProviderResult =\n | { status: \"credential_data\"; data: Record<string, unknown> }\n | { status: \"needs_auth\"; authUrl: string }\n | null;\n\n// Signal uses signal-cli REST API (local only). Wire via httpHeaderAuth pointing at the local endpoint.\n// Note: Signal workflows are local-only — the workflow runtime must be on the same host as signal-cli.\nconst SUPPORTED = [\"httpHeaderAuth\"];\n\nexport class SignalWorkflowCredentialProvider extends Service {\n static override readonly serviceType = WORKFLOW_CREDENTIAL_PROVIDER_TYPE;\n override capabilityDescription =\n \"Supplies Signal credentials to the workflow plugin (local signal-cli REST API).\";\n\n static async start(runtime: IAgentRuntime): Promise<SignalWorkflowCredentialProvider> {\n return new SignalWorkflowCredentialProvider(runtime);\n }\n\n async stop(): Promise<void> {}\n\n async resolve(_userId: string, credType: string): Promise<CredentialProviderResult> {\n if (credType !== \"httpHeaderAuth\") return null;\n const httpUrl = this.runtime.getSetting(\"SIGNAL_HTTP_URL\") as string | undefined;\n const accountNumber = this.runtime.getSetting(\"SIGNAL_ACCOUNT_NUMBER\") as string | undefined;\n if (!httpUrl?.trim() || !accountNumber?.trim()) return null;\n // Signal REST API is unauthenticated by default; supply the account number and base URL as sentinels.\n return {\n status: \"credential_data\",\n data: {\n name: \"X-Signal-Account\",\n value: accountNumber.trim(),\n signalHttpUrl: httpUrl.trim(),\n },\n };\n }\n\n checkCredentialTypes(credTypes: string[]): { supported: string[]; unsupported: string[] } {\n return {\n supported: credTypes.filter((t) => SUPPORTED.includes(t)),\n unsupported: credTypes.filter((t) => !SUPPORTED.includes(t)),\n };\n }\n}\n"
67
+ "/**\n * Signal pairing service — manages device linking via QR code.\n *\n * Mirrors whatsapp-pairing.ts but uses @elizaos/signal-native instead of\n * Baileys. Signal linking produces a single provisioning URL (not a refresh\n * loop) — if it times out, restart the session.\n */\n\nimport { type ChildProcess, execFile, spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { promisify } from \"node:util\";\nimport { logger } from \"@elizaos/core\";\n\nconst LOG_PREFIX = \"[signal-pairing]\";\nconst SIGNAL_NATIVE_MODULE_ID = \"@elizaos/signal-native\";\nconst execFileAsync = promisify(execFile);\nconst DEFAULT_SIGNAL_CLI_NAME = \"signal-cli\";\nconst DEFAULT_SIGNAL_DEVICE_NAME = \"Eliza Mac\";\nconst DEFAULT_SIGNAL_CLI_WAIT_TIMEOUT_MS = 30_000;\nconst BREW_OPENJDK_HOME = \"/opt/homebrew/opt/openjdk\";\nconst COMMON_SIGNAL_CLI_PATHS = [\n \"/opt/homebrew/bin/signal-cli\",\n \"/usr/local/bin/signal-cli\",\n \"/home/linuxbrew/.linuxbrew/bin/signal-cli\",\n];\nconst COMMON_HOMEBREW_PATHS = [\n \"/opt/homebrew/bin/brew\",\n \"/usr/local/bin/brew\",\n \"/home/linuxbrew/.linuxbrew/bin/brew\",\n];\nconst SIGNAL_CLI_AUTO_INSTALL_ENV = \"SIGNAL_CLI_AUTO_INSTALL\";\nconst ELIZA_SIGNAL_CLI_AUTO_INSTALL_ENV = \"ELIZA_SIGNAL_CLI_AUTO_INSTALL\";\n\ntype ExecFileAsync = (\n file: string,\n args?: readonly string[],\n options?: { env?: NodeJS.ProcessEnv }\n) => Promise<{ stdout: string; stderr: string }>;\n\ninterface ExecutableResolutionDeps {\n env: NodeJS.ProcessEnv;\n execFile: ExecFileAsync;\n existsSync: (path: string) => boolean;\n platform: NodeJS.Platform;\n}\n\ntype SignalNativeModule = {\n linkDevice: (authDir: string, deviceName: string) => Promise<string>;\n finishLink: (authDir: string) => Promise<void>;\n getProfile: (authDir: string) => Promise<{ uuid: string; phoneNumber?: string | null }>;\n};\n\n/** Validate accountId to prevent path traversal. */\nexport function sanitizeAccountId(raw: string): string {\n const cleaned = raw.replace(/[^a-zA-Z0-9_-]/g, \"\");\n if (!cleaned || cleaned !== raw) {\n throw new Error(\n `Invalid accountId: must only contain alphanumeric characters, dashes, and underscores`\n );\n }\n return cleaned;\n}\n\nexport type SignalPairingStatus =\n | \"idle\"\n | \"initializing\"\n | \"waiting_for_qr\"\n | \"connected\"\n | \"disconnected\"\n | \"timeout\"\n | \"error\";\n\nexport interface SignalPairingEvent {\n type: \"signal-qr\" | \"signal-status\";\n accountId: string;\n qrDataUrl?: string;\n status?: SignalPairingStatus;\n uuid?: string;\n phoneNumber?: string;\n error?: string;\n}\n\nexport interface SignalPairingSnapshot {\n status: SignalPairingStatus;\n qrDataUrl: string | null;\n phoneNumber: string | null;\n error: string | null;\n}\n\nexport interface SignalPairingOptions {\n authDir: string;\n accountId: string;\n cliPath?: string;\n onEvent: (event: SignalPairingEvent) => void;\n}\n\ninterface QrCodeModule {\n toDataURL: (text: string, options?: Record<string, unknown>) => Promise<string>;\n}\n\nexport function extractSignalCliProvisioningUrl(text: string): string | null {\n const match = text.match(/sgnl:\\/\\/linkdevice\\?[^\\s]+/);\n return match?.[0] ?? null;\n}\n\nexport function parseSignalCliAccountsOutput(output: string): string | null {\n const trimmed = output.trim();\n if (!trimmed) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(trimmed) as unknown;\n if (Array.isArray(parsed)) {\n for (const entry of parsed) {\n if (typeof entry === \"string\" && entry.trim().length > 0) {\n return entry.trim();\n }\n if (\n entry &&\n typeof entry === \"object\" &&\n typeof (entry as Record<string, unknown>).number === \"string\"\n ) {\n const number = (entry as Record<string, unknown>).number as string;\n if (number.trim().length > 0) {\n return number;\n }\n }\n }\n }\n } catch {\n // Plain-text output fallback handled below.\n }\n\n for (const line of trimmed.split(/\\r?\\n/)) {\n const account = line.trim();\n if (account.length > 0) {\n return account;\n }\n }\n\n return null;\n}\n\nfunction createExecutableResolutionDeps(\n env: NodeJS.ProcessEnv = process.env\n): ExecutableResolutionDeps {\n return {\n env,\n execFile: execFileAsync as ExecFileAsync,\n existsSync: fs.existsSync,\n platform: os.platform(),\n };\n}\n\nasync function resolveExecutablePath(\n binary: string,\n deps: ExecutableResolutionDeps = createExecutableResolutionDeps()\n): Promise<string | null> {\n const trimmed = binary.trim();\n if (!trimmed) {\n return null;\n }\n\n if (trimmed.includes(\"/\") || trimmed.startsWith(\".\")) {\n return deps.existsSync(trimmed) ? trimmed : null;\n }\n\n try {\n const { stdout } = await deps.execFile(\"/usr/bin/which\", [trimmed]);\n const resolved = stdout.trim();\n return resolved.length > 0 ? resolved : null;\n } catch {\n if (trimmed !== DEFAULT_SIGNAL_CLI_NAME) {\n return null;\n }\n\n for (const candidate of COMMON_SIGNAL_CLI_PATHS) {\n if (deps.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n }\n}\n\nfunction autoInstallSignalCliEnabled(env: NodeJS.ProcessEnv): boolean {\n const raw = env[ELIZA_SIGNAL_CLI_AUTO_INSTALL_ENV] ?? env[SIGNAL_CLI_AUTO_INSTALL_ENV];\n if (typeof raw !== \"string\") {\n return true;\n }\n return ![\"0\", \"false\", \"no\", \"off\"].includes(raw.trim().toLowerCase());\n}\n\nfunction canAutoInstallSignalCli(platform: NodeJS.Platform): boolean {\n return platform === \"darwin\" || platform === \"linux\";\n}\n\nasync function resolveHomebrewPath(deps: ExecutableResolutionDeps): Promise<string | null> {\n try {\n const { stdout } = await deps.execFile(\"/usr/bin/which\", [\"brew\"]);\n const resolved = stdout.trim();\n if (resolved.length > 0) {\n return resolved;\n }\n } catch {\n for (const candidate of COMMON_HOMEBREW_PATHS) {\n if (deps.existsSync(candidate)) {\n return candidate;\n }\n }\n }\n return null;\n}\n\nasync function installSignalCliWithHomebrew(deps: ExecutableResolutionDeps): Promise<boolean> {\n const brewPath = await resolveHomebrewPath(deps);\n if (!brewPath) {\n return false;\n }\n\n try {\n await deps.execFile(brewPath, [\"install\", \"signal-cli\"], { env: deps.env });\n } catch (error) {\n throw new Error(\n `Failed to auto-install signal-cli with Homebrew. ${signalCliInstallInstructions(deps.platform)}`,\n { cause: error }\n );\n }\n return true;\n}\n\nfunction isDefaultSignalCliRequest(\n requestedBinary: string,\n options: Pick<SignalPairingOptions, \"cliPath\">,\n env: NodeJS.ProcessEnv\n): boolean {\n return (\n requestedBinary === DEFAULT_SIGNAL_CLI_NAME &&\n !options.cliPath?.trim() &&\n !env.SIGNAL_CLI_PATH?.trim()\n );\n}\n\nexport async function resolveSignalCliExecutable(\n options: {\n cliPath?: string;\n env?: NodeJS.ProcessEnv;\n execFile?: ExecFileAsync;\n existsSync?: (path: string) => boolean;\n platform?: NodeJS.Platform;\n } = {}\n): Promise<string | null> {\n const deps: ExecutableResolutionDeps = {\n ...createExecutableResolutionDeps(options.env),\n ...(options.execFile ? { execFile: options.execFile } : {}),\n ...(options.existsSync ? { existsSync: options.existsSync } : {}),\n ...(options.platform ? { platform: options.platform } : {}),\n };\n const requestedBinary =\n options.cliPath?.trim() || deps.env.SIGNAL_CLI_PATH?.trim() || DEFAULT_SIGNAL_CLI_NAME;\n\n const existingPath = await resolveExecutablePath(requestedBinary, deps);\n if (existingPath) {\n return existingPath;\n }\n\n if (\n !canAutoInstallSignalCli(deps.platform) ||\n !isDefaultSignalCliRequest(requestedBinary, options, deps.env) ||\n !autoInstallSignalCliEnabled(deps.env)\n ) {\n return null;\n }\n\n const installed = await installSignalCliWithHomebrew(deps);\n if (!installed) {\n return null;\n }\n return resolveExecutablePath(DEFAULT_SIGNAL_CLI_NAME, deps);\n}\n\nfunction signalCliInstallInstructions(platform: NodeJS.Platform): string {\n if (platform === \"darwin\") {\n return \"Eliza can auto-install the default Signal CLI on macOS when Homebrew is available (`brew install signal-cli`). Fallback: install signal-cli from https://github.com/AsamK/signal-cli/releases and set SIGNAL_CLI_PATH to its bin/signal-cli executable.\";\n }\n if (platform === \"linux\") {\n return \"Eliza can auto-install the default Signal CLI on Linux when Homebrew/Linuxbrew is available (`brew install signal-cli`). Fallback: install the latest signal-cli Linux release from https://github.com/AsamK/signal-cli/releases, ensure Java Runtime 25+ is installed, and set SIGNAL_CLI_PATH to its bin/signal-cli executable.\";\n }\n if (platform === \"win32\") {\n return \"On Windows, install the latest signal-cli release from https://github.com/AsamK/signal-cli/releases, ensure Java Runtime 25+ is installed, and set SIGNAL_CLI_PATH to signal-cli.bat or signal-cli.exe. Eliza does not auto-run a Windows package manager.\";\n }\n return \"Install signal-cli from https://github.com/AsamK/signal-cli/releases for your platform, ensure Java Runtime 25+ is installed, and set SIGNAL_CLI_PATH to the signal-cli executable.\";\n}\n\nexport function missingSignalCliMessage(\n cliPath: string | undefined,\n env: NodeJS.ProcessEnv = process.env,\n platform: NodeJS.Platform = os.platform()\n): string {\n const requestedBinary = cliPath?.trim() || env.SIGNAL_CLI_PATH?.trim() || DEFAULT_SIGNAL_CLI_NAME;\n const installHint =\n requestedBinary === DEFAULT_SIGNAL_CLI_NAME\n ? signalCliInstallInstructions(platform)\n : \"Install that binary or update SIGNAL_CLI_PATH to point at an existing signal-cli executable.\";\n return `Failed to load dependencies: Cannot find ${requestedBinary}. ${installHint}`;\n}\n\nfunction resolveSignalCliJavaHome(): string | null {\n if (fs.existsSync(BREW_OPENJDK_HOME)) {\n return BREW_OPENJDK_HOME;\n }\n\n if (typeof process.env.JAVA_HOME === \"string\" && process.env.JAVA_HOME.trim().length > 0) {\n return process.env.JAVA_HOME.trim();\n }\n\n return null;\n}\n\nfunction buildSignalCliEnv(): NodeJS.ProcessEnv {\n const env = { ...process.env };\n const javaHome = resolveSignalCliJavaHome();\n\n if (javaHome) {\n env.JAVA_HOME = javaHome;\n const javaBin = path.join(javaHome, \"bin\");\n env.PATH = env.PATH ? `${javaBin}:${env.PATH}` : javaBin;\n }\n\n return env;\n}\n\nexport function classifySignalPairingErrorStatus(errorMessage: string): SignalPairingStatus {\n return /(timed?\\s*out|timeout|expired)/i.test(errorMessage) ? \"timeout\" : \"error\";\n}\n\nexport class SignalPairingSession {\n private status: SignalPairingStatus = \"idle\";\n private options: SignalPairingOptions;\n private aborted = false;\n private qrDataUrl: string | null = null;\n private phoneNumber: string | null = null;\n private lastError: string | null = null;\n private activeChild: ChildProcess | null = null;\n\n constructor(options: SignalPairingOptions) {\n this.options = options;\n }\n\n async start(): Promise<void> {\n this.aborted = false;\n this.qrDataUrl = null;\n this.phoneNumber = null;\n this.lastError = null;\n this.setStatus(\"initializing\");\n\n let qrCode: QrCodeModule;\n try {\n const importedQrCode = await import(\"qrcode\");\n qrCode = importedQrCode.default as QrCodeModule;\n } catch (err) {\n const message = `Failed to load QR dependency: ${String(err)}`;\n this.lastError = message;\n this.setStatus(\"error\");\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status: \"error\",\n error: message,\n });\n return;\n }\n\n fs.mkdirSync(this.options.authDir, { recursive: true });\n\n try {\n const native = await this.loadSignalNativeModule();\n if (native) {\n await this.startWithSignalNative(native, qrCode);\n return;\n }\n\n await this.startWithSignalCli(qrCode);\n } catch (err) {\n if (this.aborted) return;\n\n const errMsg = String(err);\n logger.error(`${LOG_PREFIX} Linking failed: ${errMsg}`);\n\n this.qrDataUrl = null;\n this.lastError = errMsg;\n const status = classifySignalPairingErrorStatus(errMsg);\n this.setStatus(status);\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status,\n error: errMsg,\n });\n }\n }\n\n stop(): void {\n this.aborted = true;\n this.activeChild?.kill(\"SIGTERM\");\n this.activeChild = null;\n }\n\n getStatus(): SignalPairingStatus {\n return this.status;\n }\n\n getSnapshot(): SignalPairingSnapshot {\n return {\n status: this.status,\n qrDataUrl: this.qrDataUrl,\n phoneNumber: this.phoneNumber,\n error: this.lastError,\n };\n }\n\n private setStatus(status: SignalPairingStatus): void {\n this.status = status;\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status,\n });\n }\n\n private async loadSignalNativeModule(): Promise<SignalNativeModule | null> {\n try {\n const moduleSpecifier: string = SIGNAL_NATIVE_MODULE_ID;\n const imported = await import(/* @vite-ignore */ moduleSpecifier);\n return imported as SignalNativeModule;\n } catch (error) {\n logger.info(\n `${LOG_PREFIX} Signal native module unavailable, using signal-cli pairing: ${String(error)}`\n );\n return null;\n }\n }\n\n private async startWithSignalNative(\n native: SignalNativeModule,\n qrCode: QrCodeModule\n ): Promise<void> {\n logger.info(`${LOG_PREFIX} Starting device linking with signal-native...`);\n const provisioningUrl = await native.linkDevice(\n this.options.authDir,\n DEFAULT_SIGNAL_DEVICE_NAME\n );\n\n if (this.aborted) return;\n\n const qrDataUrl = await qrCode.toDataURL(provisioningUrl, {\n width: 256,\n margin: 2,\n color: { dark: \"#000000\", light: \"#ffffff\" },\n });\n\n this.qrDataUrl = qrDataUrl;\n this.lastError = null;\n this.setStatus(\"waiting_for_qr\");\n this.options.onEvent({\n type: \"signal-qr\",\n accountId: this.options.accountId,\n qrDataUrl,\n });\n\n logger.info(`${LOG_PREFIX} QR code generated, waiting for user to scan...`);\n\n await native.finishLink(this.options.authDir);\n if (this.aborted) return;\n\n let uuid = \"\";\n let phoneNumber = \"\";\n try {\n const profile = await native.getProfile(this.options.authDir);\n uuid = profile.uuid;\n phoneNumber = profile.phoneNumber ?? \"\";\n } catch (error) {\n logger.warn(`${LOG_PREFIX} Failed to read Signal profile after linking: ${String(error)}`);\n }\n\n this.finishConnected(phoneNumber || null, uuid || undefined);\n }\n\n private async startWithSignalCli(qrCode: QrCodeModule): Promise<void> {\n const cliPath = await resolveSignalCliExecutable({\n cliPath: this.options.cliPath,\n env: process.env,\n });\n\n if (!cliPath) {\n throw new Error(missingSignalCliMessage(this.options.cliPath));\n }\n\n logger.info(`${LOG_PREFIX} Starting device linking with signal-cli...`);\n\n const child = spawn(\n cliPath,\n [\"--config\", this.options.authDir, \"link\", \"-n\", DEFAULT_SIGNAL_DEVICE_NAME],\n {\n env: buildSignalCliEnv(),\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n }\n );\n this.activeChild = child;\n\n const stderrLines: string[] = [];\n let provisioningUrl: string | null = null;\n const waitForProvisioningUrl = new Promise<string>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(\n new Error(\n `signal-cli link did not emit a provisioning URL within ${DEFAULT_SIGNAL_CLI_WAIT_TIMEOUT_MS}ms`\n )\n );\n }, DEFAULT_SIGNAL_CLI_WAIT_TIMEOUT_MS);\n\n const onLine = (line: string, source: \"stdout\" | \"stderr\"): void => {\n const trimmed = line.trim();\n if (!trimmed) {\n return;\n }\n const extracted = extractSignalCliProvisioningUrl(trimmed);\n if (extracted) {\n provisioningUrl = extracted;\n clearTimeout(timer);\n resolve(extracted);\n return;\n }\n if (source === \"stderr\") {\n stderrLines.push(trimmed);\n }\n };\n\n const stdoutReader = createInterface({ input: child.stdout });\n const stderrReader = createInterface({ input: child.stderr });\n stdoutReader.on(\"line\", (line) => onLine(line, \"stdout\"));\n stderrReader.on(\"line\", (line) => onLine(line, \"stderr\"));\n\n child.once(\"error\", (error) => {\n clearTimeout(timer);\n reject(error);\n });\n\n child.once(\"exit\", (code, signal) => {\n if (provisioningUrl) {\n return;\n }\n clearTimeout(timer);\n const detail =\n stderrLines.join(\"\\n\") ||\n (signal\n ? `signal-cli link terminated by ${signal}`\n : `signal-cli link exited with code ${String(code)}`);\n reject(new Error(detail));\n });\n });\n\n const linkUrl = await waitForProvisioningUrl;\n if (this.aborted) {\n return;\n }\n\n const qrDataUrl = await qrCode.toDataURL(linkUrl, {\n width: 256,\n margin: 2,\n color: { dark: \"#000000\", light: \"#ffffff\" },\n });\n this.qrDataUrl = qrDataUrl;\n this.lastError = null;\n this.setStatus(\"waiting_for_qr\");\n this.options.onEvent({\n type: \"signal-qr\",\n accountId: this.options.accountId,\n qrDataUrl,\n });\n\n await new Promise<void>((resolve, reject) => {\n child.once(\"error\", reject);\n child.once(\"exit\", (code, signal) => {\n if (this.aborted) {\n resolve();\n return;\n }\n if (code === 0) {\n resolve();\n return;\n }\n const detail =\n stderrLines.join(\"\\n\") ||\n (signal\n ? `signal-cli link terminated by ${signal}`\n : `signal-cli link exited with code ${String(code)}`);\n reject(new Error(detail));\n });\n });\n\n if (this.aborted) {\n return;\n }\n\n const phoneNumber = await this.readLinkedSignalAccount(cliPath);\n this.finishConnected(phoneNumber, undefined);\n }\n\n private finishConnected(phoneNumber: string | null, uuid?: string): void {\n this.activeChild = null;\n this.qrDataUrl = null;\n this.phoneNumber = phoneNumber;\n this.lastError = null;\n this.setStatus(\"connected\");\n this.options.onEvent({\n type: \"signal-status\",\n accountId: this.options.accountId,\n status: \"connected\",\n ...(uuid ? { uuid } : {}),\n phoneNumber: this.phoneNumber ?? undefined,\n });\n\n logger.info(\n `${LOG_PREFIX} Device linked successfully${phoneNumber ? ` (${phoneNumber})` : \"\"}`\n );\n }\n\n private async readLinkedSignalAccount(cliPath: string): Promise<string | null> {\n try {\n const { stdout } = await execFileAsync(\n cliPath,\n [\"--config\", this.options.authDir, \"-o\", \"json\", \"listAccounts\"],\n {\n env: buildSignalCliEnv(),\n }\n );\n return parseSignalCliAccountsOutput(stdout);\n } catch (error) {\n logger.warn(`${LOG_PREFIX} Failed to read linked Signal account: ${String(error)}`);\n return null;\n }\n }\n}\n\nexport function signalAuthExists(workspaceDir: string, accountId = \"default\"): boolean {\n const authDir = path.join(workspaceDir, \"signal-auth\", accountId);\n if (!fs.existsSync(authDir)) {\n return false;\n }\n\n const accountsPath = path.join(authDir, \"data\", \"accounts.json\");\n if (!fs.existsSync(accountsPath)) {\n return false;\n }\n\n try {\n const parsed = JSON.parse(fs.readFileSync(accountsPath, \"utf8\")) as {\n accounts?: unknown;\n };\n return Array.isArray(parsed.accounts) && parsed.accounts.length > 0;\n } catch {\n return false;\n }\n}\n\nexport function signalLogout(workspaceDir: string, accountId = \"default\"): void {\n const authDir = path.join(workspaceDir, \"signal-auth\", accountId);\n fs.rmSync(authDir, { recursive: true, force: true });\n}\n",
68
+ "import type { Character, EventPayload, MessagePayload, WorldPayload } from \"@elizaos/core\";\n\n/**\n * Signal-specific event types\n */\nexport enum SignalEventTypes {\n MESSAGE_RECEIVED = \"SIGNAL_MESSAGE_RECEIVED\",\n MESSAGE_SENT = \"SIGNAL_MESSAGE_SENT\",\n REACTION_RECEIVED = \"SIGNAL_REACTION_RECEIVED\",\n GROUP_JOINED = \"SIGNAL_GROUP_JOINED\",\n GROUP_LEFT = \"SIGNAL_GROUP_LEFT\",\n}\n\nexport interface SignalMessageReceivedPayload extends MessagePayload {\n sender: string;\n groupId: string | undefined;\n timestamp: number;\n attachments: SignalAttachment[];\n isGroupMessage: boolean;\n}\n\nexport interface SignalMessageSentPayload extends MessagePayload {\n recipient: string;\n groupId: string | undefined;\n timestamp: number;\n}\n\nexport interface SignalReactionPayload extends EventPayload {\n emoji: string;\n sender: string;\n targetTimestamp: number;\n targetAuthor: string;\n isRemove: boolean;\n}\n\ninterface SignalGroupPayload extends WorldPayload {\n groupId: string;\n groupName: string;\n members: string[];\n}\n\nexport interface SignalAttachment {\n contentType: string;\n filename: string | undefined;\n id: string;\n size: number;\n width: number | undefined;\n height: number | undefined;\n caption: string | undefined;\n blurhash: string | undefined;\n}\n\nexport interface SignalEventPayloadMap {\n [SignalEventTypes.MESSAGE_RECEIVED]: SignalMessageReceivedPayload;\n [SignalEventTypes.MESSAGE_SENT]: SignalMessageSentPayload;\n [SignalEventTypes.REACTION_RECEIVED]: SignalReactionPayload;\n [SignalEventTypes.GROUP_JOINED]: SignalGroupPayload;\n [SignalEventTypes.GROUP_LEFT]: SignalGroupPayload;\n}\n\nexport interface SignalContact {\n number: string;\n uuid: string | undefined;\n name: string | undefined;\n profileName: string | undefined;\n color: string | undefined;\n blocked: boolean;\n}\n\nexport interface SignalGroup {\n id: string;\n name: string;\n description: string | undefined;\n isMember: boolean;\n isBlocked: boolean;\n members: SignalGroupMember[];\n admins: string[];\n inviteLink: string | undefined;\n}\n\nexport interface SignalGroupMember {\n uuid: string;\n number: string | undefined;\n role: \"ADMINISTRATOR\" | \"DEFAULT\";\n}\n\nexport interface SignalMessage {\n timestamp: number;\n sender: string;\n senderUuid: string | undefined;\n groupId: string | undefined;\n message: string | undefined;\n attachments: SignalAttachment[];\n quote: SignalQuote | undefined;\n reaction: SignalReactionInfo | undefined;\n expiresInSeconds: number | undefined;\n viewOnce: boolean;\n}\n\nexport interface SignalRecentMessage {\n id: string;\n roomId: string;\n channelId: string;\n roomName: string;\n speakerName: string;\n text: string;\n createdAt: number;\n isFromAgent: boolean;\n isGroup: boolean;\n}\n\nexport interface SignalQuote {\n id: number;\n author: string;\n authorUuid: string | undefined;\n text: string;\n attachments: SignalAttachment[];\n}\n\nexport interface SignalReactionInfo {\n emoji: string;\n targetAuthor: string;\n targetAuthorUuid: string | undefined;\n targetSentTimestamp: number;\n isRemove: boolean;\n}\n\nexport interface ISignalService {\n accountNumber: string | null;\n character: Character;\n isConnected: boolean;\n getRecentMessages(limit?: number): Promise<SignalRecentMessage[]>;\n}\n\nexport const SIGNAL_SERVICE_NAME = \"signal\";\n\nexport interface SignalSettings {\n shouldIgnoreGroupMessages: boolean;\n allowedGroups: string[] | undefined;\n blockedNumbers: string[] | undefined;\n /**\n * When false (default), inbound messages are persisted as memories and a\n * MESSAGE_RECEIVED event is emitted, but the agent does NOT auto-generate\n * a reply. Sends only happen via explicit caller action (LifeOps send\n * route, user-issued chat command). Set SIGNAL_AUTO_REPLY=true to opt in.\n */\n autoReply: boolean;\n receiveMode: \"on-start\" | \"manual\";\n}\n\nexport interface SignalMessageSendOptions {\n /** Connector account ID to send from. Defaults to the configured default account. */\n accountId?: string;\n attachments?: string[];\n quote?: { timestamp: number; author: string };\n expiresInSeconds?: number;\n record?: boolean;\n}\n\nexport class SignalPluginError extends Error {\n constructor(\n message: string,\n public readonly code: string\n ) {\n super(message);\n this.name = \"SignalPluginError\";\n }\n}\n\nexport class SignalServiceNotInitializedError extends SignalPluginError {\n constructor() {\n super(\"Signal service is not initialized\", \"SERVICE_NOT_INITIALIZED\");\n this.name = \"SignalServiceNotInitializedError\";\n }\n}\n\nexport class SignalClientNotAvailableError extends SignalPluginError {\n constructor() {\n super(\"Signal client is not available\", \"CLIENT_NOT_AVAILABLE\");\n this.name = \"SignalClientNotAvailableError\";\n }\n}\n\nexport class SignalConfigurationError extends SignalPluginError {\n constructor(missingConfig: string) {\n super(`Missing required configuration: ${missingConfig}`, \"MISSING_CONFIG\");\n this.name = \"SignalConfigurationError\";\n }\n}\n\nexport class SignalApiError extends SignalPluginError {\n constructor(\n message: string,\n public readonly apiErrorCode: string | undefined\n ) {\n super(message, \"API_ERROR\");\n this.name = \"SignalApiError\";\n }\n}\n\n/**\n * Normalize a phone number to E.164 format\n */\nexport function normalizeE164(number: string): string | null {\n // Remove all non-digit characters except leading +\n let cleaned = number.replace(/[^\\d+]/g, \"\");\n\n // Ensure it starts with +\n if (!cleaned.startsWith(\"+\")) {\n // Assume US number if no country code\n if (cleaned.length === 10) {\n cleaned = `+1${cleaned}`;\n } else if (cleaned.length === 11 && cleaned.startsWith(\"1\")) {\n cleaned = `+${cleaned}`;\n } else {\n cleaned = `+${cleaned}`;\n }\n }\n\n // Validate E.164 format: + followed by 7-15 digits\n if (!/^\\+\\d{7,15}$/.test(cleaned)) {\n return null;\n }\n\n return cleaned;\n}\n\n/**\n * Validates an E.164 phone number format\n */\nexport function isValidE164(number: string): boolean {\n return /^\\+\\d{7,15}$/.test(number);\n}\n\n/**\n * Validates a Signal group ID format (base64-encoded)\n */\nexport function isValidGroupId(id: string): boolean {\n // Signal group IDs are base64-encoded\n return /^[A-Za-z0-9+/]+=*$/.test(id) && id.length >= 32;\n}\n\n/**\n * Validates a Signal UUID format\n */\nexport function isValidUuid(uuid: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid);\n}\n\n/**\n * Gets the display name for a Signal contact\n */\nexport function getSignalContactDisplayName(contact: SignalContact): string {\n return contact.profileName || contact.name || contact.number;\n}\n\n/**\n * Maximum message length for Signal messages\n */\nexport const MAX_SIGNAL_MESSAGE_LENGTH = 4000;\n\n/**\n * Maximum attachment size (100MB)\n */\nexport const MAX_SIGNAL_ATTACHMENT_SIZE = 100 * 1024 * 1024;\n",
69
+ "/**\n * Signal connector setup HTTP routes.\n *\n * Implements the shared setup contract defined in\n * `@elizaos/app-core/api/setup-contract.ts`:\n *\n * GET /api/setup/signal/status check current connection / pairing state\n * POST /api/setup/signal/start start (or restart) a QR device-linking session\n * POST /api/setup/signal/cancel stop active pairing and disconnect Signal\n *\n * The underlying QR pairing logic is unchanged from the legacy\n * `/api/signal/*` routes — only the path layout, the canonical response\n * envelope, and the structured error shape have been normalized.\n *\n * Cancel folds the old \"stop pairing in progress\" and \"disconnect already\n * paired Signal\" cases into a single endpoint: it stops any in-flight\n * session and wipes auth on disk in one call.\n *\n * These routes are registered with `rawPath: true` so they mount at their\n * canonical paths without the plugin-name prefix.\n */\n\nimport path from \"node:path\";\nimport type { IAgentRuntime, Route, RouteRequest, RouteResponse } from \"@elizaos/core\";\nimport {\n type SignalPairingEvent,\n SignalPairingSession,\n type SignalPairingSnapshot,\n type SignalPairingStatus,\n sanitizeAccountId,\n signalAuthExists,\n signalLogout,\n} from \"./pairing-service\";\n\n// ── Setup contract types (mirror @elizaos/app-core/api/setup-contract) ──\n\ntype SetupState = \"idle\" | \"configuring\" | \"paired\" | \"error\";\n\ninterface SetupStatusResponse<TDetail = unknown> {\n connector: string;\n state: SetupState;\n detail?: TDetail;\n}\n\ninterface SetupErrorResponse {\n error: { code: string; message: string };\n}\n\nfunction setupError(code: string, message: string): SetupErrorResponse {\n return { error: { code, message } };\n}\n\n// ── Module-level state ──────────────────────────────────────────────────\n// These maps survive across requests within the same process lifetime,\n// mirroring how they were held on ServerState in the monolithic server.\n\ninterface SignalPairingSessionLike {\n start(): Promise<void>;\n stop(): void;\n getStatus(): SignalPairingStatus;\n getSnapshot(): SignalPairingSnapshot;\n}\n\nconst signalPairingSessions = new Map<string, SignalPairingSessionLike>();\nconst signalPairingSnapshots = new Map<string, SignalPairingSnapshot>();\n\nconst MAX_PAIRING_SESSIONS = 10;\nconst TERMINAL_SIGNAL_PAIRING_STATUSES = new Set<SignalPairingStatus>([\n \"connected\",\n \"disconnected\",\n \"timeout\",\n \"error\",\n]);\n\n// ── Connector setup service interface ───────────────────────────────────\n\ninterface ConnectorSetupService {\n getConfig(): Record<string, unknown>;\n persistConfig(config: Record<string, unknown>): void;\n updateConfig(updater: (config: Record<string, unknown>) => void): void;\n registerEscalationChannel(channelName: string): boolean;\n setOwnerContact(update: {\n source: string;\n channelId?: string;\n entityId?: string;\n roomId?: string;\n }): boolean;\n getWorkspaceDir(): string;\n broadcastWs(data: object): void;\n}\n\nfunction isConnectorSetupService(service: unknown): service is ConnectorSetupService {\n if (!service || typeof service !== \"object\") {\n return false;\n }\n const candidate = service as Partial<ConnectorSetupService>;\n return (\n typeof candidate.getConfig === \"function\" &&\n typeof candidate.updateConfig === \"function\" &&\n typeof candidate.persistConfig === \"function\" &&\n typeof candidate.registerEscalationChannel === \"function\" &&\n typeof candidate.setOwnerContact === \"function\" &&\n typeof candidate.getWorkspaceDir === \"function\" &&\n typeof candidate.broadcastWs === \"function\"\n );\n}\n\nfunction getSetupService(runtime: IAgentRuntime): ConnectorSetupService | null {\n const service = runtime.getService(\"connector-setup\");\n return isConnectorSetupService(service) ? service : null;\n}\n\n// ── Helpers ─────────────────────────────────────────────────────────────\n\ninterface SignalSetupDetail {\n accountId: string;\n pairingStatus: SignalPairingStatus | \"idle\";\n authExists: boolean;\n serviceConnected: boolean;\n qrDataUrl: string | null;\n phoneNumber: string | null;\n pairingError: string | null;\n}\n\nfunction buildSignalStatusResponse(\n accountId: string,\n session: SignalPairingSessionLike | undefined,\n previousSnapshot: SignalPairingSnapshot | undefined,\n authExists: boolean,\n serviceConnected: boolean\n): SetupStatusResponse<SignalSetupDetail> {\n const snapshot = session?.getSnapshot() ?? previousSnapshot;\n const pairingStatus = snapshot?.status ?? (authExists || serviceConnected ? \"connected\" : \"idle\");\n\n const state: SetupState =\n pairingStatus === \"connected\"\n ? \"paired\"\n : pairingStatus === \"error\" || pairingStatus === \"timeout\"\n ? \"error\"\n : pairingStatus === \"idle\" || pairingStatus === \"disconnected\"\n ? \"idle\"\n : \"configuring\";\n\n return {\n connector: \"signal\",\n state,\n detail: {\n accountId,\n pairingStatus,\n authExists,\n serviceConnected,\n qrDataUrl: snapshot?.qrDataUrl ?? null,\n phoneNumber: snapshot?.phoneNumber ?? null,\n pairingError: snapshot?.error ?? null,\n },\n };\n}\n\n/** Reap terminal pairing sessions before handling a request. */\nfunction reapTerminalSessions(): void {\n for (const [id, session] of signalPairingSessions) {\n const status = session.getStatus();\n if (status === \"disconnected\" || status === \"timeout\" || status === \"error\") {\n signalPairingSnapshots.set(id, session.getSnapshot());\n session.stop();\n signalPairingSessions.delete(id);\n }\n }\n}\n\nfunction resolveServiceConnected(runtime: IAgentRuntime): boolean {\n const sigService = runtime.getService(\"signal\") as {\n connected?: unknown;\n isConnected?: unknown;\n isServiceConnected?: () => boolean;\n } | null;\n if (!sigService) return false;\n return (\n Boolean(sigService.connected) ||\n Boolean(sigService.isConnected) ||\n (typeof sigService.isServiceConnected === \"function\" &&\n Boolean((sigService.isServiceConnected as () => boolean)()))\n );\n}\n\nfunction extractAccountId(value: unknown): string {\n return sanitizeAccountId(typeof value === \"string\" && value.trim() ? value.trim() : \"default\");\n}\n\n// ── GET /api/setup/signal/status ────────────────────────────────────────\n\nasync function handleStatus(\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n): Promise<void> {\n reapTerminalSessions();\n\n const rawUrl = typeof req.url === \"string\" ? req.url : \"/\";\n const url = new URL(rawUrl, \"http://localhost\");\n let accountId: string;\n try {\n accountId = extractAccountId(url.searchParams.get(\"accountId\"));\n } catch (err) {\n res.status(400).json(setupError(\"bad_request\", (err as Error).message));\n return;\n }\n\n const setupService = getSetupService(runtime);\n const workspaceDir = setupService?.getWorkspaceDir() ?? \"\";\n\n const session = signalPairingSessions.get(accountId);\n const previousSnapshot = signalPairingSnapshots.get(accountId);\n const authExists = signalAuthExists(workspaceDir, accountId);\n const serviceConnected = resolveServiceConnected(runtime);\n\n res\n .status(200)\n .json(\n buildSignalStatusResponse(accountId, session, previousSnapshot, authExists, serviceConnected)\n );\n}\n\n// ── POST /api/setup/signal/start ────────────────────────────────────────\n\nasync function handleStart(\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n): Promise<void> {\n reapTerminalSessions();\n\n const body = (req.body ?? {}) as { accountId?: string };\n let accountId: string;\n try {\n accountId = extractAccountId(body.accountId);\n } catch (err) {\n res.status(400).json(setupError(\"bad_request\", (err as Error).message));\n return;\n }\n\n const isReplacing = signalPairingSessions.has(accountId);\n if (!isReplacing && signalPairingSessions.size >= MAX_PAIRING_SESSIONS) {\n res\n .status(429)\n .json(\n setupError(\n \"too_many_sessions\",\n `Too many concurrent pairing sessions (max ${MAX_PAIRING_SESSIONS})`\n )\n );\n return;\n }\n\n const setupService = getSetupService(runtime);\n const workspaceDir = setupService?.getWorkspaceDir() ?? \"\";\n const config = setupService?.getConfig() ?? {};\n const connectors = (config.connectors ?? {}) as Record<string, unknown>;\n\n const authDir = path.join(workspaceDir, \"signal-auth\", accountId);\n signalPairingSessions.get(accountId)?.stop();\n signalPairingSnapshots.delete(accountId);\n\n const signalConfig = (connectors.signal as Record<string, unknown> | undefined) ?? {};\n const configuredCliPath =\n typeof signalConfig.cliPath === \"string\" && signalConfig.cliPath.trim()\n ? signalConfig.cliPath.trim()\n : undefined;\n\n let session: SignalPairingSessionLike;\n session = new SignalPairingSession({\n authDir,\n accountId,\n cliPath: configuredCliPath,\n onEvent: (event: SignalPairingEvent) => {\n setupService?.broadcastWs(event);\n signalPairingSnapshots.set(accountId, session.getSnapshot());\n\n if (event.status === \"connected\") {\n const phoneNumber = event.phoneNumber;\n\n if (setupService) {\n setupService.updateConfig((cfg) => {\n if (!cfg.connectors) cfg.connectors = {};\n const cfgConnectors = cfg.connectors as Record<string, unknown>;\n const previousConfig =\n (cfgConnectors.signal as Record<string, unknown> | undefined) ?? {};\n if (accountId !== \"default\") {\n const accounts =\n typeof previousConfig.accounts === \"object\" && previousConfig.accounts !== null\n ? { ...(previousConfig.accounts as Record<string, Record<string, unknown>>) }\n : {};\n accounts[accountId] = {\n ...(accounts[accountId] ?? {}),\n authDir,\n enabled: true,\n ...(phoneNumber && phoneNumber.trim().length > 0\n ? { account: phoneNumber.trim() }\n : {}),\n };\n cfgConnectors.signal = {\n ...previousConfig,\n accounts,\n enabled: true,\n };\n return;\n }\n cfgConnectors.signal = {\n ...previousConfig,\n authDir,\n enabled: true,\n ...(phoneNumber && phoneNumber.trim().length > 0\n ? { account: phoneNumber.trim() }\n : {}),\n };\n });\n\n // Auto-populate owner contact so LifeOps can deliver reminders\n setupService.setOwnerContact({\n source: \"signal\",\n channelId: phoneNumber ?? undefined,\n });\n // Add Signal to the escalation channel list\n setupService.registerEscalationChannel(\"signal\");\n }\n }\n\n if (\n event.status &&\n TERMINAL_SIGNAL_PAIRING_STATUSES.has(event.status) &&\n signalPairingSessions.get(accountId) === session\n ) {\n signalPairingSessions.delete(accountId);\n }\n },\n });\n\n signalPairingSessions.set(accountId, session);\n signalPairingSnapshots.set(accountId, session.getSnapshot());\n\n void session.start().catch((err) => {\n console.error(`[signal] Pairing session failed for ${accountId}:`, String(err));\n signalPairingSnapshots.set(accountId, session.getSnapshot());\n signalPairingSessions.delete(accountId);\n });\n\n res\n .status(200)\n .json(\n buildSignalStatusResponse(\n accountId,\n session,\n signalPairingSnapshots.get(accountId),\n false,\n false\n )\n );\n}\n\n// ── POST /api/setup/signal/cancel ───────────────────────────────────────\n\nasync function handleCancel(\n req: RouteRequest,\n res: RouteResponse,\n runtime: IAgentRuntime\n): Promise<void> {\n const body = (req.body ?? {}) as { accountId?: string };\n let accountId: string;\n try {\n accountId = extractAccountId(body.accountId);\n } catch (err) {\n res.status(400).json(setupError(\"bad_request\", (err as Error).message));\n return;\n }\n\n const session = signalPairingSessions.get(accountId);\n if (session) {\n session.stop();\n signalPairingSessions.delete(accountId);\n }\n signalPairingSnapshots.delete(accountId);\n\n const setupService = getSetupService(runtime);\n const workspaceDir = setupService?.getWorkspaceDir() ?? \"\";\n\n try {\n signalLogout(workspaceDir, accountId);\n } catch (err) {\n res\n .status(500)\n .json(\n setupError(\n \"internal_error\",\n `Failed to disconnect Signal: ${err instanceof Error ? err.message : String(err)}`\n )\n );\n return;\n }\n\n if (setupService) {\n try {\n setupService.updateConfig((cfg) => {\n const connectors = (cfg.connectors ?? {}) as Record<string, unknown>;\n if (accountId === \"default\") {\n delete connectors.signal;\n return;\n }\n const signalConfig = connectors.signal as Record<string, unknown> | undefined;\n const accounts = signalConfig?.accounts as Record<string, unknown> | undefined;\n if (accounts) {\n delete accounts[accountId];\n }\n connectors.signal = {\n ...(signalConfig ?? {}),\n ...(accounts ? { accounts } : {}),\n };\n });\n } catch (error) {\n res\n .status(500)\n .json(\n setupError(\n \"internal_error\",\n `Failed to persist Signal disconnect: ${error instanceof Error ? error.message : String(error)}`\n )\n );\n return;\n }\n }\n\n res.status(200).json({\n connector: \"signal\",\n state: \"idle\",\n detail: { accountId },\n } satisfies SetupStatusResponse<{ accountId: string }>);\n}\n\n// ── Exported route definitions ──────────────────────────────────────────\n\n/**\n * Plugin routes for Signal device-linking setup.\n * Registered with `rawPath: true` to mount at the canonical\n * `/api/setup/signal/*` paths without the plugin-name prefix.\n */\nexport const signalSetupRoutes: Route[] = [\n {\n type: \"GET\",\n path: \"/api/setup/signal/status\",\n handler: handleStatus,\n rawPath: true,\n },\n {\n type: \"POST\",\n path: \"/api/setup/signal/start\",\n handler: handleStart,\n rawPath: true,\n },\n {\n type: \"POST\",\n path: \"/api/setup/signal/cancel\",\n handler: handleCancel,\n rawPath: true,\n },\n];\n\n/**\n * Override plugin-discovery status for Signal when QR-paired auth exists.\n * Exported so the agent can still use it during plugin discovery if needed.\n */\nexport function applySignalQrOverride(\n plugins: {\n id: string;\n validationErrors: unknown[];\n configured: boolean;\n qrConnected?: boolean;\n }[],\n workspaceDir: string\n): void {\n if (signalAuthExists(workspaceDir, \"default\")) {\n const sigPlugin = plugins.find((plugin) => plugin.id === \"signal\");\n if (sigPlugin) {\n sigPlugin.validationErrors = [];\n sigPlugin.configured = true;\n sigPlugin.qrConnected = true;\n }\n }\n}\n",
70
+ "import { type IAgentRuntime, Service } from \"@elizaos/core\";\n\n// Inlined to avoid adding @elizaos/plugin-workflow as a compile-time dependency.\n// The runtime duck-types the service — only the serviceType string and resolve() shape matter.\nconst WORKFLOW_CREDENTIAL_PROVIDER_TYPE = \"workflow_credential_provider\";\ntype CredentialProviderResult =\n | { status: \"credential_data\"; data: Record<string, unknown> }\n | { status: \"needs_auth\"; authUrl: string }\n | null;\n\n// Signal uses signal-cli REST API (local only). Wire via httpHeaderAuth pointing at the local endpoint.\n// Note: Signal workflows are local-only — the workflow runtime must be on the same host as signal-cli.\nconst SUPPORTED = [\"httpHeaderAuth\"];\n\nexport class SignalWorkflowCredentialProvider extends Service {\n static override readonly serviceType = WORKFLOW_CREDENTIAL_PROVIDER_TYPE;\n override capabilityDescription =\n \"Supplies Signal credentials to the workflow plugin (local signal-cli REST API).\";\n\n static async start(runtime: IAgentRuntime): Promise<SignalWorkflowCredentialProvider> {\n return new SignalWorkflowCredentialProvider(runtime);\n }\n\n async stop(): Promise<void> {}\n\n async resolve(_userId: string, credType: string): Promise<CredentialProviderResult> {\n if (credType !== \"httpHeaderAuth\") return null;\n const httpUrl = this.runtime.getSetting(\"SIGNAL_HTTP_URL\") as string | undefined;\n const accountNumber = this.runtime.getSetting(\"SIGNAL_ACCOUNT_NUMBER\") as string | undefined;\n if (!httpUrl?.trim() || !accountNumber?.trim()) return null;\n // Signal REST API is unauthenticated by default; supply the account number and base URL as sentinels.\n return {\n status: \"credential_data\",\n data: {\n name: \"X-Signal-Account\",\n value: accountNumber.trim(),\n signalHttpUrl: httpUrl.trim(),\n },\n };\n }\n\n checkCredentialTypes(credTypes: string[]): { supported: string[]; unsupported: string[] } {\n return {\n supported: credTypes.filter((t) => SUPPORTED.includes(t)),\n unsupported: credTypes.filter((t) => !SUPPORTED.includes(t)),\n };\n }\n}\n",
71
+ "import { randomUUID } from \"node:crypto\";\nimport type { SignalRecentMessage } from \"./types\";\n\nexport interface SignalLocalClientConfig {\n httpUrl: string;\n accountNumber: string;\n}\n\nexport type { SignalRecentMessage } from \"./types\";\n\nconst DEFAULT_SIGNAL_HTTP_URL = \"http://127.0.0.1:8080\";\nconst DEFAULT_RECEIVE_LIMIT = 25;\nconst MAX_RECEIVE_LIMIT = 100;\n\ninterface SignalCliEnvelope {\n source?: string;\n sourceName?: string;\n sourceNumber?: string;\n sourceUuid?: string;\n sourceDevice?: number;\n timestamp?: number;\n dataMessage?: {\n timestamp?: number;\n message?: string;\n groupInfo?: {\n groupId?: string;\n type?: string;\n } | null;\n } | null;\n}\n\ninterface SignalCliReceiveResponse {\n envelope?: SignalCliEnvelope;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction isSignalCliReceiveResponse(value: unknown): value is SignalCliReceiveResponse {\n return isRecord(value);\n}\n\nexport function readSignalLocalClientConfigFromEnv(\n env: NodeJS.ProcessEnv = process.env\n): SignalLocalClientConfig | null {\n const accountNumber = env.SIGNAL_ACCOUNT_NUMBER?.trim();\n if (!accountNumber) return null;\n return {\n httpUrl: env.SIGNAL_HTTP_URL?.trim() || DEFAULT_SIGNAL_HTTP_URL,\n accountNumber,\n };\n}\n\nexport async function readSignalInboundMessages(\n config: SignalLocalClientConfig,\n limit = DEFAULT_RECEIVE_LIMIT\n): Promise<SignalRecentMessage[]> {\n const parsedLimit = Number.isFinite(limit) ? Math.floor(limit) : DEFAULT_RECEIVE_LIMIT;\n const receiveLimit = Math.min(Math.max(1, parsedLimit), MAX_RECEIVE_LIMIT);\n const baseUrl = config.httpUrl.replace(/\\/$/, \"\");\n const account = encodeURIComponent(config.accountNumber);\n const response = await fetch(`${baseUrl}/v1/receive/${account}`, {\n headers: { Accept: \"application/json\" },\n });\n if (!response.ok) {\n throw new Error(`Signal local receive failed with HTTP ${response.status}`);\n }\n\n const body: unknown = await response.json();\n if (!Array.isArray(body)) {\n throw new Error(\"Signal local receive returned an unexpected payload\");\n }\n\n const messages: SignalRecentMessage[] = [];\n for (const item of body.filter(isSignalCliReceiveResponse)) {\n if (messages.length >= receiveLimit) break;\n\n const envelope = item.envelope;\n const dataMessage = envelope?.dataMessage;\n const text = dataMessage?.message?.trim();\n if (!envelope || !dataMessage || !text) continue;\n\n const senderNumber = envelope.sourceNumber ?? envelope.source ?? null;\n const senderUuid = envelope.sourceUuid ?? null;\n const groupId = dataMessage.groupInfo?.groupId ?? null;\n const isGroup = Boolean(groupId);\n const channelId = groupId ?? senderNumber ?? senderUuid;\n if (!channelId) continue;\n\n const speakerName = envelope.sourceName ?? senderNumber ?? senderUuid ?? \"Signal\";\n const createdAt = dataMessage.timestamp ?? envelope.timestamp ?? Date.now();\n const threadId = `signal:${channelId}`;\n\n messages.push({\n id: `${threadId}:${createdAt}:${randomUUID()}`,\n roomId: threadId,\n channelId,\n roomName: isGroup ? `Signal group ${channelId}` : speakerName,\n speakerName,\n text,\n createdAt,\n isFromAgent: senderNumber === config.accountNumber,\n isGroup,\n });\n }\n\n return messages;\n}\n"
71
72
  ],
72
- "mappings": "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AAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAI;AAAA,IACV;AAAA,IAAG;AAAA,IAAG;AAAA,IAAI;AAAA,IACV;AAAA,IAAG;AAAA,IAAG;AAAA,IAAI;AAAA,IACV;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;A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",
73
- "debugId": "593E95DA16C8A67B64756E2164756E21",
73
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIA,OAAO,UAAU,QAAS,GAAG;AAAA,IAC3B,OAAO,OAAO,YAAY,cAAc,QAAQ,aAAa,QAAQ,UAAU;AAAA;AAAA;;;;ECLjF,IAAI;AAAA,EACJ,IAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAC1C;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAC7C;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IACtD;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,EACxD;AAAA,EAQQ,wBAAgB,SAAS,aAAc,CAAC,SAAS;AAAA,IACvD,IAAI,CAAC;AAAA,MAAS,MAAM,IAAI,MAAM,uCAAuC;AAAA,IACrE,IAAI,UAAU,KAAK,UAAU;AAAA,MAAI,MAAM,IAAI,MAAM,2CAA2C;AAAA,IAC5F,OAAO,UAAU,IAAI;AAAA;AAAA,EASf,kCAA0B,SAAS,uBAAwB,CAAC,SAAS;AAAA,IAC3E,OAAO,gBAAgB;AAAA;AAAA,EASjB,sBAAc,QAAS,CAAC,MAAM;AAAA,IACpC,IAAI,QAAQ;AAAA,IAEZ,OAAO,SAAS,GAAG;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,4BAAoB,SAAS,iBAAkB,CAAC,GAAG;AAAA,IACzD,IAAI,OAAO,MAAM,YAAY;AAAA,MAC3B,MAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAAA,IAEA,iBAAiB;AAAA;AAAA,EAGX,6BAAqB,QAAS,GAAG;AAAA,IACvC,OAAO,OAAO,mBAAmB;AAAA;AAAA,EAG3B,iBAAS,SAAS,MAAO,CAAC,OAAO;AAAA,IACvC,OAAO,eAAe,KAAK;AAAA;AAAA;;;;EC7DrB,YAAI,EAAE,KAAK,EAAE;AAAA,EACb,YAAI,EAAE,KAAK,EAAE;AAAA,EACb,YAAI,EAAE,KAAK,EAAE;AAAA,EACb,YAAI,EAAE,KAAK,EAAE;AAAA,EAErB,SAAS,UAAW,CAAC,QAAQ;AAAA,IAC3B,IAAI,OAAO,WAAW,UAAU;AAAA,MAC9B,MAAM,IAAI,MAAM,uBAAuB;AAAA,IACzC;AAAA,IAEA,MAAM,QAAQ,OAAO,YAAY;AAAA,IAEjC,QAAQ;AAAA,WACD;AAAA,WACA;AAAA,QACH,OAAe;AAAA,WAEZ;AAAA,WACA;AAAA,QACH,OAAe;AAAA,WAEZ;AAAA,WACA;AAAA,QACH,OAAe;AAAA,WAEZ;AAAA,WACA;AAAA,QACH,OAAe;AAAA;AAAA,QAGf,MAAM,IAAI,MAAM,uBAAuB,MAAM;AAAA;AAAA;AAAA,EAI3C,kBAAU,SAAS,OAAQ,CAAC,OAAO;AAAA,IACzC,OAAO,SAAS,OAAO,MAAM,QAAQ,eACnC,MAAM,OAAO,KAAK,MAAM,MAAM;AAAA;AAAA,EAG1B,eAAO,SAAS,IAAK,CAAC,OAAO,cAAc;AAAA,IACjD,IAAY,gBAAQ,KAAK,GAAG;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI;AAAA,MACF,OAAO,WAAW,KAAK;AAAA,MACvB,OAAO,GAAG;AAAA,MACV,OAAO;AAAA;AAAA;AAAA;;;;EC/CX,SAAS,SAAU,GAAG;AAAA,IACpB,KAAK,SAAS,CAAC;AAAA,IACf,KAAK,SAAS;AAAA;AAAA,EAGhB,UAAU,YAAY;AAAA,IAEpB,KAAK,QAAS,CAAC,OAAO;AAAA,MACpB,MAAM,WAAW,KAAK,MAAM,QAAQ,CAAC;AAAA,MACrC,QAAS,KAAK,OAAO,cAAe,IAAI,QAAQ,IAAM,OAAO;AAAA;AAAA,IAG/D,KAAK,QAAS,CAAC,KAAK,QAAQ;AAAA,MAC1B,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,QAC/B,KAAK,QAAS,QAAS,SAAS,IAAI,IAAM,OAAO,CAAC;AAAA,MACpD;AAAA;AAAA,IAGF,iBAAiB,QAAS,GAAG;AAAA,MAC3B,OAAO,KAAK;AAAA;AAAA,IAGd,QAAQ,QAAS,CAAC,KAAK;AAAA,MACrB,MAAM,WAAW,KAAK,MAAM,KAAK,SAAS,CAAC;AAAA,MAC3C,IAAI,KAAK,OAAO,UAAU,UAAU;AAAA,QAClC,KAAK,OAAO,KAAK,CAAC;AAAA,MACpB;AAAA,MAEA,IAAI,KAAK;AAAA,QACP,KAAK,OAAO,aAAc,QAAU,KAAK,SAAS;AAAA,MACpD;AAAA,MAEA,KAAK;AAAA;AAAA,EAET;AAAA,EAEA,OAAO,UAAU;AAAA;;;;EC/BjB,SAAS,SAAU,CAAC,MAAM;AAAA,IACxB,IAAI,CAAC,QAAQ,OAAO,GAAG;AAAA,MACrB,MAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AAAA,IAEA,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO,IAAI,WAAW,OAAO,IAAI;AAAA,IACtC,KAAK,cAAc,IAAI,WAAW,OAAO,IAAI;AAAA;AAAA,EAY/C,UAAU,UAAU,MAAM,QAAS,CAAC,KAAK,KAAK,OAAO,UAAU;AAAA,IAC7D,MAAM,QAAQ,MAAM,KAAK,OAAO;AAAA,IAChC,KAAK,KAAK,SAAS;AAAA,IACnB,IAAI;AAAA,MAAU,KAAK,YAAY,SAAS;AAAA;AAAA,EAU1C,UAAU,UAAU,MAAM,QAAS,CAAC,KAAK,KAAK;AAAA,IAC5C,OAAO,KAAK,KAAK,MAAM,KAAK,OAAO;AAAA;AAAA,EAWrC,UAAU,UAAU,MAAM,QAAS,CAAC,KAAK,KAAK,OAAO;AAAA,IACnD,KAAK,KAAK,MAAM,KAAK,OAAO,QAAQ;AAAA;AAAA,EAUtC,UAAU,UAAU,aAAa,QAAS,CAAC,KAAK,KAAK;AAAA,IACnD,OAAO,KAAK,YAAY,MAAM,KAAK,OAAO;AAAA;AAAA,EAG5C,OAAO,UAAU;AAAA;;;;ECtDjB,IAAM,gCAAmC;AAAA,EAgBjC,0BAAkB,SAAS,eAAgB,CAAC,SAAS;AAAA,IAC3D,IAAI,YAAY;AAAA,MAAG,OAAO,CAAC;AAAA,IAE3B,MAAM,WAAW,KAAK,MAAM,UAAU,CAAC,IAAI;AAAA,IAC3C,MAAM,OAAO,cAAc,OAAO;AAAA,IAClC,MAAM,YAAY,SAAS,MAAM,KAAK,KAAK,MAAM,OAAO,OAAO,IAAI,WAAW,EAAE,IAAI;AAAA,IACpF,MAAM,YAAY,CAAC,OAAO,CAAC;AAAA,IAE3B,SAAS,IAAI,EAAG,IAAI,WAAW,GAAG,KAAK;AAAA,MACrC,UAAU,KAAK,UAAU,IAAI,KAAK;AAAA,IACpC;AAAA,IAEA,UAAU,KAAK,CAAC;AAAA,IAEhB,OAAO,UAAU,QAAQ;AAAA;AAAA,EAuBnB,uBAAe,SAAS,YAAa,CAAC,SAAS;AAAA,IACrD,MAAM,SAAS,CAAC;AAAA,IAChB,MAAM,MAAc,wBAAgB,OAAO;AAAA,IAC3C,MAAM,YAAY,IAAI;AAAA,IAEtB,SAAS,IAAI,EAAG,IAAI,WAAW,KAAK;AAAA,MAClC,SAAS,IAAI,EAAG,IAAI,WAAW,KAAK;AAAA,QAElC,IAAK,MAAM,KAAK,MAAM,KACjB,MAAM,KAAK,MAAM,YAAY,KAC7B,MAAM,YAAY,KAAK,MAAM,GAAI;AAAA,UACpC;AAAA,QACF;AAAA,QAEA,OAAO,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA;;;;ECjFT,IAAM,gCAAmC;AAAA,EACzC,IAAM,sBAAsB;AAAA,EASpB,uBAAe,SAAS,YAAa,CAAC,SAAS;AAAA,IACrD,MAAM,OAAO,cAAc,OAAO;AAAA,IAElC,OAAO;AAAA,MAEL,CAAC,GAAG,CAAC;AAAA,MAEL,CAAC,OAAO,qBAAqB,CAAC;AAAA,MAE9B,CAAC,GAAG,OAAO,mBAAmB;AAAA,IAChC;AAAA;AAAA;;;;EChBM,mBAAW;AAAA,IACjB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AAAA,EAMA,IAAM,gBAAgB;AAAA,IACpB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EAQQ,kBAAU,SAAS,OAAQ,CAAC,MAAM;AAAA,IACxC,OAAO,QAAQ,QAAQ,SAAS,MAAM,CAAC,MAAM,IAAI,KAAK,QAAQ,KAAK,QAAQ;AAAA;AAAA,EAUrE,eAAO,SAAS,IAAK,CAAC,OAAO;AAAA,IACnC,OAAe,gBAAQ,KAAK,IAAI,SAAS,OAAO,EAAE,IAAI;AAAA;AAAA,EAUhD,uBAAe,SAAS,YAAa,CAAC,MAAM;AAAA,IAClD,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,SAAS;AAAA,IACb,IAAI,eAAe;AAAA,IACnB,IAAI,eAAe;AAAA,IACnB,IAAI,UAAU;AAAA,IACd,IAAI,UAAU;AAAA,IAEd,SAAS,MAAM,EAAG,MAAM,MAAM,OAAO;AAAA,MACnC,eAAe,eAAe;AAAA,MAC9B,UAAU,UAAU;AAAA,MAEpB,SAAS,MAAM,EAAG,MAAM,MAAM,OAAO;AAAA,QACnC,IAAI,UAAS,KAAK,IAAI,KAAK,GAAG;AAAA,QAC9B,IAAI,YAAW,SAAS;AAAA,UACtB;AAAA,QACF,EAAO;AAAA,UACL,IAAI,gBAAgB;AAAA,YAAG,UAAU,cAAc,MAAM,eAAe;AAAA,UACpE,UAAU;AAAA,UACV,eAAe;AAAA;AAAA,QAGjB,UAAS,KAAK,IAAI,KAAK,GAAG;AAAA,QAC1B,IAAI,YAAW,SAAS;AAAA,UACtB;AAAA,QACF,EAAO;AAAA,UACL,IAAI,gBAAgB;AAAA,YAAG,UAAU,cAAc,MAAM,eAAe;AAAA,UACpE,UAAU;AAAA,UACV,eAAe;AAAA;AAAA,MAEnB;AAAA,MAEA,IAAI,gBAAgB;AAAA,QAAG,UAAU,cAAc,MAAM,eAAe;AAAA,MACpE,IAAI,gBAAgB;AAAA,QAAG,UAAU,cAAc,MAAM,eAAe;AAAA,IACtE;AAAA,IAEA,OAAO;AAAA;AAAA,EAQD,uBAAe,SAAS,YAAa,CAAC,MAAM;AAAA,IAClD,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,SAAS;AAAA,IAEb,SAAS,MAAM,EAAG,MAAM,OAAO,GAAG,OAAO;AAAA,MACvC,SAAS,MAAM,EAAG,MAAM,OAAO,GAAG,OAAO;AAAA,QACvC,MAAM,OAAO,KAAK,IAAI,KAAK,GAAG,IAC5B,KAAK,IAAI,KAAK,MAAM,CAAC,IACrB,KAAK,IAAI,MAAM,GAAG,GAAG,IACrB,KAAK,IAAI,MAAM,GAAG,MAAM,CAAC;AAAA,QAE3B,IAAI,SAAS,KAAK,SAAS;AAAA,UAAG;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,OAAO,SAAS,cAAc;AAAA;AAAA,EASxB,uBAAe,SAAS,YAAa,CAAC,MAAM;AAAA,IAClD,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,SAAS;AAAA,IACb,IAAI,UAAU;AAAA,IACd,IAAI,UAAU;AAAA,IAEd,SAAS,MAAM,EAAG,MAAM,MAAM,OAAO;AAAA,MACnC,UAAU,UAAU;AAAA,MACpB,SAAS,MAAM,EAAG,MAAM,MAAM,OAAO;AAAA,QACnC,UAAY,WAAW,IAAK,OAAS,KAAK,IAAI,KAAK,GAAG;AAAA,QACtD,IAAI,OAAO,OAAO,YAAY,QAAS,YAAY;AAAA,UAAQ;AAAA,QAE3D,UAAY,WAAW,IAAK,OAAS,KAAK,IAAI,KAAK,GAAG;AAAA,QACtD,IAAI,OAAO,OAAO,YAAY,QAAS,YAAY;AAAA,UAAQ;AAAA,MAC7D;AAAA,IACF;AAAA,IAEA,OAAO,SAAS,cAAc;AAAA;AAAA,EAWxB,uBAAe,SAAS,YAAa,CAAC,MAAM;AAAA,IAClD,IAAI,YAAY;AAAA,IAChB,MAAM,eAAe,KAAK,KAAK;AAAA,IAE/B,SAAS,IAAI,EAAG,IAAI,cAAc;AAAA,MAAK,aAAa,KAAK,KAAK;AAAA,IAE9D,MAAM,IAAI,KAAK,IAAI,KAAK,KAAM,YAAY,MAAM,eAAgB,CAAC,IAAI,EAAE;AAAA,IAEvE,OAAO,IAAI,cAAc;AAAA;AAAA,EAW3B,SAAS,SAAU,CAAC,aAAa,GAAG,GAAG;AAAA,IACrC,QAAQ;AAAA,WACO,iBAAS;AAAA,QAAY,QAAQ,IAAI,KAAK,MAAM;AAAA,WAC5C,iBAAS;AAAA,QAAY,OAAO,IAAI,MAAM;AAAA,WACtC,iBAAS;AAAA,QAAY,OAAO,IAAI,MAAM;AAAA,WACtC,iBAAS;AAAA,QAAY,QAAQ,IAAI,KAAK,MAAM;AAAA,WAC5C,iBAAS;AAAA,QAAY,QAAQ,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM;AAAA,WAC5E,iBAAS;AAAA,QAAY,OAAQ,IAAI,IAAK,IAAK,IAAI,IAAK,MAAM;AAAA,WAC1D,iBAAS;AAAA,QAAY,QAAS,IAAI,IAAK,IAAK,IAAI,IAAK,KAAK,MAAM;AAAA,WAChE,iBAAS;AAAA,QAAY,QAAS,IAAI,IAAK,KAAK,IAAI,KAAK,KAAK,MAAM;AAAA;AAAA,QAEpE,MAAM,IAAI,MAAM,qBAAqB,WAAW;AAAA;AAAA;AAAA,EAUrD,oBAAY,SAAS,SAAU,CAAC,SAAS,MAAM;AAAA,IACrD,MAAM,OAAO,KAAK;AAAA,IAElB,SAAS,MAAM,EAAG,MAAM,MAAM,OAAO;AAAA,MACnC,SAAS,MAAM,EAAG,MAAM,MAAM,OAAO;AAAA,QACnC,IAAI,KAAK,WAAW,KAAK,GAAG;AAAA,UAAG;AAAA,QAC/B,KAAK,IAAI,KAAK,KAAK,UAAU,SAAS,KAAK,GAAG,CAAC;AAAA,MACjD;AAAA,IACF;AAAA;AAAA,EASM,sBAAc,SAAS,WAAY,CAAC,MAAM,iBAAiB;AAAA,IACjE,MAAM,cAAc,OAAO,KAAa,gBAAQ,EAAE;AAAA,IAClD,IAAI,cAAc;AAAA,IAClB,IAAI,eAAe;AAAA,IAEnB,SAAS,IAAI,EAAG,IAAI,aAAa,KAAK;AAAA,MACpC,gBAAgB,CAAC;AAAA,MACT,kBAAU,GAAG,IAAI;AAAA,MAGzB,MAAM,UACI,qBAAa,IAAI,IACjB,qBAAa,IAAI,IACjB,qBAAa,IAAI,IACjB,qBAAa,IAAI;AAAA,MAGnB,kBAAU,GAAG,IAAI;AAAA,MAEzB,IAAI,UAAU,cAAc;AAAA,QAC1B,eAAe;AAAA,QACf,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA;;;;ECxOT,IAAM;AAAA,EAEN,IAAM,kBAAkB;AAAA,IAEtB;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IACT;AAAA,IAAG;AAAA,IAAG;AAAA,IAAI;AAAA,IACV;AAAA,IAAG;AAAA,IAAG;AAAA,IAAI;AAAA,IACV;AAAA,IAAG;AAAA,IAAG;AAAA,IAAI;AAAA,IACV;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IACX;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACZ;AAAA,IAAI;AAAA,IAAI;A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",
74
+ "debugId": "A2D8D2D244D7703264756E2164756E21",
74
75
  "names": []
75
76
  }