@elizaos/plugin-signal 2.0.0-alpha

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.
@@ -0,0 +1,172 @@
1
+ import type { Character, EventPayload, MessagePayload, WorldPayload } from "@elizaos/core";
2
+ /**
3
+ * Signal-specific event types
4
+ */
5
+ export declare enum SignalEventTypes {
6
+ MESSAGE_RECEIVED = "SIGNAL_MESSAGE_RECEIVED",
7
+ MESSAGE_SENT = "SIGNAL_MESSAGE_SENT",
8
+ REACTION_RECEIVED = "SIGNAL_REACTION_RECEIVED",
9
+ GROUP_JOINED = "SIGNAL_GROUP_JOINED",
10
+ GROUP_LEFT = "SIGNAL_GROUP_LEFT",
11
+ TYPING_STARTED = "SIGNAL_TYPING_STARTED",
12
+ TYPING_STOPPED = "SIGNAL_TYPING_STOPPED",
13
+ READ_RECEIPT = "SIGNAL_READ_RECEIPT"
14
+ }
15
+ export interface SignalMessageReceivedPayload extends MessagePayload {
16
+ sender: string;
17
+ groupId: string | undefined;
18
+ timestamp: number;
19
+ attachments: SignalAttachment[];
20
+ isGroupMessage: boolean;
21
+ }
22
+ export interface SignalMessageSentPayload extends MessagePayload {
23
+ recipient: string;
24
+ groupId: string | undefined;
25
+ timestamp: number;
26
+ }
27
+ export interface SignalReactionPayload extends EventPayload {
28
+ emoji: string;
29
+ sender: string;
30
+ targetTimestamp: number;
31
+ targetAuthor: string;
32
+ isRemove: boolean;
33
+ }
34
+ export interface SignalGroupPayload extends WorldPayload {
35
+ groupId: string;
36
+ groupName: string;
37
+ members: string[];
38
+ }
39
+ export interface SignalAttachment {
40
+ contentType: string;
41
+ filename: string | undefined;
42
+ id: string;
43
+ size: number;
44
+ width: number | undefined;
45
+ height: number | undefined;
46
+ caption: string | undefined;
47
+ blurhash: string | undefined;
48
+ }
49
+ export interface SignalEventPayloadMap {
50
+ [SignalEventTypes.MESSAGE_RECEIVED]: SignalMessageReceivedPayload;
51
+ [SignalEventTypes.MESSAGE_SENT]: SignalMessageSentPayload;
52
+ [SignalEventTypes.REACTION_RECEIVED]: SignalReactionPayload;
53
+ [SignalEventTypes.GROUP_JOINED]: SignalGroupPayload;
54
+ [SignalEventTypes.GROUP_LEFT]: SignalGroupPayload;
55
+ }
56
+ export interface SignalContact {
57
+ number: string;
58
+ uuid: string | undefined;
59
+ name: string | undefined;
60
+ profileName: string | undefined;
61
+ color: string | undefined;
62
+ blocked: boolean;
63
+ }
64
+ export interface SignalGroup {
65
+ id: string;
66
+ name: string;
67
+ description: string | undefined;
68
+ isMember: boolean;
69
+ isBlocked: boolean;
70
+ members: SignalGroupMember[];
71
+ admins: string[];
72
+ inviteLink: string | undefined;
73
+ }
74
+ export interface SignalGroupMember {
75
+ uuid: string;
76
+ number: string | undefined;
77
+ role: "ADMINISTRATOR" | "DEFAULT";
78
+ }
79
+ export interface SignalMessage {
80
+ timestamp: number;
81
+ sender: string;
82
+ senderUuid: string | undefined;
83
+ groupId: string | undefined;
84
+ message: string | undefined;
85
+ attachments: SignalAttachment[];
86
+ quote: SignalQuote | undefined;
87
+ reaction: SignalReactionInfo | undefined;
88
+ expiresInSeconds: number | undefined;
89
+ viewOnce: boolean;
90
+ }
91
+ export interface SignalQuote {
92
+ id: number;
93
+ author: string;
94
+ authorUuid: string | undefined;
95
+ text: string;
96
+ attachments: SignalAttachment[];
97
+ }
98
+ export interface SignalReactionInfo {
99
+ emoji: string;
100
+ targetAuthor: string;
101
+ targetAuthorUuid: string | undefined;
102
+ targetSentTimestamp: number;
103
+ isRemove: boolean;
104
+ }
105
+ export interface ISignalService {
106
+ accountNumber: string | null;
107
+ character: Character;
108
+ isConnected: boolean;
109
+ }
110
+ export declare const SIGNAL_SERVICE_NAME = "signal";
111
+ export declare const ServiceType: {
112
+ readonly SIGNAL: "signal";
113
+ };
114
+ export interface SignalSettings {
115
+ shouldIgnoreGroupMessages: boolean;
116
+ allowedGroups: string[] | undefined;
117
+ blockedNumbers: string[] | undefined;
118
+ }
119
+ export interface SignalMessageSendOptions {
120
+ attachments: string[] | undefined;
121
+ quote: {
122
+ timestamp: number;
123
+ author: string;
124
+ } | undefined;
125
+ expiresInSeconds: number | undefined;
126
+ }
127
+ export declare class SignalPluginError extends Error {
128
+ readonly code: string;
129
+ constructor(message: string, code: string);
130
+ }
131
+ export declare class SignalServiceNotInitializedError extends SignalPluginError {
132
+ constructor();
133
+ }
134
+ export declare class SignalClientNotAvailableError extends SignalPluginError {
135
+ constructor();
136
+ }
137
+ export declare class SignalConfigurationError extends SignalPluginError {
138
+ constructor(missingConfig: string);
139
+ }
140
+ export declare class SignalApiError extends SignalPluginError {
141
+ readonly apiErrorCode: string | undefined;
142
+ constructor(message: string, apiErrorCode: string | undefined);
143
+ }
144
+ /**
145
+ * Normalize a phone number to E.164 format
146
+ */
147
+ export declare function normalizeE164(number: string): string | null;
148
+ /**
149
+ * Validates an E.164 phone number format
150
+ */
151
+ export declare function isValidE164(number: string): boolean;
152
+ /**
153
+ * Validates a Signal group ID format (base64-encoded)
154
+ */
155
+ export declare function isValidGroupId(id: string): boolean;
156
+ /**
157
+ * Validates a Signal UUID format
158
+ */
159
+ export declare function isValidUuid(uuid: string): boolean;
160
+ /**
161
+ * Gets the display name for a Signal contact
162
+ */
163
+ export declare function getSignalContactDisplayName(contact: SignalContact): string;
164
+ /**
165
+ * Maximum message length for Signal messages
166
+ */
167
+ export declare const MAX_SIGNAL_MESSAGE_LENGTH = 4000;
168
+ /**
169
+ * Maximum attachment size (100MB)
170
+ */
171
+ export declare const MAX_SIGNAL_ATTACHMENT_SIZE: number;
172
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "@elizaos/plugin-signal",
3
+ "version": "2.0.0-alpha",
4
+ "description": "Signal messaging integration plugin for ElizaOS agents",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/elizaos-plugins/plugin-signal.git"
13
+ },
14
+ "exports": {
15
+ "./package.json": "./package.json",
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js",
19
+ "default": "./dist/index.js"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "keywords": [
26
+ "elizaos",
27
+ "plugin",
28
+ "signal",
29
+ "messaging",
30
+ "secure",
31
+ "encrypted"
32
+ ],
33
+ "author": "elizaOS",
34
+ "license": "MIT",
35
+ "scripts": {
36
+ "build": "bun run build.ts",
37
+ "build:ts": "bun run build.ts",
38
+ "dev": "bun --hot build.ts",
39
+ "clean": "rm -rf dist .turbo node_modules",
40
+ "test": "vitest run",
41
+ "typecheck": "tsc --noEmit",
42
+ "lint": "bunx @biomejs/biome check --write --unsafe .",
43
+ "lint:check": "bunx @biomejs/biome check .",
44
+ "format": "bunx @biomejs/biome format --write .",
45
+ "format:check": "bunx @biomejs/biome format ."
46
+ },
47
+ "dependencies": {
48
+ "@elizaos/core": "workspace:*",
49
+ "zod": "^4.3.6"
50
+ },
51
+ "devDependencies": {
52
+ "@types/node": "^25.0.3",
53
+ "typescript": "^5.9.3",
54
+ "@biomejs/biome": "^2.3.11"
55
+ },
56
+ "peerDependencies": {
57
+ "@elizaos/core": "workspace:*"
58
+ },
59
+ "publishConfig": {
60
+ "access": "public"
61
+ },
62
+ "agentConfig": {
63
+ "pluginType": "elizaos:plugin:1.0.0",
64
+ "pluginParameters": {
65
+ "SIGNAL_ACCOUNT_NUMBER": {
66
+ "type": "string",
67
+ "description": "Signal account phone number in E.164 format (e.g., +1234567890)",
68
+ "required": true,
69
+ "sensitive": false
70
+ },
71
+ "SIGNAL_HTTP_URL": {
72
+ "type": "string",
73
+ "description": "Signal CLI REST API URL (e.g., http://localhost:8080)",
74
+ "required": false,
75
+ "sensitive": false
76
+ },
77
+ "SIGNAL_CLI_PATH": {
78
+ "type": "string",
79
+ "description": "Path to signal-cli executable (alternative to HTTP API)",
80
+ "required": false,
81
+ "sensitive": false
82
+ },
83
+ "SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES": {
84
+ "type": "boolean",
85
+ "description": "If true, the bot will only respond to direct messages",
86
+ "required": false,
87
+ "sensitive": false
88
+ }
89
+ }
90
+ },
91
+ "milaidy": {
92
+ "platforms": [
93
+ "node"
94
+ ],
95
+ "runtime": "node",
96
+ "platformDetails": {
97
+ "node": "Default export (Node.js)"
98
+ }
99
+ }
100
+ }