@clawsignal/clawsignal 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,50 +1,25 @@
1
1
  {
2
2
  "id": "clawsignal",
3
3
  "name": "ClawSignal",
4
- "version": "0.2.0",
5
- "description": "Receive and respond to ClawSignal agent messages",
4
+ "version": "0.3.0",
5
+ "description": "Real-time messaging between AI agents via ClawSignal",
6
6
  "author": "ClawSignal",
7
7
  "configSchema": {
8
8
  "type": "object",
9
9
  "additionalProperties": false,
10
- "required": ["apiKey"],
11
- "properties": {
12
- "apiKey": {
13
- "type": "string",
14
- "description": "Your ClawSignal API key (starts with clawsig_)"
15
- },
16
- "serverUrl": {
17
- "type": "string",
18
- "description": "ClawSignal server URL (default: wss://clawsignal.com)",
19
- "default": "wss://clawsignal.com"
20
- },
21
- "autoReply": {
22
- "type": "boolean",
23
- "description": "Automatically send agent responses back via ClawSignal",
24
- "default": true
25
- },
26
- "sessionPrefix": {
27
- "type": "string",
28
- "description": "Prefix for session keys",
29
- "default": "clawsignal"
30
- }
31
- }
10
+ "properties": {}
32
11
  },
33
- "uiHints": {
34
- "apiKey": {
35
- "label": "API Key",
36
- "placeholder": "clawsig_xxxxxxxx",
37
- "sensitive": true
38
- },
39
- "serverUrl": {
40
- "label": "Server URL",
41
- "placeholder": "wss://clawsignal.com"
42
- },
43
- "autoReply": {
44
- "label": "Auto-reply via ClawSignal"
45
- },
46
- "sessionPrefix": {
47
- "label": "Session Prefix"
48
- }
12
+ "channel": {
13
+ "id": "clawsignal",
14
+ "label": "ClawSignal",
15
+ "selectionLabel": "ClawSignal (Agent Messaging)",
16
+ "docsPath": "/channels/clawsignal",
17
+ "docsLabel": "clawsignal",
18
+ "blurb": "Real-time messaging between AI agents",
19
+ "order": 110
20
+ },
21
+ "install": {
22
+ "npmSpec": "@clawsignal/clawsignal",
23
+ "defaultChoice": "npm"
49
24
  }
50
25
  }
package/dist/index.d.ts CHANGED
@@ -1,35 +1,20 @@
1
1
  /**
2
- * ClawSignal Plugin for Clawdbot
2
+ * ClawSignal Plugin for OpenClaw
3
3
  *
4
- * Connects to ClawSignal's event stream and triggers the Clawdbot agent
5
- * when new messages arrive. Sends responses back via ClawSignal.
4
+ * Connects to ClawSignal's event stream and handles messages through
5
+ * OpenClaw's standard channel infrastructure.
6
6
  */
7
- interface PluginLogger {
8
- info: (msg: string, meta?: object) => void;
9
- warn: (msg: string, meta?: object) => void;
10
- error: (msg: string, meta?: object) => void;
11
- debug: (msg: string, meta?: object) => void;
12
- }
13
- interface PluginApi {
14
- config: unknown;
15
- logger: PluginLogger;
16
- runtime: unknown;
17
- registerService: (service: {
18
- id: string;
19
- start: () => void | Promise<void>;
20
- stop: () => void | Promise<void>;
21
- }) => void;
22
- registerGatewayMethod: (method: string, handler: (ctx: {
23
- params: unknown;
24
- respond: (ok: boolean, payload: unknown) => void;
25
- }) => void) => void;
26
- registerTool: (tool: {
27
- name: string;
28
- description: string;
29
- parameters: object;
30
- handler: (params: unknown) => Promise<unknown>;
31
- }) => void;
32
- }
33
- export default function register(api: PluginApi): void;
34
- export {};
7
+ declare const plugin: {
8
+ id: string;
9
+ name: string;
10
+ version: string;
11
+ description: string;
12
+ configSchema: {
13
+ type: string;
14
+ additionalProperties: boolean;
15
+ properties: {};
16
+ };
17
+ register(api: any): void;
18
+ };
19
+ export default plugin;
35
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,UAAU,YAAY;IACpB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAClC,KAAK,IAAI,CAAC;IACX,qBAAqB,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,KAAK,IAAI,KAC1F,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChD,KAAK,IAAI,CAAC;CACZ;AAMD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,SAAS,QAwU9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2TH,QAAA,MAAM,MAAM;;;;;;;;;;kBAWI,GAAG;CAyDlB,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,313 +1,318 @@
1
1
  /**
2
- * ClawSignal Plugin for Clawdbot
2
+ * ClawSignal Plugin for OpenClaw
3
3
  *
4
- * Connects to ClawSignal's event stream and triggers the Clawdbot agent
5
- * when new messages arrive. Sends responses back via ClawSignal.
4
+ * Connects to ClawSignal's event stream and handles messages through
5
+ * OpenClaw's standard channel infrastructure.
6
6
  */
7
- import WebSocket from 'ws';
8
- const DEFAULT_SERVER_URL = 'wss://clawsignal.com';
7
+ import WebSocket from "ws";
8
+ const DEFAULT_SERVER_URL = "wss://clawsignal.com";
9
9
  const RECONNECT_DELAY_MS = 5000;
10
10
  const PING_INTERVAL_MS = 30000;
11
- export default function register(api) {
12
- const getConfig = () => {
13
- const config = api.config;
14
- const entry = config.plugins?.entries?.clawsignal;
15
- if (!entry?.enabled || !entry?.config?.apiKey) {
16
- return null;
17
- }
18
- return entry.config;
19
- };
20
- // Get gateway port from config
21
- const getGatewayPort = () => {
22
- const config = api.config;
23
- return config.gateway?.port || 18789;
11
+ // Runtime reference
12
+ let pluginRuntime = null;
13
+ function setRuntime(runtime) {
14
+ pluginRuntime = runtime;
15
+ }
16
+ function getRuntime() {
17
+ if (!pluginRuntime)
18
+ throw new Error("ClawSignal runtime not initialized");
19
+ return pluginRuntime;
20
+ }
21
+ // Config helpers
22
+ function resolveClawSignalAccount(cfg, accountId) {
23
+ const config = cfg.channels?.clawsignal;
24
+ return {
25
+ accountId: accountId ?? "default",
26
+ enabled: config?.enabled !== false,
27
+ configured: !!config?.apiKey,
28
+ apiKey: config?.apiKey ?? null,
29
+ serverUrl: config?.serverUrl ?? DEFAULT_SERVER_URL,
24
30
  };
25
- let ws = null;
26
- let reconnectTimeout = null;
27
- let pingInterval = null;
28
- let isShuttingDown = false;
29
- const sendToClawSignal = async (to, message) => {
30
- const config = getConfig();
31
- if (!config)
32
- return false;
33
- const httpUrl = (config.serverUrl || DEFAULT_SERVER_URL)
34
- .replace('wss://', 'https://')
35
- .replace('ws://', 'http://');
36
- try {
37
- const response = await fetch(`${httpUrl}/api/v1/send`, {
38
- method: 'POST',
39
- headers: {
40
- 'Authorization': `Bearer ${config.apiKey}`,
41
- 'Content-Type': 'application/json',
31
+ }
32
+ // Active connections
33
+ const activeConnections = new Map();
34
+ // Send message to ClawSignal
35
+ async function sendToClawSignal(to, message, account) {
36
+ if (!account.apiKey)
37
+ return false;
38
+ const httpUrl = account.serverUrl
39
+ .replace("wss://", "https://")
40
+ .replace("ws://", "http://");
41
+ try {
42
+ const response = await fetch(`${httpUrl}/api/v1/send`, {
43
+ method: "POST",
44
+ headers: {
45
+ Authorization: `Bearer ${account.apiKey}`,
46
+ "Content-Type": "application/json",
47
+ },
48
+ body: JSON.stringify({ to, message }),
49
+ });
50
+ return response.ok;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ }
56
+ // Channel plugin definition
57
+ const clawsignalChannel = {
58
+ id: "clawsignal",
59
+ meta: {
60
+ id: "clawsignal",
61
+ label: "ClawSignal",
62
+ selectionLabel: "ClawSignal (Agent Messaging)",
63
+ docsPath: "/channels/clawsignal",
64
+ docsLabel: "clawsignal",
65
+ blurb: "Real-time messaging between AI agents via ClawSignal",
66
+ order: 110,
67
+ },
68
+ capabilities: {
69
+ chatTypes: ["direct"],
70
+ media: false,
71
+ },
72
+ reload: { configPrefixes: ["channels.clawsignal"] },
73
+ configSchema: {
74
+ type: "object",
75
+ properties: {
76
+ clawsignal: {
77
+ type: "object",
78
+ properties: {
79
+ apiKey: { type: "string" },
80
+ serverUrl: { type: "string" },
81
+ enabled: { type: "boolean" },
42
82
  },
43
- body: JSON.stringify({ to, message }),
44
- });
45
- if (!response.ok) {
46
- api.logger.error('Failed to send ClawSignal message', {
47
- status: response.status,
48
- to
49
- });
50
- return false;
83
+ },
84
+ },
85
+ },
86
+ config: {
87
+ listAccountIds: () => ["default"],
88
+ resolveAccount: (cfg, accountId) => resolveClawSignalAccount(cfg, accountId),
89
+ defaultAccountId: () => "default",
90
+ isConfigured: (account) => account.configured,
91
+ describeAccount: (account) => ({
92
+ accountId: account.accountId,
93
+ enabled: account.enabled,
94
+ configured: account.configured,
95
+ }),
96
+ },
97
+ outbound: {
98
+ deliveryMode: "direct",
99
+ textChunkLimit: 4000,
100
+ sendText: async ({ to, text, accountId }) => {
101
+ const runtime = getRuntime();
102
+ const cfg = runtime.config.loadConfig();
103
+ const account = resolveClawSignalAccount(cfg, accountId);
104
+ if (!account.configured) {
105
+ throw new Error("ClawSignal not configured (missing API key)");
51
106
  }
52
- api.logger.debug('Sent ClawSignal message', { to });
53
- return true;
54
- }
55
- catch (err) {
56
- api.logger.error('Error sending ClawSignal message', {
57
- error: err instanceof Error ? err.message : String(err),
58
- to
59
- });
60
- return false;
61
- }
62
- };
63
- // Trigger agent via local gateway RPC WebSocket
64
- const triggerAgent = async (sessionKey, message) => {
65
- return new Promise((resolve) => {
66
- const port = getGatewayPort();
67
- const gatewayWs = new WebSocket(`ws://127.0.0.1:${port}`);
68
- let response = '';
69
- let resolved = false;
70
- const timeout = setTimeout(() => {
71
- if (!resolved) {
72
- resolved = true;
73
- gatewayWs.close();
74
- resolve(response || null);
107
+ const success = await sendToClawSignal(to, text, account);
108
+ if (!success) {
109
+ throw new Error("Failed to send ClawSignal message");
110
+ }
111
+ return { channel: "clawsignal", to };
112
+ },
113
+ },
114
+ status: {
115
+ defaultRuntime: {
116
+ accountId: "default",
117
+ running: false,
118
+ lastStartAt: null,
119
+ lastStopAt: null,
120
+ lastError: null,
121
+ },
122
+ buildChannelSummary: ({ snapshot }) => ({
123
+ configured: snapshot.configured ?? false,
124
+ running: snapshot.running ?? false,
125
+ lastStartAt: snapshot.lastStartAt ?? null,
126
+ lastStopAt: snapshot.lastStopAt ?? null,
127
+ lastError: snapshot.lastError ?? null,
128
+ }),
129
+ buildAccountSnapshot: ({ account, runtime }) => ({
130
+ accountId: account.accountId,
131
+ enabled: account.enabled,
132
+ configured: account.configured,
133
+ running: runtime?.running ?? false,
134
+ lastStartAt: runtime?.lastStartAt ?? null,
135
+ lastStopAt: runtime?.lastStopAt ?? null,
136
+ lastError: runtime?.lastError ?? null,
137
+ }),
138
+ },
139
+ gateway: {
140
+ startAccount: async (ctx) => {
141
+ const account = ctx.account;
142
+ const runtime = getRuntime();
143
+ ctx.log?.info(`[${account.accountId}] Starting ClawSignal channel`);
144
+ if (!account.configured || !account.apiKey) {
145
+ throw new Error("ClawSignal API key not configured");
146
+ }
147
+ let ws = null;
148
+ let pingInterval = null;
149
+ let reconnectTimeout = null;
150
+ let isShuttingDown = false;
151
+ const cleanup = () => {
152
+ if (pingInterval) {
153
+ clearInterval(pingInterval);
154
+ pingInterval = null;
75
155
  }
76
- }, 60000); // 60 second timeout
77
- gatewayWs.on('open', () => {
78
- // Send agent trigger request
79
- gatewayWs.send(JSON.stringify({
80
- method: 'agent',
81
- params: {
82
- message,
83
- sessionKey,
84
- stream: false,
156
+ if (ws) {
157
+ ws.removeAllListeners();
158
+ if (ws.readyState === WebSocket.OPEN) {
159
+ ws.close();
85
160
  }
86
- }));
87
- });
88
- gatewayWs.on('message', (data) => {
161
+ ws = null;
162
+ }
163
+ };
164
+ const connect = () => {
165
+ if (isShuttingDown)
166
+ return;
167
+ const wsUrl = `${account.serverUrl}/api/v1/events`;
168
+ ctx.log?.info(`Connecting to ClawSignal: ${wsUrl}`);
89
169
  try {
90
- const msg = JSON.parse(data.toString());
91
- if (msg.type === 'text' || msg.type === 'partial') {
92
- response += msg.text || '';
93
- }
94
- else if (msg.type === 'final' || msg.type === 'end' || msg.ok !== undefined) {
95
- // Final response
96
- if (msg.response) {
97
- response = msg.response;
170
+ ws = new WebSocket(wsUrl, {
171
+ headers: { Authorization: `Bearer ${account.apiKey}` },
172
+ });
173
+ ws.on("open", () => {
174
+ ctx.log?.info("ClawSignal WebSocket connected");
175
+ ctx.setStatus({ running: true, lastStartAt: Date.now() });
176
+ if (pingInterval)
177
+ clearInterval(pingInterval);
178
+ pingInterval = setInterval(() => {
179
+ if (ws?.readyState === WebSocket.OPEN) {
180
+ ws.send(JSON.stringify({ type: "ping" }));
181
+ }
182
+ }, PING_INTERVAL_MS);
183
+ });
184
+ ws.on("message", async (rawData) => {
185
+ try {
186
+ const data = JSON.parse(rawData.toString());
187
+ if (data.type === "ping") {
188
+ ws?.send(JSON.stringify({ type: "pong" }));
189
+ return;
190
+ }
191
+ if (data.type === "connected") {
192
+ ctx.log?.info("ClawSignal connection established");
193
+ return;
194
+ }
195
+ if (data.type === "message" && data.from && data.message) {
196
+ ctx.log?.info(`Received message from ${data.from}`);
197
+ // Use OpenClaw's standard message handling
198
+ await runtime.channel.reply.handleInboundMessage({
199
+ channel: "clawsignal",
200
+ accountId: account.accountId,
201
+ senderId: data.from,
202
+ chatType: "direct",
203
+ chatId: data.from,
204
+ text: data.message,
205
+ reply: async (responseText) => {
206
+ await sendToClawSignal(data.from, responseText, account);
207
+ },
208
+ });
209
+ }
98
210
  }
99
- if (!resolved) {
100
- resolved = true;
101
- clearTimeout(timeout);
102
- gatewayWs.close();
103
- resolve(response || null);
211
+ catch (err) {
212
+ ctx.log?.error(`Failed to process ClawSignal message: ${err}`);
104
213
  }
105
- }
106
- else if (msg.type === 'error') {
107
- api.logger.error('Agent error', { error: msg.error });
108
- if (!resolved) {
109
- resolved = true;
110
- clearTimeout(timeout);
111
- gatewayWs.close();
112
- resolve(null);
214
+ });
215
+ ws.on("close", (code, reason) => {
216
+ ctx.log?.warn(`ClawSignal WebSocket closed: ${code} ${reason}`);
217
+ cleanup();
218
+ if (!isShuttingDown) {
219
+ ctx.log?.info(`Reconnecting in ${RECONNECT_DELAY_MS / 1000}s`);
220
+ reconnectTimeout = setTimeout(connect, RECONNECT_DELAY_MS);
113
221
  }
114
- }
222
+ });
223
+ ws.on("error", (err) => {
224
+ ctx.log?.error(`ClawSignal WebSocket error: ${err.message}`);
225
+ ctx.setStatus({ lastError: err.message });
226
+ });
115
227
  }
116
228
  catch (err) {
117
- // Ignore parse errors
118
- }
119
- });
120
- gatewayWs.on('error', (err) => {
121
- api.logger.error('Gateway WebSocket error', { error: err.message });
122
- if (!resolved) {
123
- resolved = true;
124
- clearTimeout(timeout);
125
- resolve(null);
126
- }
127
- });
128
- gatewayWs.on('close', () => {
129
- if (!resolved) {
130
- resolved = true;
131
- clearTimeout(timeout);
132
- resolve(response || null);
133
- }
134
- });
135
- });
136
- };
137
- const handleMessage = async (data) => {
138
- const pluginConfig = getConfig();
139
- if (!pluginConfig)
140
- return;
141
- if (data.type === 'ping') {
142
- ws?.send(JSON.stringify({ type: 'pong' }));
143
- return;
144
- }
145
- if (data.type === 'connected') {
146
- api.logger.info('ClawSignal connection established');
147
- return;
148
- }
149
- if (data.type === 'message' && data.from && data.message) {
150
- const sessionPrefix = pluginConfig.sessionPrefix || 'clawsignal';
151
- const sessionKey = `${sessionPrefix}:${data.from}`;
152
- api.logger.info('Received ClawSignal message', {
153
- from: data.from,
154
- sessionKey
155
- });
156
- try {
157
- const formattedMessage = `[ClawSignal from ${data.from}]: ${data.message}`;
158
- // Trigger agent and wait for response
159
- const response = await triggerAgent(sessionKey, formattedMessage);
160
- // Send response back via ClawSignal if enabled
161
- if (pluginConfig.autoReply !== false && response) {
162
- api.logger.info('Sending response back via ClawSignal', { to: data.from });
163
- await sendToClawSignal(data.from, response);
164
- }
165
- }
166
- catch (err) {
167
- api.logger.error('Error processing ClawSignal message', {
168
- error: err instanceof Error ? err.message : String(err),
169
- from: data.from,
170
- });
171
- }
172
- }
173
- };
174
- const connect = () => {
175
- const config = getConfig();
176
- if (!config || isShuttingDown) {
177
- return;
178
- }
179
- const serverUrl = config.serverUrl || DEFAULT_SERVER_URL;
180
- const wsUrl = `${serverUrl}/api/v1/events`;
181
- api.logger.info('Connecting to ClawSignal', { url: wsUrl });
182
- try {
183
- ws = new WebSocket(wsUrl, {
184
- headers: {
185
- 'Authorization': `Bearer ${config.apiKey}`,
186
- },
187
- });
188
- ws.on('open', () => {
189
- api.logger.info('ClawSignal WebSocket connected');
190
- if (pingInterval)
191
- clearInterval(pingInterval);
192
- pingInterval = setInterval(() => {
193
- if (ws?.readyState === WebSocket.OPEN) {
194
- ws.send(JSON.stringify({ type: 'ping' }));
229
+ ctx.log?.error(`Failed to create ClawSignal WebSocket: ${err}`);
230
+ if (!isShuttingDown) {
231
+ reconnectTimeout = setTimeout(connect, RECONNECT_DELAY_MS);
195
232
  }
196
- }, PING_INTERVAL_MS);
197
- });
198
- ws.on('message', (rawData) => {
199
- try {
200
- const data = JSON.parse(rawData.toString());
201
- handleMessage(data);
202
233
  }
203
- catch (err) {
204
- api.logger.error('Failed to parse ClawSignal message', {
205
- error: err instanceof Error ? err.message : String(err),
206
- });
207
- }
208
- });
209
- ws.on('close', (code, reason) => {
210
- api.logger.warn('ClawSignal WebSocket closed', {
211
- code,
212
- reason: reason.toString()
213
- });
214
- cleanup();
215
- scheduleReconnect();
216
- });
217
- ws.on('error', (err) => {
218
- api.logger.error('ClawSignal WebSocket error', {
219
- error: err.message,
220
- });
221
- });
222
- }
223
- catch (err) {
224
- api.logger.error('Failed to create ClawSignal WebSocket', {
225
- error: err instanceof Error ? err.message : String(err),
226
- });
227
- scheduleReconnect();
228
- }
229
- };
230
- const cleanup = () => {
231
- if (pingInterval) {
232
- clearInterval(pingInterval);
233
- pingInterval = null;
234
- }
235
- if (ws) {
236
- ws.removeAllListeners();
237
- if (ws.readyState === WebSocket.OPEN) {
238
- ws.close();
239
- }
240
- ws = null;
241
- }
242
- };
243
- const scheduleReconnect = () => {
244
- if (isShuttingDown)
245
- return;
246
- if (reconnectTimeout) {
247
- clearTimeout(reconnectTimeout);
248
- }
249
- api.logger.info(`Reconnecting to ClawSignal in ${RECONNECT_DELAY_MS / 1000}s`);
250
- reconnectTimeout = setTimeout(() => {
251
- reconnectTimeout = null;
234
+ };
235
+ // Start connection
252
236
  connect();
253
- }, RECONNECT_DELAY_MS);
254
- };
255
- // Register background service
256
- api.registerService({
257
- id: 'clawsignal-listener',
258
- start: () => {
259
- isShuttingDown = false;
260
- const config = getConfig();
261
- if (config) {
262
- connect();
263
- }
264
- else {
265
- api.logger.warn('ClawSignal plugin enabled but no API key configured');
266
- }
267
- },
268
- stop: () => {
269
- isShuttingDown = true;
270
- if (reconnectTimeout) {
271
- clearTimeout(reconnectTimeout);
272
- reconnectTimeout = null;
273
- }
274
- cleanup();
275
- api.logger.info('ClawSignal listener stopped');
276
- },
277
- });
278
- // Register RPC method for status
279
- api.registerGatewayMethod('clawsignal.status', ({ respond }) => {
280
- const config = getConfig();
281
- respond(true, {
282
- configured: !!config,
283
- connected: ws?.readyState === WebSocket.OPEN,
284
- serverUrl: config?.serverUrl || DEFAULT_SERVER_URL,
285
- });
286
- });
287
- // Register tool for sending messages
288
- api.registerTool({
289
- name: 'clawsignal_send',
290
- description: 'Send a message to another agent via ClawSignal',
291
- parameters: {
292
- type: 'object',
293
- required: ['to', 'message'],
294
- properties: {
295
- to: {
296
- type: 'string',
297
- description: 'The recipient agent name on ClawSignal',
237
+ // Store connection state
238
+ activeConnections.set(account.accountId, { ws, pingInterval, reconnectTimeout });
239
+ // Return cleanup function
240
+ return {
241
+ stop: () => {
242
+ isShuttingDown = true;
243
+ if (reconnectTimeout) {
244
+ clearTimeout(reconnectTimeout);
245
+ reconnectTimeout = null;
246
+ }
247
+ cleanup();
248
+ activeConnections.delete(account.accountId);
249
+ ctx.log?.info(`[${account.accountId}] ClawSignal channel stopped`);
298
250
  },
299
- message: {
300
- type: 'string',
301
- description: 'The message to send',
251
+ };
252
+ },
253
+ },
254
+ };
255
+ // Plugin definition
256
+ const plugin = {
257
+ id: "clawsignal",
258
+ name: "ClawSignal",
259
+ version: "0.3.0",
260
+ description: "Real-time messaging between AI agents via ClawSignal",
261
+ configSchema: {
262
+ type: "object",
263
+ additionalProperties: false,
264
+ properties: {},
265
+ },
266
+ register(api) {
267
+ setRuntime(api.runtime);
268
+ // Register as a channel
269
+ api.registerChannel({ plugin: clawsignalChannel });
270
+ // Register send tool
271
+ api.registerTool({
272
+ name: "clawsignal_send",
273
+ description: "Send a message to another agent via ClawSignal",
274
+ parameters: {
275
+ type: "object",
276
+ required: ["to", "message"],
277
+ properties: {
278
+ to: { type: "string", description: "The recipient agent name" },
279
+ message: { type: "string", description: "The message to send" },
302
280
  },
303
281
  },
304
- },
305
- handler: async (params) => {
306
- const { to, message } = params;
307
- const success = await sendToClawSignal(to, message);
308
- return { success, to, message: success ? 'Message sent' : 'Failed to send' };
309
- },
310
- });
311
- api.logger.info('ClawSignal plugin registered');
312
- }
282
+ async execute(_id, params) {
283
+ const runtime = getRuntime();
284
+ const cfg = runtime.config.loadConfig();
285
+ const account = resolveClawSignalAccount(cfg);
286
+ if (!account.configured) {
287
+ return {
288
+ content: [{ type: "text", text: "ClawSignal not configured" }],
289
+ };
290
+ }
291
+ const success = await sendToClawSignal(params.to, params.message, account);
292
+ return {
293
+ content: [{
294
+ type: "text",
295
+ text: success
296
+ ? `Message sent to ${params.to}`
297
+ : `Failed to send message to ${params.to}`,
298
+ }],
299
+ };
300
+ },
301
+ });
302
+ // Register status RPC
303
+ api.registerGatewayMethod("clawsignal.status", ({ respond }) => {
304
+ const runtime = getRuntime();
305
+ const cfg = runtime.config.loadConfig();
306
+ const account = resolveClawSignalAccount(cfg);
307
+ const conn = activeConnections.get(account.accountId);
308
+ respond(true, {
309
+ configured: account.configured,
310
+ connected: conn?.ws?.readyState === WebSocket.OPEN,
311
+ serverUrl: account.serverUrl,
312
+ });
313
+ });
314
+ api.logger.info("ClawSignal plugin registered");
315
+ },
316
+ };
317
+ export default plugin;
313
318
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,25 @@
1
1
  {
2
2
  "id": "clawsignal",
3
3
  "name": "ClawSignal",
4
- "version": "0.1.0",
5
- "description": "Receive and respond to ClawSignal agent messages",
4
+ "version": "0.3.0",
5
+ "description": "Real-time messaging between AI agents via ClawSignal",
6
6
  "author": "ClawSignal",
7
7
  "configSchema": {
8
8
  "type": "object",
9
9
  "additionalProperties": false,
10
- "required": ["apiKey"],
11
- "properties": {
12
- "apiKey": {
13
- "type": "string",
14
- "description": "Your ClawSignal API key (starts with clawsig_)"
15
- },
16
- "serverUrl": {
17
- "type": "string",
18
- "description": "ClawSignal server URL (default: wss://clawsignal.com)",
19
- "default": "wss://clawsignal.com"
20
- },
21
- "autoReply": {
22
- "type": "boolean",
23
- "description": "Automatically send agent responses back via ClawSignal",
24
- "default": true
25
- },
26
- "sessionPrefix": {
27
- "type": "string",
28
- "description": "Prefix for session keys",
29
- "default": "clawsignal"
30
- }
31
- }
10
+ "properties": {}
32
11
  },
33
- "uiHints": {
34
- "apiKey": {
35
- "label": "API Key",
36
- "placeholder": "clawsig_xxxxxxxx",
37
- "sensitive": true
38
- },
39
- "serverUrl": {
40
- "label": "Server URL",
41
- "placeholder": "wss://clawsignal.com"
42
- },
43
- "autoReply": {
44
- "label": "Auto-reply via ClawSignal"
45
- },
46
- "sessionPrefix": {
47
- "label": "Session Prefix"
48
- }
12
+ "channel": {
13
+ "id": "clawsignal",
14
+ "label": "ClawSignal",
15
+ "selectionLabel": "ClawSignal (Agent Messaging)",
16
+ "docsPath": "/channels/clawsignal",
17
+ "docsLabel": "clawsignal",
18
+ "blurb": "Real-time messaging between AI agents",
19
+ "order": 110
20
+ },
21
+ "install": {
22
+ "npmSpec": "@clawsignal/clawsignal",
23
+ "defaultChoice": "npm"
49
24
  }
50
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawsignal/clawsignal",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "ClawSignal integration for OpenClaw - receive agent messages via ClawSignal",
5
5
  "author": "ClawSignal",
6
6
  "license": "MIT",