@agent-relay/sdk 2.1.5 → 2.1.6
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/browser-client.d.ts +212 -0
- package/dist/browser-client.d.ts.map +1 -0
- package/dist/browser-client.js +750 -0
- package/dist/browser-client.js.map +1 -0
- package/dist/browser-framing.d.ts +46 -0
- package/dist/browser-framing.d.ts.map +1 -0
- package/dist/browser-framing.js +122 -0
- package/dist/browser-framing.js.map +1 -0
- package/dist/client.d.ts +129 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +312 -2
- package/dist/client.js.map +1 -1
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +22 -0
- package/dist/discovery.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +18 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/dist/transports/index.d.ts +92 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +129 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/socket-transport.d.ts +30 -0
- package/dist/transports/socket-transport.d.ts.map +1 -0
- package/dist/transports/socket-transport.js +94 -0
- package/dist/transports/socket-transport.js.map +1 -0
- package/dist/transports/types.d.ts +69 -0
- package/dist/transports/types.d.ts.map +1 -0
- package/dist/transports/types.js +10 -0
- package/dist/transports/types.js.map +1 -0
- package/dist/transports/websocket-transport.d.ts +55 -0
- package/dist/transports/websocket-transport.d.ts.map +1 -0
- package/dist/transports/websocket-transport.js +180 -0
- package/dist/transports/websocket-transport.js.map +1 -0
- package/package.json +28 -4
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrowserRelayClient - Browser-compatible Agent Relay SDK Client
|
|
3
|
+
* @agent-relay/sdk
|
|
4
|
+
*
|
|
5
|
+
* A client designed for browser environments using WebSocket transport.
|
|
6
|
+
* Can also be used in Node.js with the WebSocket transport.
|
|
7
|
+
*
|
|
8
|
+
* Key differences from RelayClient:
|
|
9
|
+
* - Uses transport abstraction instead of direct socket access
|
|
10
|
+
* - No Node.js-specific dependencies (node:net, node:crypto)
|
|
11
|
+
* - Uses browser-compatible APIs (crypto.randomUUID, etc.)
|
|
12
|
+
*/
|
|
13
|
+
import type { Transport } from './transports/types.js';
|
|
14
|
+
import { type AutoTransportOptions } from './transports/index.js';
|
|
15
|
+
import { type Envelope, type SendPayload, type SendMeta, type AckPayload, type PayloadKind, type SpeakOnTrigger, type EntityType, type ChannelMessagePayload, type MessageAttachment } from '@agent-relay/protocol';
|
|
16
|
+
export type BrowserClientState = 'DISCONNECTED' | 'CONNECTING' | 'HANDSHAKING' | 'READY' | 'BACKOFF';
|
|
17
|
+
export interface BrowserClientConfig {
|
|
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
|
+
/** Display name for human users */
|
|
25
|
+
displayName?: string;
|
|
26
|
+
/** Avatar URL for human users */
|
|
27
|
+
avatarUrl?: string;
|
|
28
|
+
/** Suppress console logging */
|
|
29
|
+
quiet?: boolean;
|
|
30
|
+
/** Auto-reconnect on disconnect */
|
|
31
|
+
reconnect?: boolean;
|
|
32
|
+
/** Max reconnect attempts */
|
|
33
|
+
maxReconnectAttempts?: number;
|
|
34
|
+
/** Initial reconnect delay (ms) */
|
|
35
|
+
reconnectDelayMs?: number;
|
|
36
|
+
/** Max reconnect delay (ms) */
|
|
37
|
+
reconnectMaxDelayMs?: number;
|
|
38
|
+
/** Transport options (WebSocket URL, socket path, etc.) */
|
|
39
|
+
transport?: AutoTransportOptions;
|
|
40
|
+
/**
|
|
41
|
+
* Pre-configured transport instance (alternative to transport options).
|
|
42
|
+
* NOTE: Auto-reconnection is NOT supported when using transportInstance.
|
|
43
|
+
* If reconnection is needed, use `transport` options instead, or handle
|
|
44
|
+
* reconnection manually by listening for state changes.
|
|
45
|
+
*/
|
|
46
|
+
transportInstance?: Transport;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Browser-compatible request options.
|
|
50
|
+
*/
|
|
51
|
+
export interface BrowserRequestOptions {
|
|
52
|
+
/** Timeout in milliseconds (default: 30000) */
|
|
53
|
+
timeout?: number;
|
|
54
|
+
/** Optional structured data to include with the request */
|
|
55
|
+
data?: Record<string, unknown>;
|
|
56
|
+
/** Optional thread identifier */
|
|
57
|
+
thread?: string;
|
|
58
|
+
/** Message kind (default: 'message') */
|
|
59
|
+
kind?: PayloadKind;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Response from the request() method.
|
|
63
|
+
*/
|
|
64
|
+
export interface BrowserRequestResponse {
|
|
65
|
+
/** Sender of the response */
|
|
66
|
+
from: string;
|
|
67
|
+
/** Response body text */
|
|
68
|
+
body: string;
|
|
69
|
+
/** Optional structured data from the response */
|
|
70
|
+
data?: Record<string, unknown>;
|
|
71
|
+
/** The correlation ID used for this request/response */
|
|
72
|
+
correlationId: string;
|
|
73
|
+
/** Thread identifier if set */
|
|
74
|
+
thread?: string;
|
|
75
|
+
/** The full payload for advanced use cases */
|
|
76
|
+
payload: SendPayload;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* BrowserRelayClient - A browser-compatible relay client.
|
|
80
|
+
*
|
|
81
|
+
* Uses WebSocket transport by default, making it compatible with browsers.
|
|
82
|
+
* Can also be used in Node.js for WebSocket-based connections.
|
|
83
|
+
*
|
|
84
|
+
* @example Browser usage
|
|
85
|
+
* ```typescript
|
|
86
|
+
* import { BrowserRelayClient } from '@agent-relay/sdk/browser';
|
|
87
|
+
*
|
|
88
|
+
* const client = new BrowserRelayClient({
|
|
89
|
+
* agentName: 'MyAgent',
|
|
90
|
+
* transport: {
|
|
91
|
+
* wsUrl: 'wss://relay.example.com/ws',
|
|
92
|
+
* },
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* await client.connect();
|
|
96
|
+
*
|
|
97
|
+
* client.onMessage = (from, payload) => {
|
|
98
|
+
* console.log(`Message from ${from}: ${payload.body}`);
|
|
99
|
+
* };
|
|
100
|
+
*
|
|
101
|
+
* client.sendMessage('OtherAgent', 'Hello!');
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare class BrowserRelayClient {
|
|
105
|
+
private config;
|
|
106
|
+
private transport?;
|
|
107
|
+
private parser;
|
|
108
|
+
private _state;
|
|
109
|
+
private sessionId?;
|
|
110
|
+
private resumeToken?;
|
|
111
|
+
private reconnectAttempts;
|
|
112
|
+
private reconnectDelay;
|
|
113
|
+
private reconnectTimer?;
|
|
114
|
+
private _destroyed;
|
|
115
|
+
private dedupeCache;
|
|
116
|
+
private writeQueue;
|
|
117
|
+
private writeScheduled;
|
|
118
|
+
private pendingSyncAcks;
|
|
119
|
+
private pendingRequests;
|
|
120
|
+
onMessage?: (from: string, payload: SendPayload, messageId: string, meta?: SendMeta, originalTo?: string) => void;
|
|
121
|
+
onChannelMessage?: (from: string, channel: string, body: string, envelope: Envelope<ChannelMessagePayload>) => void;
|
|
122
|
+
onStateChange?: (state: BrowserClientState) => void;
|
|
123
|
+
onError?: (error: Error) => void;
|
|
124
|
+
constructor(config: BrowserClientConfig);
|
|
125
|
+
get state(): BrowserClientState;
|
|
126
|
+
get agentName(): string;
|
|
127
|
+
get currentSessionId(): string | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Connect to the relay daemon.
|
|
130
|
+
*/
|
|
131
|
+
connect(): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Disconnect from the relay daemon.
|
|
134
|
+
*/
|
|
135
|
+
disconnect(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Permanently destroy the client.
|
|
138
|
+
*/
|
|
139
|
+
destroy(): void;
|
|
140
|
+
/**
|
|
141
|
+
* Send a message to another agent.
|
|
142
|
+
*/
|
|
143
|
+
sendMessage(to: string, body: string, kind?: PayloadKind, data?: Record<string, unknown>, thread?: string, meta?: SendMeta): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Send an ACK for a delivered message.
|
|
146
|
+
*/
|
|
147
|
+
sendAck(payload: AckPayload): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Send a request to another agent and wait for their response.
|
|
150
|
+
*/
|
|
151
|
+
request(to: string, body: string, options?: BrowserRequestOptions): Promise<BrowserRequestResponse>;
|
|
152
|
+
/**
|
|
153
|
+
* Respond to a request from another agent.
|
|
154
|
+
*/
|
|
155
|
+
respond(correlationId: string, to: string, body: string, data?: Record<string, unknown>): boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Broadcast a message to all agents.
|
|
158
|
+
*/
|
|
159
|
+
broadcast(body: string, kind?: PayloadKind, data?: Record<string, unknown>): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Bind as a shadow to a primary agent.
|
|
162
|
+
*/
|
|
163
|
+
bindAsShadow(primaryAgent: string, options?: {
|
|
164
|
+
speakOn?: SpeakOnTrigger[];
|
|
165
|
+
receiveIncoming?: boolean;
|
|
166
|
+
receiveOutgoing?: boolean;
|
|
167
|
+
}): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Unbind from a primary agent.
|
|
170
|
+
*/
|
|
171
|
+
unbindAsShadow(primaryAgent: string): boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Send log output to the daemon.
|
|
174
|
+
*/
|
|
175
|
+
sendLog(data: string): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* Join a channel.
|
|
178
|
+
*/
|
|
179
|
+
joinChannel(channel: string, displayName?: string): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Leave a channel.
|
|
182
|
+
*/
|
|
183
|
+
leaveChannel(channel: string, reason?: string): boolean;
|
|
184
|
+
/**
|
|
185
|
+
* Send a message to a channel.
|
|
186
|
+
*/
|
|
187
|
+
sendChannelMessage(channel: string, body: string, options?: {
|
|
188
|
+
thread?: string;
|
|
189
|
+
mentions?: string[];
|
|
190
|
+
attachments?: MessageAttachment[];
|
|
191
|
+
data?: Record<string, unknown>;
|
|
192
|
+
}): boolean;
|
|
193
|
+
private setState;
|
|
194
|
+
private sendHello;
|
|
195
|
+
private send;
|
|
196
|
+
private flushWrites;
|
|
197
|
+
private handleData;
|
|
198
|
+
private processFrame;
|
|
199
|
+
private handleWelcome;
|
|
200
|
+
private handleDeliver;
|
|
201
|
+
private extractCorrelationId;
|
|
202
|
+
private handleChannelMessage;
|
|
203
|
+
private handleAck;
|
|
204
|
+
private handlePing;
|
|
205
|
+
private handleErrorFrame;
|
|
206
|
+
private handleDisconnect;
|
|
207
|
+
private handleError;
|
|
208
|
+
private rejectPendingSyncAcks;
|
|
209
|
+
private rejectPendingRequests;
|
|
210
|
+
private scheduleReconnect;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=browser-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../src/browser-client.ts"],"names":[],"mappings":"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"}
|