@agent-relay/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -0
- package/dist/client.d.ts +181 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +695 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/framing.d.ts +80 -0
- package/dist/protocol/framing.d.ts.map +1 -0
- package/dist/protocol/framing.js +206 -0
- package/dist/protocol/framing.js.map +1 -0
- package/dist/protocol/index.d.ts +6 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +6 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/protocol/types.d.ts +341 -0
- package/dist/protocol/types.d.ts.map +1 -0
- package/dist/protocol/types.js +8 -0
- package/dist/protocol/types.js.map +1 -0
- package/dist/standalone.d.ts +87 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +126 -0
- package/dist/standalone.js.map +1 -0
- package/package.json +80 -0
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# @agent-relay/sdk
|
|
2
|
+
|
|
3
|
+
Dead simple agent-to-agent communication.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @agent-relay/sdk @agent-relay/daemon
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { createRelay } from '@agent-relay/sdk';
|
|
15
|
+
|
|
16
|
+
// Start a relay (in-process daemon - no setup required)
|
|
17
|
+
const relay = await createRelay();
|
|
18
|
+
|
|
19
|
+
// Create agents
|
|
20
|
+
const alice = await relay.client('Alice');
|
|
21
|
+
const bob = await relay.client('Bob');
|
|
22
|
+
|
|
23
|
+
// Bob listens for messages
|
|
24
|
+
bob.onMessage = (from, { body }) => {
|
|
25
|
+
console.log(`${from}: ${body}`);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Alice sends a message
|
|
29
|
+
alice.sendMessage('Bob', 'Hello!');
|
|
30
|
+
|
|
31
|
+
// When done
|
|
32
|
+
await relay.stop();
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
That's it. No daemon to start, no config files, no setup.
|
|
36
|
+
|
|
37
|
+
## Even Simpler: Two Agents
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { createPair } from '@agent-relay/sdk';
|
|
41
|
+
|
|
42
|
+
const { alice, bob, stop } = await createPair('alice', 'bob');
|
|
43
|
+
|
|
44
|
+
bob.onMessage = (from, { body }) => console.log(`${from}: ${body}`);
|
|
45
|
+
alice.sendMessage('bob', 'Hey!');
|
|
46
|
+
|
|
47
|
+
await stop();
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Features
|
|
51
|
+
|
|
52
|
+
| Feature | Description |
|
|
53
|
+
|---------|-------------|
|
|
54
|
+
| **Zero config** | Just import and go |
|
|
55
|
+
| **Auto-reconnect** | Handles disconnections automatically |
|
|
56
|
+
| **Message deduplication** | No duplicate deliveries |
|
|
57
|
+
| **Sync messaging** | Wait for acknowledgment |
|
|
58
|
+
| **Broadcast** | Send to all agents with `*` |
|
|
59
|
+
| **Channels** | Group messaging with `#channel` |
|
|
60
|
+
|
|
61
|
+
## API Reference
|
|
62
|
+
|
|
63
|
+
### createRelay(config?)
|
|
64
|
+
|
|
65
|
+
Creates a standalone relay with an in-process daemon.
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
const relay = await createRelay({
|
|
69
|
+
socketPath: '/tmp/my-relay.sock', // Optional custom socket
|
|
70
|
+
quiet: true, // Suppress logs (default: true)
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Create clients
|
|
74
|
+
const agent = await relay.client('MyAgent');
|
|
75
|
+
|
|
76
|
+
// Stop everything
|
|
77
|
+
await relay.stop();
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### createPair(name1, name2, config?)
|
|
81
|
+
|
|
82
|
+
Shortcut to create two connected agents.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
const { alice, bob, stop } = await createPair('alice', 'bob');
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### RelayClient
|
|
89
|
+
|
|
90
|
+
The client for agent communication.
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
// Send messages
|
|
94
|
+
client.sendMessage('OtherAgent', 'Hello!');
|
|
95
|
+
client.sendMessage('#general', 'Channel message');
|
|
96
|
+
client.sendMessage('*', 'Broadcast to everyone');
|
|
97
|
+
|
|
98
|
+
// Wait for acknowledgment
|
|
99
|
+
const ack = await client.sendAndWait('OtherAgent', 'Important message');
|
|
100
|
+
|
|
101
|
+
// Receive messages
|
|
102
|
+
client.onMessage = (from, payload, messageId, meta, originalTo) => {
|
|
103
|
+
console.log(`${from}: ${payload.body}`);
|
|
104
|
+
|
|
105
|
+
// Check if broadcast
|
|
106
|
+
if (originalTo === '*') {
|
|
107
|
+
console.log('This was a broadcast');
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Connection state changes
|
|
112
|
+
client.onStateChange = (state) => {
|
|
113
|
+
// 'DISCONNECTED' | 'CONNECTING' | 'HANDSHAKING' | 'READY' | 'BACKOFF'
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// Disconnect
|
|
117
|
+
client.disconnect();
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Using with External Daemon
|
|
121
|
+
|
|
122
|
+
If you're running `agent-relay up` separately (e.g., for the dashboard), use the client directly:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
import { RelayClient } from '@agent-relay/sdk';
|
|
126
|
+
|
|
127
|
+
const client = new RelayClient({
|
|
128
|
+
agentName: 'MyAgent',
|
|
129
|
+
socketPath: '/tmp/agent-relay.sock',
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
await client.connect();
|
|
133
|
+
client.sendMessage('OtherAgent', 'Hello!');
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Advanced: Channels
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
// Join a channel
|
|
140
|
+
client.joinChannel('#general');
|
|
141
|
+
|
|
142
|
+
// Send to channel
|
|
143
|
+
client.sendChannelMessage('#general', 'Hello team!');
|
|
144
|
+
|
|
145
|
+
// Receive channel messages
|
|
146
|
+
client.onChannelMessage = (from, channel, body, envelope) => {
|
|
147
|
+
console.log(`[${channel}] ${from}: ${body}`);
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// Leave channel
|
|
151
|
+
client.leaveChannel('#general');
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Advanced: Shadow Agents
|
|
155
|
+
|
|
156
|
+
Monitor another agent's communication:
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// Bind as shadow to see all messages to/from PrimaryAgent
|
|
160
|
+
client.bindAsShadow('PrimaryAgent', {
|
|
161
|
+
receiveIncoming: true,
|
|
162
|
+
receiveOutgoing: true,
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Unbind
|
|
166
|
+
client.unbindAsShadow('PrimaryAgent');
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## License
|
|
170
|
+
|
|
171
|
+
MIT
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RelayClient - Agent Relay SDK Client
|
|
3
|
+
* @agent-relay/sdk
|
|
4
|
+
*
|
|
5
|
+
* Lightweight client for agent-to-agent communication via Agent Relay daemon.
|
|
6
|
+
*/
|
|
7
|
+
import { type Envelope, type SendPayload, type SendMeta, type AckPayload, type PayloadKind, type SpeakOnTrigger, type EntityType, type ChannelMessagePayload, type MessageAttachment } from './protocol/types.js';
|
|
8
|
+
export type ClientState = 'DISCONNECTED' | 'CONNECTING' | 'HANDSHAKING' | 'READY' | 'BACKOFF';
|
|
9
|
+
export interface SyncOptions {
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
kind?: PayloadKind;
|
|
12
|
+
data?: Record<string, unknown>;
|
|
13
|
+
thread?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ClientConfig {
|
|
16
|
+
/** Daemon socket path (default: /tmp/agent-relay.sock) */
|
|
17
|
+
socketPath: string;
|
|
18
|
+
/** Agent name */
|
|
19
|
+
agentName: string;
|
|
20
|
+
/** Entity type: 'agent' (default) or 'user' */
|
|
21
|
+
entityType?: EntityType;
|
|
22
|
+
/** CLI identifier (claude, codex, gemini, etc.) */
|
|
23
|
+
cli?: string;
|
|
24
|
+
/** Program identifier */
|
|
25
|
+
program?: string;
|
|
26
|
+
/** Model identifier */
|
|
27
|
+
model?: string;
|
|
28
|
+
/** Task description */
|
|
29
|
+
task?: string;
|
|
30
|
+
/** Working directory */
|
|
31
|
+
workingDirectory?: string;
|
|
32
|
+
/** Display name for human users */
|
|
33
|
+
displayName?: string;
|
|
34
|
+
/** Avatar URL for human users */
|
|
35
|
+
avatarUrl?: string;
|
|
36
|
+
/** Suppress console logging */
|
|
37
|
+
quiet?: boolean;
|
|
38
|
+
/** Auto-reconnect on disconnect */
|
|
39
|
+
reconnect: boolean;
|
|
40
|
+
/** Max reconnect attempts */
|
|
41
|
+
maxReconnectAttempts: number;
|
|
42
|
+
/** Initial reconnect delay (ms) */
|
|
43
|
+
reconnectDelayMs: number;
|
|
44
|
+
/** Max reconnect delay (ms) */
|
|
45
|
+
reconnectMaxDelayMs: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* RelayClient for agent-to-agent communication.
|
|
49
|
+
*/
|
|
50
|
+
export declare class RelayClient {
|
|
51
|
+
private config;
|
|
52
|
+
private socket?;
|
|
53
|
+
private parser;
|
|
54
|
+
private _state;
|
|
55
|
+
private sessionId?;
|
|
56
|
+
private resumeToken?;
|
|
57
|
+
private reconnectAttempts;
|
|
58
|
+
private reconnectDelay;
|
|
59
|
+
private reconnectTimer?;
|
|
60
|
+
private _destroyed;
|
|
61
|
+
private dedupeCache;
|
|
62
|
+
private writeQueue;
|
|
63
|
+
private writeScheduled;
|
|
64
|
+
private pendingSyncAcks;
|
|
65
|
+
onMessage?: (from: string, payload: SendPayload, messageId: string, meta?: SendMeta, originalTo?: string) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Callback for channel messages.
|
|
68
|
+
*/
|
|
69
|
+
onChannelMessage?: (from: string, channel: string, body: string, envelope: Envelope<ChannelMessagePayload>) => void;
|
|
70
|
+
onStateChange?: (state: ClientState) => void;
|
|
71
|
+
onError?: (error: Error) => void;
|
|
72
|
+
constructor(config?: Partial<ClientConfig>);
|
|
73
|
+
get state(): ClientState;
|
|
74
|
+
get agentName(): string;
|
|
75
|
+
get currentSessionId(): string | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Connect to the relay daemon.
|
|
78
|
+
*/
|
|
79
|
+
connect(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Disconnect from the relay daemon.
|
|
82
|
+
*/
|
|
83
|
+
disconnect(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Permanently destroy the client.
|
|
86
|
+
*/
|
|
87
|
+
destroy(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Send a message to another agent.
|
|
90
|
+
*/
|
|
91
|
+
sendMessage(to: string, body: string, kind?: PayloadKind, data?: Record<string, unknown>, thread?: string, meta?: SendMeta): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Send an ACK for a delivered message.
|
|
94
|
+
*/
|
|
95
|
+
sendAck(payload: AckPayload): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Send a message and wait for ACK response.
|
|
98
|
+
*/
|
|
99
|
+
sendAndWait(to: string, body: string, options?: SyncOptions): Promise<AckPayload>;
|
|
100
|
+
/**
|
|
101
|
+
* Broadcast a message to all agents.
|
|
102
|
+
*/
|
|
103
|
+
broadcast(body: string, kind?: PayloadKind, data?: Record<string, unknown>): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to a topic.
|
|
106
|
+
*/
|
|
107
|
+
subscribe(topic: string): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Unsubscribe from a topic.
|
|
110
|
+
*/
|
|
111
|
+
unsubscribe(topic: string): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Bind as a shadow to a primary agent.
|
|
114
|
+
*/
|
|
115
|
+
bindAsShadow(primaryAgent: string, options?: {
|
|
116
|
+
speakOn?: SpeakOnTrigger[];
|
|
117
|
+
receiveIncoming?: boolean;
|
|
118
|
+
receiveOutgoing?: boolean;
|
|
119
|
+
}): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Unbind from a primary agent.
|
|
122
|
+
*/
|
|
123
|
+
unbindAsShadow(primaryAgent: string): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Send log output to the daemon for dashboard streaming.
|
|
126
|
+
*/
|
|
127
|
+
sendLog(data: string): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Join a channel.
|
|
130
|
+
* @param channel - Channel name (e.g., '#general', 'dm:alice:bob')
|
|
131
|
+
* @param displayName - Optional display name for this member
|
|
132
|
+
*/
|
|
133
|
+
joinChannel(channel: string, displayName?: string): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Admin join: Add any member to a channel (does not require member to be connected).
|
|
136
|
+
* @param channel - Channel name
|
|
137
|
+
* @param member - Name of the member to add
|
|
138
|
+
*/
|
|
139
|
+
adminJoinChannel(channel: string, member: string): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Leave a channel.
|
|
142
|
+
* @param channel - Channel name to leave
|
|
143
|
+
* @param reason - Optional reason for leaving
|
|
144
|
+
*/
|
|
145
|
+
leaveChannel(channel: string, reason?: string): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Admin remove: Remove any member from a channel.
|
|
148
|
+
* @param channel - Channel name
|
|
149
|
+
* @param member - Name of the member to remove
|
|
150
|
+
*/
|
|
151
|
+
adminRemoveMember(channel: string, member: string): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Send a message to a channel.
|
|
154
|
+
* @param channel - Channel name
|
|
155
|
+
* @param body - Message content
|
|
156
|
+
* @param options - Optional thread, mentions, attachments
|
|
157
|
+
*/
|
|
158
|
+
sendChannelMessage(channel: string, body: string, options?: {
|
|
159
|
+
thread?: string;
|
|
160
|
+
mentions?: string[];
|
|
161
|
+
attachments?: MessageAttachment[];
|
|
162
|
+
data?: Record<string, unknown>;
|
|
163
|
+
}): boolean;
|
|
164
|
+
private setState;
|
|
165
|
+
private sendHello;
|
|
166
|
+
private send;
|
|
167
|
+
private flushWrites;
|
|
168
|
+
private handleData;
|
|
169
|
+
private processFrame;
|
|
170
|
+
private handleWelcome;
|
|
171
|
+
private handleDeliver;
|
|
172
|
+
private handleChannelMessage;
|
|
173
|
+
private handleAck;
|
|
174
|
+
private handlePing;
|
|
175
|
+
private handleErrorFrame;
|
|
176
|
+
private handleDisconnect;
|
|
177
|
+
private handleError;
|
|
178
|
+
private rejectPendingSyncAcks;
|
|
179
|
+
private scheduleReconnect;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|