@agent-relay/sdk 3.2.21 → 4.0.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 +10 -3
- package/bin/agent-relay-broker-darwin-arm64 +0 -0
- package/bin/agent-relay-broker-darwin-x64 +0 -0
- package/bin/agent-relay-broker-linux-arm64 +0 -0
- package/bin/agent-relay-broker-linux-x64 +0 -0
- package/dist/client.d.ts +108 -196
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +336 -824
- package/dist/client.js.map +1 -1
- package/dist/examples/example.js +2 -5
- package/dist/examples/example.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/relay-adapter.d.ts +9 -26
- package/dist/relay-adapter.d.ts.map +1 -1
- package/dist/relay-adapter.js +75 -47
- package/dist/relay-adapter.js.map +1 -1
- package/dist/relay.d.ts +24 -5
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +213 -43
- package/dist/relay.js.map +1 -1
- package/dist/transport.d.ts +58 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +184 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/workflows/cli.js +46 -2
- package/dist/workflows/cli.js.map +1 -1
- package/dist/workflows/file-db.d.ts +2 -0
- package/dist/workflows/file-db.d.ts.map +1 -1
- package/dist/workflows/file-db.js +20 -3
- package/dist/workflows/file-db.js.map +1 -1
- package/dist/workflows/runner.d.ts +6 -1
- package/dist/workflows/runner.d.ts.map +1 -1
- package/dist/workflows/runner.js +157 -11
- package/dist/workflows/runner.js.map +1 -1
- package/dist/workflows/validator.d.ts.map +1 -1
- package/dist/workflows/validator.js +17 -2
- package/dist/workflows/validator.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -80,11 +80,18 @@ For direct broker control:
|
|
|
80
80
|
```ts
|
|
81
81
|
import { AgentRelayClient } from '@agent-relay/sdk';
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
// Spawn a local broker and connect over HTTP/WS
|
|
84
|
+
const client = await AgentRelayClient.spawn({
|
|
85
|
+
cwd: '/my/project',
|
|
85
86
|
channels: ['general'],
|
|
86
87
|
});
|
|
87
88
|
|
|
89
|
+
// Or connect to an already-running broker (reads connection.json)
|
|
90
|
+
// const client = AgentRelayClient.connect({ cwd: '/my/project' });
|
|
91
|
+
|
|
92
|
+
// Or connect to a remote broker directly
|
|
93
|
+
// const client = new AgentRelayClient({ baseUrl: 'http://...', apiKey: 'br_...' });
|
|
94
|
+
|
|
88
95
|
await client.spawnPty({
|
|
89
96
|
name: 'Worker1',
|
|
90
97
|
cli: 'claude',
|
|
@@ -104,7 +111,7 @@ Use provider-first spawn helpers and set `transport` when you want headless mode
|
|
|
104
111
|
```ts
|
|
105
112
|
import { AgentRelayClient } from '@agent-relay/sdk';
|
|
106
113
|
|
|
107
|
-
const client = await AgentRelayClient.
|
|
114
|
+
const client = await AgentRelayClient.spawn({
|
|
108
115
|
channels: ['general'],
|
|
109
116
|
});
|
|
110
117
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/client.d.ts
CHANGED
|
@@ -1,116 +1,90 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* AgentRelayClient — single client for communicating with an agent-relay broker
|
|
3
|
+
* over HTTP/WS. Works identically for local and remote brokers.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* // Remote broker (Daytona sandbox, cloud, etc.)
|
|
7
|
+
* const client = new AgentRelayClient({ baseUrl, apiKey });
|
|
8
|
+
*
|
|
9
|
+
* // Local broker (spawn and connect)
|
|
10
|
+
* const client = await AgentRelayClient.spawn({ cwd: '/my/project' });
|
|
11
|
+
*/
|
|
12
|
+
import type { AgentRuntime, BrokerEvent, BrokerStats, BrokerStatus, CrashInsightsResponse, HeadlessProvider } from './protocol.js';
|
|
13
|
+
import type { SpawnPtyInput, SpawnProviderInput, SendMessageInput, ListAgent } from './types.js';
|
|
2
14
|
export interface AgentRelayClientOptions {
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
/** Timeout in ms for HTTP requests. Default: 30000. */
|
|
18
|
+
requestTimeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface AgentRelaySpawnOptions {
|
|
21
|
+
/** Path to the agent-relay-broker binary. Auto-resolved if omitted. */
|
|
3
22
|
binaryPath?: string;
|
|
23
|
+
/** Extra args passed to `broker init` (e.g. ['--persist']). */
|
|
4
24
|
binaryArgs?: string[];
|
|
25
|
+
/** Broker name. Defaults to cwd basename. */
|
|
5
26
|
brokerName?: string;
|
|
27
|
+
/** Default channels for spawned agents. */
|
|
6
28
|
channels?: string[];
|
|
29
|
+
/** Working directory for the broker process. */
|
|
7
30
|
cwd?: string;
|
|
31
|
+
/** Environment variables for the broker process. */
|
|
8
32
|
env?: NodeJS.ProcessEnv;
|
|
33
|
+
/** Forward broker stderr to this callback. */
|
|
34
|
+
onStderr?: (line: string) => void;
|
|
35
|
+
/** Timeout in ms to wait for broker to become ready. Default: 15000. */
|
|
36
|
+
startupTimeoutMs?: number;
|
|
37
|
+
/** Timeout in ms for HTTP requests to the broker. Default: 30000. */
|
|
9
38
|
requestTimeoutMs?: number;
|
|
10
|
-
shutdownTimeoutMs?: number;
|
|
11
|
-
clientName?: string;
|
|
12
|
-
clientVersion?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface SpawnPtyInput {
|
|
15
|
-
name: string;
|
|
16
|
-
cli: string;
|
|
17
|
-
args?: string[];
|
|
18
|
-
channels?: string[];
|
|
19
|
-
task?: string;
|
|
20
|
-
model?: string;
|
|
21
|
-
cwd?: string;
|
|
22
|
-
team?: string;
|
|
23
|
-
shadowOf?: string;
|
|
24
|
-
shadowMode?: string;
|
|
25
|
-
/** Silence duration in seconds before emitting agent_idle (0 = disabled, default: 30). */
|
|
26
|
-
idleThresholdSecs?: number;
|
|
27
|
-
/** Auto-restart policy for crashed agents. */
|
|
28
|
-
restartPolicy?: RestartPolicy;
|
|
29
|
-
/** Name of a previously released agent whose continuity context should be injected. */
|
|
30
|
-
continueFrom?: string;
|
|
31
|
-
/** When true, skip injecting the relay MCP configuration and protocol prompt into the spawned agent.
|
|
32
|
-
* Useful for minor tasks where relay messaging is not needed, saving tokens. */
|
|
33
|
-
skipRelayPrompt?: boolean;
|
|
34
|
-
}
|
|
35
|
-
export interface SpawnHeadlessInput {
|
|
36
|
-
name: string;
|
|
37
|
-
provider: HeadlessProvider;
|
|
38
|
-
args?: string[];
|
|
39
|
-
channels?: string[];
|
|
40
|
-
task?: string;
|
|
41
|
-
/** When true, skip injecting the relay MCP configuration and protocol prompt into the spawned agent.
|
|
42
|
-
* Useful for minor tasks where relay messaging is not needed, saving tokens. */
|
|
43
|
-
skipRelayPrompt?: boolean;
|
|
44
|
-
}
|
|
45
|
-
export type AgentTransport = 'pty' | 'headless';
|
|
46
|
-
export interface SpawnProviderInput {
|
|
47
|
-
name: string;
|
|
48
|
-
provider: string;
|
|
49
|
-
transport?: AgentTransport;
|
|
50
|
-
args?: string[];
|
|
51
|
-
channels?: string[];
|
|
52
|
-
task?: string;
|
|
53
|
-
model?: string;
|
|
54
|
-
cwd?: string;
|
|
55
|
-
team?: string;
|
|
56
|
-
shadowOf?: string;
|
|
57
|
-
shadowMode?: string;
|
|
58
|
-
idleThresholdSecs?: number;
|
|
59
|
-
restartPolicy?: RestartPolicy;
|
|
60
|
-
continueFrom?: string;
|
|
61
|
-
/** When true, skip injecting the relay MCP configuration and protocol prompt into the spawned agent.
|
|
62
|
-
* Useful for minor tasks where relay messaging is not needed, saving tokens. */
|
|
63
|
-
skipRelayPrompt?: boolean;
|
|
64
|
-
}
|
|
65
|
-
export interface SendMessageInput {
|
|
66
|
-
to: string;
|
|
67
|
-
text: string;
|
|
68
|
-
from?: string;
|
|
69
|
-
threadId?: string;
|
|
70
|
-
workspaceId?: string;
|
|
71
|
-
workspaceAlias?: string;
|
|
72
|
-
priority?: number;
|
|
73
|
-
data?: Record<string, unknown>;
|
|
74
|
-
mode?: MessageInjectionMode;
|
|
75
|
-
}
|
|
76
|
-
export interface ListAgent {
|
|
77
|
-
name: string;
|
|
78
|
-
runtime: AgentRuntime;
|
|
79
|
-
provider?: HeadlessProvider;
|
|
80
|
-
cli?: string;
|
|
81
|
-
model?: string;
|
|
82
|
-
team?: string;
|
|
83
|
-
channels: string[];
|
|
84
|
-
parent?: string;
|
|
85
|
-
pid?: number;
|
|
86
39
|
}
|
|
87
|
-
export
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
constructor(message: string);
|
|
40
|
+
export interface SessionInfo {
|
|
41
|
+
broker_version: string;
|
|
42
|
+
protocol_version: number;
|
|
43
|
+
workspace_key?: string;
|
|
44
|
+
default_workspace_id?: string;
|
|
45
|
+
mode: string;
|
|
46
|
+
uptime_secs: number;
|
|
95
47
|
}
|
|
96
48
|
export declare class AgentRelayClient {
|
|
97
|
-
private readonly
|
|
98
|
-
|
|
99
|
-
private
|
|
100
|
-
|
|
101
|
-
private
|
|
102
|
-
private requestSeq;
|
|
103
|
-
private pending;
|
|
104
|
-
private startingPromise?;
|
|
105
|
-
private eventListeners;
|
|
106
|
-
private stderrListeners;
|
|
107
|
-
private eventBuffer;
|
|
108
|
-
private maxBufferSize;
|
|
109
|
-
private exitPromise?;
|
|
110
|
-
/** The workspace key returned by the broker in its hello_ack response. */
|
|
49
|
+
private readonly transport;
|
|
50
|
+
/** Set after spawn() — the managed child process. */
|
|
51
|
+
private child;
|
|
52
|
+
/** Lease renewal timer (only for spawned brokers). */
|
|
53
|
+
private leaseTimer;
|
|
111
54
|
workspaceKey?: string;
|
|
112
|
-
constructor(options
|
|
113
|
-
|
|
55
|
+
constructor(options: AgentRelayClientOptions);
|
|
56
|
+
/**
|
|
57
|
+
* Connect to an already-running broker by reading its connection file.
|
|
58
|
+
*
|
|
59
|
+
* The broker writes `connection.json` to its data directory ({cwd}/.agent-relay/
|
|
60
|
+
* in persist mode). This method reads that file to get the URL and API key.
|
|
61
|
+
*
|
|
62
|
+
* @param cwd — project directory (default: process.cwd())
|
|
63
|
+
* @param connectionPath — explicit path to connection.json (overrides cwd)
|
|
64
|
+
*/
|
|
65
|
+
static connect(options?: {
|
|
66
|
+
cwd?: string;
|
|
67
|
+
connectionPath?: string;
|
|
68
|
+
}): AgentRelayClient;
|
|
69
|
+
/**
|
|
70
|
+
* Spawn a local broker process and return a connected client.
|
|
71
|
+
*
|
|
72
|
+
* 1. Generates a random API key
|
|
73
|
+
* 2. Spawns the broker binary (attached)
|
|
74
|
+
* 3. Parses the API port from stdout
|
|
75
|
+
* 4. Connects HTTP/WS transport
|
|
76
|
+
* 5. Fetches session metadata
|
|
77
|
+
* 6. Starts event stream + lease renewal
|
|
78
|
+
*/
|
|
79
|
+
static spawn(options?: AgentRelaySpawnOptions): Promise<AgentRelayClient>;
|
|
80
|
+
/** PID of the managed broker process, if spawned locally. */
|
|
81
|
+
get brokerPid(): number | undefined;
|
|
82
|
+
getSession(): Promise<SessionInfo>;
|
|
83
|
+
healthCheck(): Promise<{
|
|
84
|
+
service: string;
|
|
85
|
+
}>;
|
|
86
|
+
connectEvents(sinceSeq?: number): void;
|
|
87
|
+
disconnectEvents(): void;
|
|
114
88
|
onEvent(listener: (event: BrokerEvent) => void): () => void;
|
|
115
89
|
queryEvents(filter?: {
|
|
116
90
|
kind?: string;
|
|
@@ -119,29 +93,22 @@ export declare class AgentRelayClient {
|
|
|
119
93
|
limit?: number;
|
|
120
94
|
}): BrokerEvent[];
|
|
121
95
|
getLastEvent(kind: string, name?: string): BrokerEvent | undefined;
|
|
122
|
-
onBrokerStderr(listener: (line: string) => void): () => void;
|
|
123
|
-
get brokerPid(): number | undefined;
|
|
124
|
-
start(): Promise<void>;
|
|
125
|
-
/**
|
|
126
|
-
* Pre-register a batch of agents with Relaycast before their steps execute.
|
|
127
|
-
* The broker warms its token cache in parallel; subsequent spawn_agent calls
|
|
128
|
-
* hit the cache rather than waiting on individual HTTP registrations.
|
|
129
|
-
* Fire-and-forget from the caller's perspective — broker responds immediately
|
|
130
|
-
* and registers in the background.
|
|
131
|
-
*/
|
|
132
|
-
preflightAgents(agents: Array<{
|
|
133
|
-
name: string;
|
|
134
|
-
cli: string | AgentRuntime;
|
|
135
|
-
}>): Promise<void>;
|
|
136
96
|
spawnPty(input: SpawnPtyInput): Promise<{
|
|
137
97
|
name: string;
|
|
138
98
|
runtime: AgentRuntime;
|
|
139
99
|
}>;
|
|
140
|
-
|
|
100
|
+
spawnProvider(input: SpawnProviderInput): Promise<{
|
|
141
101
|
name: string;
|
|
142
102
|
runtime: AgentRuntime;
|
|
143
103
|
}>;
|
|
144
|
-
|
|
104
|
+
spawnHeadless(input: {
|
|
105
|
+
name: string;
|
|
106
|
+
provider: HeadlessProvider;
|
|
107
|
+
args?: string[];
|
|
108
|
+
channels?: string[];
|
|
109
|
+
task?: string;
|
|
110
|
+
skipRelayPrompt?: boolean;
|
|
111
|
+
}): Promise<{
|
|
145
112
|
name: string;
|
|
146
113
|
runtime: AgentRuntime;
|
|
147
114
|
}>;
|
|
@@ -156,17 +123,20 @@ export declare class AgentRelayClient {
|
|
|
156
123
|
release(name: string, reason?: string): Promise<{
|
|
157
124
|
name: string;
|
|
158
125
|
}>;
|
|
126
|
+
listAgents(): Promise<ListAgent[]>;
|
|
159
127
|
sendInput(name: string, data: string): Promise<{
|
|
160
128
|
name: string;
|
|
161
129
|
bytes_written: number;
|
|
162
130
|
}>;
|
|
163
|
-
subscribeChannels(name: string, channels: string[]): Promise<void>;
|
|
164
|
-
unsubscribeChannels(name: string, channels: string[]): Promise<void>;
|
|
165
131
|
resizePty(name: string, rows: number, cols: number): Promise<{
|
|
166
132
|
name: string;
|
|
167
133
|
rows: number;
|
|
168
134
|
cols: number;
|
|
169
135
|
}>;
|
|
136
|
+
sendMessage(input: SendMessageInput): Promise<{
|
|
137
|
+
event_id: string;
|
|
138
|
+
targets: string[];
|
|
139
|
+
}>;
|
|
170
140
|
setModel(name: string, model: string, opts?: {
|
|
171
141
|
timeoutMs?: number;
|
|
172
142
|
}): Promise<{
|
|
@@ -174,6 +144,8 @@ export declare class AgentRelayClient {
|
|
|
174
144
|
model: string;
|
|
175
145
|
success: boolean;
|
|
176
146
|
}>;
|
|
147
|
+
subscribeChannels(name: string, channels: string[]): Promise<void>;
|
|
148
|
+
unsubscribeChannels(name: string, channels: string[]): Promise<void>;
|
|
177
149
|
getMetrics(agent?: string): Promise<{
|
|
178
150
|
agents: Array<{
|
|
179
151
|
name: string;
|
|
@@ -183,89 +155,29 @@ export declare class AgentRelayClient {
|
|
|
183
155
|
}>;
|
|
184
156
|
broker?: BrokerStats;
|
|
185
157
|
}>;
|
|
158
|
+
getStatus(): Promise<BrokerStatus>;
|
|
186
159
|
getCrashInsights(): Promise<CrashInsightsResponse>;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
160
|
+
preflight(agents: Array<{
|
|
161
|
+
name: string;
|
|
162
|
+
cli: string;
|
|
163
|
+
}>): Promise<{
|
|
164
|
+
queued: number;
|
|
165
|
+
}>;
|
|
166
|
+
renewLease(): Promise<{
|
|
167
|
+
renewed: boolean;
|
|
168
|
+
expires_in_secs: number;
|
|
190
169
|
}>;
|
|
191
|
-
listAgents(): Promise<ListAgent[]>;
|
|
192
|
-
getStatus(): Promise<BrokerStatus>;
|
|
193
|
-
shutdown(): Promise<void>;
|
|
194
|
-
waitForExit(): Promise<void>;
|
|
195
|
-
private startInternal;
|
|
196
|
-
private disposeProcessHandles;
|
|
197
|
-
private failAllPending;
|
|
198
|
-
private handleStdoutLine;
|
|
199
|
-
private requestHello;
|
|
200
|
-
private requestOk;
|
|
201
|
-
private sendRequest;
|
|
202
|
-
}
|
|
203
|
-
export interface HttpAgentRelayClientOptions {
|
|
204
|
-
port: number;
|
|
205
|
-
apiKey?: string;
|
|
206
|
-
}
|
|
207
|
-
export interface DiscoverAndConnectOptions {
|
|
208
|
-
cwd?: string;
|
|
209
|
-
apiKey?: string;
|
|
210
|
-
/** Auto-start the broker if not running (default: false). */
|
|
211
|
-
autoStart?: boolean;
|
|
212
|
-
/**
|
|
213
|
-
* Path to the broker binary for auto-start.
|
|
214
|
-
* If not provided, the SDK resolves it automatically via standard install locations
|
|
215
|
-
* (~/.agent-relay/bin, bundled platform binary, or Cargo release build).
|
|
216
|
-
* Only used when `autoStart: true`.
|
|
217
|
-
*/
|
|
218
|
-
brokerBinaryPath?: string;
|
|
219
|
-
}
|
|
220
|
-
export declare class HttpAgentRelayClient {
|
|
221
|
-
private readonly port;
|
|
222
|
-
private readonly apiKey?;
|
|
223
|
-
constructor(options: HttpAgentRelayClientOptions);
|
|
224
|
-
/**
|
|
225
|
-
* Connect to an already-running broker on the given port.
|
|
226
|
-
*/
|
|
227
|
-
static connectHttp(port: number, options?: {
|
|
228
|
-
apiKey?: string;
|
|
229
|
-
}): Promise<HttpAgentRelayClient>;
|
|
230
170
|
/**
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
171
|
+
* Shut down and clean up.
|
|
172
|
+
* - For spawned brokers (via .spawn()): sends POST /api/shutdown to kill the broker, waits for exit.
|
|
173
|
+
* - For connected brokers (via .connect() or constructor): just disconnects the transport.
|
|
174
|
+
* Does NOT kill the broker — the caller doesn't own it.
|
|
234
175
|
*/
|
|
235
|
-
static discoverAndConnect(options?: DiscoverAndConnectOptions): Promise<HttpAgentRelayClient>;
|
|
236
|
-
private static scanForBrokerPort;
|
|
237
|
-
private request;
|
|
238
|
-
private static extractErrorMessage;
|
|
239
|
-
healthCheck(): Promise<{
|
|
240
|
-
service: string;
|
|
241
|
-
}>;
|
|
242
|
-
/** No-op — broker is already running. */
|
|
243
|
-
start(): Promise<void>;
|
|
244
|
-
/** No-op — don't kill an externally-managed broker. */
|
|
245
176
|
shutdown(): Promise<void>;
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
runtime: AgentRuntime;
|
|
249
|
-
}>;
|
|
250
|
-
sendMessage(input: SendMessageInput): Promise<{
|
|
251
|
-
event_id: string;
|
|
252
|
-
targets: string[];
|
|
253
|
-
}>;
|
|
254
|
-
listAgents(): Promise<ListAgent[]>;
|
|
255
|
-
release(name: string, reason?: string): Promise<{
|
|
256
|
-
name: string;
|
|
257
|
-
}>;
|
|
258
|
-
subscribeChannels(_name: string, _channels: string[]): Promise<void>;
|
|
259
|
-
unsubscribeChannels(_name: string, _channels: string[]): Promise<void>;
|
|
260
|
-
setModel(name: string, model: string, opts?: {
|
|
261
|
-
timeoutMs?: number;
|
|
262
|
-
}): Promise<{
|
|
263
|
-
name: string;
|
|
264
|
-
model: string;
|
|
265
|
-
success: boolean;
|
|
266
|
-
}>;
|
|
177
|
+
/** Disconnect without shutting down the broker. Alias for cases where the intent is clear. */
|
|
178
|
+
disconnect(): void;
|
|
267
179
|
getConfig(): Promise<{
|
|
268
|
-
|
|
180
|
+
workspaceKey?: string;
|
|
269
181
|
}>;
|
|
270
182
|
}
|
|
271
183
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|