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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shaw Walters and elizaOS Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,90 @@
1
+ # @elizaos/plugin-signal
2
+
3
+ Signal messaging integration for elizaOS. Enables Eliza agents to send and receive end-to-end-encrypted Signal messages via [signal-cli](https://github.com/AsamK/signal-cli) or its REST API.
4
+
5
+ ## What it does
6
+
7
+ - **Receive messages** — inbound Signal DMs and group messages are stored as agent memories and trigger `SIGNAL_MESSAGE_RECEIVED` events.
8
+ - **Send messages** — agents send DMs and group messages through the elizaOS `MessageConnector` surface (LifeOps, workflow automations, explicit send actions).
9
+ - **Contact and group discovery** — the plugin exposes Signal contacts and groups as connector targets so agents can resolve conversation destinations by name, phone number, or group.
10
+ - **QR device linking** — HTTP endpoints drive a pairing flow (QR code → signal-cli device link) without requiring a separate phone.
11
+ - **Multi-account** — configure multiple Signal accounts via `character.settings.signal.accounts`.
12
+ - **Workflow integration** — supplies credentials to the workflow plugin for Signal-backed automations.
13
+
14
+ ## Capabilities registered
15
+
16
+ This plugin registers no actions. Messaging is handled through the `MessageConnector` interface.
17
+
18
+ **Services:**
19
+ - `SignalService` — core connector; manages daemon lifecycle, inbound/outbound messages, contacts, and groups.
20
+ - `SignalWorkflowCredentialProvider` — bridges Signal credentials to the workflow plugin.
21
+
22
+ **Setup routes (no auth required, mounted at raw paths):**
23
+ - `GET /api/setup/signal/status` — pairing and connection state
24
+ - `POST /api/setup/signal/start` — begin QR device-linking session
25
+ - `POST /api/setup/signal/cancel` — stop pairing and disconnect
26
+
27
+ ## Prerequisites
28
+
29
+ One of:
30
+ - **signal-cli** installed and on `PATH` (the plugin can spawn and manage it as a daemon). On macOS, install via Homebrew: `brew install signal-cli`. Java is required; the plugin auto-detects Homebrew's OpenJDK.
31
+ - A running **signal-cli REST API server** (`signal-cli -a +1... daemon --http 127.0.0.1:8080`) accessible at `SIGNAL_HTTP_URL`.
32
+ - The optional **`@elizaos/signal-native`** peer dependency for QR linking without spawning signal-cli.
33
+
34
+ The agent's Signal account must be linked (registered or device-linked) before the service can connect. Use the `/api/setup/signal/start` endpoint or run `signal-cli -a +1... link` manually.
35
+
36
+ ## Configuration
37
+
38
+ ### Environment variables
39
+
40
+ | Variable | Required | Default | Description |
41
+ |---|---|---|---|
42
+ | `SIGNAL_ACCOUNT_NUMBER` | **yes** | — | Phone number in E.164 format (e.g. `+15551234567`) |
43
+ | `SIGNAL_HTTP_URL` | no | `http://127.0.0.1:8080` | signal-cli REST API URL; omit to auto-start a local daemon |
44
+ | `SIGNAL_CLI_PATH` | no | `signal-cli` (PATH) | Path to signal-cli binary |
45
+ | `SIGNAL_CLI_AUTO_INSTALL` | no | `true` | Set `false` to disable Homebrew auto-install |
46
+ | `SIGNAL_AUTH_DIR` | no | `~/.local/share/signal-cli` | signal-cli data directory |
47
+ | `SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES` | no | `false` | Set `true` to respond only to DMs |
48
+ | `SIGNAL_AUTO_REPLY` | no | `false` | Set `true` to have the agent auto-generate replies |
49
+ | `SIGNAL_RECEIVE_MODE` | no | `manual` | `on-start` polls immediately; `manual` lets LifeOps pull |
50
+ | `SIGNAL_STARTUP_TIMEOUT_MS` | no | `30000` | Daemon startup timeout (max 120 000 ms) |
51
+
52
+ ### Character settings (multi-account)
53
+
54
+ ```jsonc
55
+ {
56
+ "settings": {
57
+ "signal": {
58
+ "account": "+15551234567",
59
+ "httpUrl": "http://127.0.0.1:8080",
60
+ "accounts": {
61
+ "work": {
62
+ "account": "+15559876543",
63
+ "httpUrl": "http://127.0.0.1:8081",
64
+ "enabled": true
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
72
+ ## Enabling the plugin
73
+
74
+ The plugin auto-enables when a `signal` connector block is present in the agent config and not explicitly set to `enabled: false`. You can also add it directly to the plugins array:
75
+
76
+ ```ts
77
+ import signalPlugin from "@elizaos/plugin-signal";
78
+
79
+ const agent = new AgentRuntime({
80
+ plugins: [signalPlugin],
81
+ // ...
82
+ });
83
+ ```
84
+
85
+ ## Important behavior notes
86
+
87
+ - **Auto-reply is off by default.** Inbound messages are recorded as memories and events, but the agent does not respond unless `SIGNAL_AUTO_REPLY=true`. Use LifeOps or explicit workflow actions to send responses.
88
+ - **Auth directory:** signal-cli always uses `~/.local/share/signal-cli` on all platforms (including macOS). This matches the signal-cli default, so an existing local installation works without extra config.
89
+ - **Message length:** messages over 4 000 characters are split automatically.
90
+ - **Group filtering:** set `SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES=true` to limit the agent to direct messages only.
package/auto-enable.ts CHANGED
@@ -8,7 +8,7 @@ import type { PluginAutoEnableContext } from "@elizaos/core";
8
8
 
9
9
  /** Enable when a `signal` connector block is present and not explicitly disabled. */
10
10
  export function shouldEnable(ctx: PluginAutoEnableContext): boolean {
11
- const c = (ctx.config?.connectors as Record<string, unknown> | undefined)?.signal;
11
+ const c = (ctx.config.connectors as Record<string, unknown> | undefined)?.signal;
12
12
  if (!c || typeof c !== "object") return false;
13
13
  const config = c as Record<string, unknown>;
14
14
  if (config.enabled === false) return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-signal",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.3-beta.2",
4
4
  "description": "Signal messaging integration plugin for ElizaOS agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,8 +15,24 @@
15
15
  "./package.json": "./package.json",
16
16
  ".": {
17
17
  "types": "./dist/index.d.ts",
18
+ "eliza-source": {
19
+ "types": "./src/index.ts",
20
+ "import": "./src/index.ts",
21
+ "default": "./src/index.ts"
22
+ },
18
23
  "import": "./dist/index.js",
19
24
  "default": "./dist/index.js"
25
+ },
26
+ "./*.css": "./dist/*.css",
27
+ "./*": {
28
+ "types": "./dist/*.d.ts",
29
+ "eliza-source": {
30
+ "types": "./src/*.ts",
31
+ "import": "./src/*.ts",
32
+ "default": "./src/*.ts"
33
+ },
34
+ "import": "./dist/*.js",
35
+ "default": "./dist/*.js"
20
36
  }
21
37
  },
22
38
  "files": [
@@ -54,19 +70,20 @@
54
70
  "format:check": "bunx @biomejs/biome format ."
55
71
  },
56
72
  "dependencies": {
57
- "@elizaos/core": "2.0.0-beta.1",
58
- "qrcode": "^1.5.4",
59
- "zod": "^4.4.3"
73
+ "@elizaos/core": "2.0.3-beta.2",
74
+ "qrcode": "^1.5.4"
60
75
  },
61
76
  "devDependencies": {
62
77
  "@biomejs/biome": "^2.4.14",
63
78
  "@types/node": "^25.0.3",
64
79
  "@types/qrcode": "^1.5.5",
65
- "typescript": "^6.0.3"
80
+ "bun-types": "^1.2.25",
81
+ "typescript": "^6.0.3",
82
+ "vitest": "^4.1.4"
66
83
  },
67
84
  "peerDependencies": {
68
- "@elizaos/core": "2.0.0-beta.1",
69
- "@elizaos/signal-native": "*"
85
+ "@elizaos/core": "2.0.3-beta.2",
86
+ "@elizaos/signal-native": "latest"
70
87
  },
71
88
  "peerDependenciesMeta": {
72
89
  "@elizaos/signal-native": {
@@ -119,5 +136,6 @@
119
136
  "platformDetails": {
120
137
  "node": "Default export (Node.js)"
121
138
  }
122
- }
139
+ },
140
+ "gitHead": "82fe0f44215954c2417328203f5bd6510985c1fc"
123
141
  }
@@ -1,127 +0,0 @@
1
- import type { IAgentRuntime } from "@elizaos/core";
2
- /**
3
- * Default account identifier used when no specific account is configured
4
- */
5
- export declare const DEFAULT_ACCOUNT_ID = "default";
6
- /**
7
- * DM-specific configuration
8
- */
9
- export interface SignalDmConfig {
10
- /** If false, ignore all incoming Signal DMs */
11
- enabled?: boolean;
12
- /** Direct message access policy */
13
- policy?: "open" | "disabled" | "allowlist" | "pairing";
14
- /** Allowlist for DM senders (phone numbers or UUIDs) */
15
- allowFrom?: Array<string | number>;
16
- }
17
- /**
18
- * Group-specific configuration
19
- */
20
- export interface SignalGroupConfig {
21
- /** If false, ignore all group messages */
22
- enabled?: boolean;
23
- /** Group message access policy */
24
- policy?: "open" | "disabled" | "allowlist";
25
- /** Require bot mention to respond in groups */
26
- requireMention?: boolean;
27
- /** Allowlist for groups (IDs or names) */
28
- allowFrom?: Array<string | number>;
29
- }
30
- /**
31
- * Reaction notification mode
32
- */
33
- export type SignalReactionNotificationMode = "off" | "own" | "all" | "allowlist";
34
- /**
35
- * Configuration for a single Signal account
36
- */
37
- export interface SignalAccountConfig {
38
- /** Optional display name for this account */
39
- name?: string;
40
- /** If false, do not start this Signal account */
41
- enabled?: boolean;
42
- /** Signal account phone number in E.164 format */
43
- account?: string;
44
- /** Signal CLI HTTP server URL */
45
- httpUrl?: string;
46
- /** Signal CLI auth/data directory */
47
- authDir?: string;
48
- /** Signal CLI HTTP server host */
49
- httpHost?: string;
50
- /** Signal CLI HTTP server port */
51
- httpPort?: number;
52
- /** Path to signal-cli binary */
53
- cliPath?: string;
54
- /** Auto-start signal-cli daemon if not running */
55
- autoStart?: boolean;
56
- /** Outbound text chunk size (chars) */
57
- textChunkLimit?: number;
58
- /** History limit for context */
59
- historyLimit?: number;
60
- /** Reaction notification mode */
61
- reactionNotifications?: SignalReactionNotificationMode;
62
- /** Reaction allowlist when mode is 'allowlist' */
63
- reactionAllowlist?: Array<string | number>;
64
- /** DM configuration */
65
- dm?: SignalDmConfig;
66
- /** Group configuration */
67
- group?: SignalGroupConfig;
68
- /** Whether to ignore group messages */
69
- shouldIgnoreGroupMessages?: boolean;
70
- /** Allowed groups */
71
- allowedGroups?: string[];
72
- /** Blocked numbers */
73
- blockedNumbers?: string[];
74
- }
75
- /**
76
- * Multi-account Signal configuration structure
77
- */
78
- export interface SignalMultiAccountConfig {
79
- /** Default/base configuration applied to all accounts */
80
- enabled?: boolean;
81
- account?: string;
82
- httpUrl?: string;
83
- authDir?: string;
84
- /** Per-account configuration overrides */
85
- accounts?: Record<string, SignalAccountConfig>;
86
- }
87
- /**
88
- * Resolved Signal account with all configuration merged
89
- */
90
- export interface ResolvedSignalAccount {
91
- accountId: string;
92
- enabled: boolean;
93
- name?: string;
94
- account?: string;
95
- baseUrl: string;
96
- configured: boolean;
97
- config: SignalAccountConfig;
98
- }
99
- /**
100
- * Normalizes an account ID, returning the default if not provided
101
- */
102
- export declare function normalizeAccountId(accountId?: string | null): string;
103
- /**
104
- * Gets the multi-account configuration from runtime settings
105
- */
106
- export declare function getMultiAccountConfig(runtime: IAgentRuntime): SignalMultiAccountConfig;
107
- /**
108
- * Lists all configured account IDs
109
- */
110
- export declare function listSignalAccountIds(runtime: IAgentRuntime): string[];
111
- /**
112
- * Resolves the default account ID to use
113
- */
114
- export declare function resolveDefaultSignalAccountId(runtime: IAgentRuntime): string;
115
- /**
116
- * Resolves a complete Signal account configuration
117
- */
118
- export declare function resolveSignalAccount(runtime: IAgentRuntime, accountId?: string | null): ResolvedSignalAccount;
119
- /**
120
- * Lists all enabled Signal accounts
121
- */
122
- export declare function listEnabledSignalAccounts(runtime: IAgentRuntime): ResolvedSignalAccount[];
123
- /**
124
- * Checks if multi-account mode is enabled
125
- */
126
- export declare function isMultiAccountEnabled(runtime: IAgentRuntime): boolean;
127
- //# sourceMappingURL=accounts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IACvD,wDAAwD;IACxD,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;IAC3C,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,qBAAqB,CAAC,EAAE,8BAA8B,CAAC;IACvD,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC3C,uBAAuB;IACvB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,uCAAuC;IACvC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,wBAAwB,CAYtF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,CAcrE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM5E;AAwED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,qBAAqB,CA8BvB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,qBAAqB,EAAE,CAIzF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAGrE"}
@@ -1,8 +0,0 @@
1
- import type { IAgentRuntime, Memory } from "@elizaos/core";
2
- import type { SignalService } from "../service";
3
- export declare function getSignalService(runtime: IAgentRuntime): SignalService | null;
4
- export declare function hasSignalService(runtime: IAgentRuntime): boolean;
5
- export declare function isSignalConversation(message: Memory): boolean;
6
- export declare function getMessageText(message: Memory): string;
7
- export declare function hasStructuredSignalInvocation(message: Memory, actionName: string, structuredKeys?: string[]): boolean;
8
- //# sourceMappingURL=action-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../../src/actions/action-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAE7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAYT"}
package/dist/config.d.ts DELETED
@@ -1,90 +0,0 @@
1
- /**
2
- * Signal plugin configuration types.
3
- *
4
- * These types define the configuration schema for the Signal plugin.
5
- * Shared base types are imported from @elizaos/core.
6
- */
7
- import type { BlockStreamingCoalesceConfig, ChannelHeartbeatVisibilityConfig, DmConfig, DmPolicy, GroupPolicy, MarkdownConfig } from "@elizaos/core";
8
- export type SignalReactionNotificationMode = "off" | "own" | "all" | "allowlist";
9
- export type SignalReactionLevel = "off" | "ack" | "minimal" | "extensive";
10
- export type SignalActionConfig = {
11
- /** Enable/disable sending reactions via message tool (default: true). */
12
- reactions?: boolean;
13
- };
14
- export type SignalAccountConfig = {
15
- /** Optional display name for this account (used in CLI/UI lists). */
16
- name?: string;
17
- /** Optional provider capability tags used for agent/runtime guidance. */
18
- capabilities?: string[];
19
- /** Markdown formatting overrides (tables). */
20
- markdown?: MarkdownConfig;
21
- /** Allow channel-initiated config writes (default: true). */
22
- configWrites?: boolean;
23
- /** If false, do not start this Signal account. Default: true. */
24
- enabled?: boolean;
25
- /** Optional explicit E.164 account for signal-cli. */
26
- account?: string;
27
- /** Optional full base URL for signal-cli HTTP daemon. */
28
- httpUrl?: string;
29
- /** HTTP host for signal-cli daemon (default 127.0.0.1). */
30
- httpHost?: string;
31
- /** HTTP port for signal-cli daemon (default 8080). */
32
- httpPort?: number;
33
- /** signal-cli binary path. Leave blank to auto-resolve/install the default binary where supported. */
34
- cliPath?: string;
35
- /** Auto-start signal-cli daemon (default: true if httpUrl not set). */
36
- autoStart?: boolean;
37
- /** Max time to wait for signal-cli daemon startup (ms, cap 120000). */
38
- startupTimeoutMs?: number;
39
- receiveMode?: "on-start" | "manual";
40
- ignoreAttachments?: boolean;
41
- ignoreStories?: boolean;
42
- sendReadReceipts?: boolean;
43
- /** Direct message access policy (default: pairing). */
44
- dmPolicy?: DmPolicy;
45
- allowFrom?: Array<string | number>;
46
- /** Optional allowlist for Signal group senders (E.164). */
47
- groupAllowFrom?: Array<string | number>;
48
- /**
49
- * Controls how group messages are handled:
50
- * - "open": groups bypass allowFrom, no extra gating
51
- * - "disabled": block all group messages
52
- * - "allowlist": only allow group messages from senders in groupAllowFrom/allowFrom
53
- */
54
- groupPolicy?: GroupPolicy;
55
- /** Max group messages to keep as history context (0 disables). */
56
- historyLimit?: number;
57
- /** Max DM turns to keep as history context. */
58
- dmHistoryLimit?: number;
59
- /** Per-DM config overrides keyed by user ID. */
60
- dms?: Record<string, DmConfig>;
61
- /** Outbound text chunk size (chars). Default: 4000. */
62
- textChunkLimit?: number;
63
- /** Chunking mode: "length" (default) splits by size; "newline" splits on every newline. */
64
- chunkMode?: "length" | "newline";
65
- blockStreaming?: boolean;
66
- /** Merge streamed block replies before sending. */
67
- blockStreamingCoalesce?: BlockStreamingCoalesceConfig;
68
- mediaMaxMb?: number;
69
- /** Reaction notification mode (off|own|all|allowlist). Default: own. */
70
- reactionNotifications?: SignalReactionNotificationMode;
71
- /** Allowlist for reaction notifications when mode is allowlist. */
72
- reactionAllowlist?: Array<string | number>;
73
- /** Action toggles for message tool capabilities. */
74
- actions?: SignalActionConfig;
75
- /**
76
- * Controls agent reaction behavior:
77
- * - "off": No reactions
78
- * - "ack": Only automatic ack reactions (👀 when processing)
79
- * - "minimal": Agent can react sparingly (default)
80
- * - "extensive": Agent can react liberally
81
- */
82
- reactionLevel?: SignalReactionLevel;
83
- /** Heartbeat visibility settings for this channel. */
84
- heartbeat?: ChannelHeartbeatVisibilityConfig;
85
- };
86
- export type SignalConfig = {
87
- /** Optional per-account Signal configuration (multi-account). */
88
- accounts?: Record<string, SignalAccountConfig>;
89
- } & SignalAccountConfig;
90
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Signal ConnectorAccountManager provider.
3
- *
4
- * Adapts the existing multi-account scaffolding in `accounts.ts` to the
5
- * `ConnectorAccountProvider` contract from
6
- * `@elizaos/core/connectors/account-manager`.
7
- *
8
- * Source of truth for accounts is character settings (`character.settings.signal`)
9
- * plus env-var fallbacks (SIGNAL_ACCOUNT_NUMBER, SIGNAL_HTTP_URL, SIGNAL_CLI_PATH).
10
- * Single-account env-only deployments still surface as a `default` account.
11
- *
12
- * Signal pairing happens out of band via signal-cli device link / QR code (see
13
- * `pairing-service.ts` + `setup-routes.ts`); there is no OAuth flow.
14
- */
15
- import type { ConnectorAccountProvider, IAgentRuntime } from "@elizaos/core";
16
- export declare const SIGNAL_PROVIDER_ID = "signal";
17
- export declare function createSignalConnectorAccountProvider(runtime: IAgentRuntime): ConnectorAccountProvider;
18
- //# sourceMappingURL=connector-account-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connector-account-provider.d.ts","sourceRoot":"","sources":["../src/connector-account-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAIV,wBAAwB,EACxB,aAAa,EACd,MAAM,eAAe,CAAC;AASvB,eAAO,MAAM,kBAAkB,WAAW,CAAC;AA2C3C,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,aAAa,GACrB,wBAAwB,CAqC1B"}
package/dist/index.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import { type Plugin } from "@elizaos/core";
2
- declare const signalPlugin: Plugin;
3
- export default signalPlugin;
4
- export { DEFAULT_ACCOUNT_ID, isMultiAccountEnabled, listEnabledSignalAccounts, listSignalAccountIds, normalizeAccountId, type ResolvedSignalAccount, resolveDefaultSignalAccountId, resolveSignalAccount, type SignalAccountConfig, type SignalDmConfig, type SignalGroupConfig, type SignalMultiAccountConfig, type SignalReactionNotificationMode, } from "./accounts";
5
- export type { SignalActionConfig, SignalConfig, SignalReactionLevel, } from "./config";
6
- export { createSignalConnectorAccountProvider, SIGNAL_PROVIDER_ID, } from "./connector-account-provider";
7
- export { classifySignalPairingErrorStatus, extractSignalCliProvisioningUrl, parseSignalCliAccountsOutput, type SignalPairingEvent, type SignalPairingOptions, SignalPairingSession, type SignalPairingSnapshot, type SignalPairingStatus, sanitizeAccountId as sanitizeSignalAccountId, signalAuthExists, signalLogout, } from "./pairing-service";
8
- export { createSignalEventStream, normalizeBaseUrl, parseSignalEventData, type SignalCheckResult, type SignalRpcError, type SignalRpcOptions, type SignalRpcResponse, type SignalSseEvent, signalCheck, signalGetVersion, signalListAccounts, signalListContacts, signalListGroups, signalRpcRequest, signalSend, signalSendReaction, signalSendReadReceipt, signalSendTyping, streamSignalEvents, } from "./rpc";
9
- export { SignalService } from "./service";
10
- export { applySignalQrOverride, signalSetupRoutes } from "./setup-routes";
11
- export type { ISignalService, SignalAttachment, SignalContact, SignalEventPayloadMap, SignalGroup, SignalGroupMember, SignalMessage, SignalMessageReceivedPayload, SignalMessageSendOptions, SignalMessageSentPayload, SignalQuote, SignalReactionInfo, SignalReactionPayload, SignalRecentMessage, SignalSettings, } from "./types";
12
- export { getSignalContactDisplayName, isValidE164, isValidGroupId, isValidUuid, MAX_SIGNAL_ATTACHMENT_SIZE, MAX_SIGNAL_MESSAGE_LENGTH, normalizeE164, SIGNAL_SERVICE_NAME, SignalApiError, SignalClientNotAvailableError, SignalConfigurationError, SignalEventTypes, SignalPluginError, SignalServiceNotInitializedError, } from "./types";
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAapG,QAAA,MAAM,YAAY,EAAE,MAyFnB,CAAC;AAEF,eAAe,YAAY,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,6BAA6B,EAC7B,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,GACpC,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,oCAAoC,EACpC,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,4BAA4B,EAC5B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,iBAAiB,IAAI,uBAAuB,EAC5C,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,2BAA2B,EAC3B,WAAW,EACX,cAAc,EACd,WAAW,EACX,0BAA0B,EAC1B,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,6BAA6B,EAC7B,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,SAAS,CAAC"}