@agent-relay/sdk 2.3.14 → 2.3.15
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 +68 -838
- 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/__tests__/contract-fixtures.test.d.ts +2 -0
- package/dist/__tests__/contract-fixtures.test.d.ts.map +1 -0
- package/dist/__tests__/contract-fixtures.test.js +85 -0
- package/dist/__tests__/contract-fixtures.test.js.map +1 -0
- package/dist/__tests__/facade.test.d.ts +2 -0
- package/dist/__tests__/facade.test.d.ts.map +1 -0
- package/dist/__tests__/facade.test.js +305 -0
- package/dist/__tests__/facade.test.js.map +1 -0
- package/dist/__tests__/integration.test.d.ts +2 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +169 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/pty.test.d.ts +2 -0
- package/dist/__tests__/pty.test.d.ts.map +1 -0
- package/dist/__tests__/pty.test.js +20 -0
- package/dist/__tests__/pty.test.js.map +1 -0
- package/dist/__tests__/quickstart.test.d.ts +2 -0
- package/dist/__tests__/quickstart.test.d.ts.map +1 -0
- package/dist/__tests__/quickstart.test.js +176 -0
- package/dist/__tests__/quickstart.test.js.map +1 -0
- package/dist/__tests__/spawn-from-env.test.d.ts +2 -0
- package/dist/__tests__/spawn-from-env.test.d.ts.map +1 -0
- package/dist/__tests__/spawn-from-env.test.js +206 -0
- package/dist/__tests__/spawn-from-env.test.js.map +1 -0
- package/dist/__tests__/unit.test.d.ts +2 -0
- package/dist/__tests__/unit.test.d.ts.map +1 -0
- package/dist/__tests__/unit.test.js +347 -0
- package/dist/__tests__/unit.test.js.map +1 -0
- package/dist/browser.d.ts +16 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +19 -0
- package/dist/browser.js.map +1 -0
- package/dist/client.d.ts +140 -526
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +430 -1509
- package/dist/client.js.map +1 -1
- package/dist/consensus-helpers.d.ts +103 -0
- package/dist/consensus-helpers.d.ts.map +1 -0
- package/dist/consensus-helpers.js +147 -0
- package/dist/consensus-helpers.js.map +1 -0
- package/dist/consensus.d.ts +72 -0
- package/dist/consensus.d.ts.map +1 -0
- package/dist/consensus.js +378 -0
- package/dist/consensus.js.map +1 -0
- package/dist/examples/demo.d.ts +2 -0
- package/dist/examples/demo.d.ts.map +1 -0
- package/dist/examples/demo.js +63 -0
- package/dist/examples/demo.js.map +1 -0
- package/dist/examples/example.d.ts +2 -0
- package/dist/examples/example.d.ts.map +1 -0
- package/dist/examples/example.js +80 -0
- package/dist/examples/example.js.map +1 -0
- package/dist/examples/quickstart.d.ts +2 -0
- package/dist/examples/quickstart.d.ts.map +1 -0
- package/dist/examples/quickstart.js +56 -0
- package/dist/examples/quickstart.js.map +1 -0
- package/dist/examples/ralph-loop.d.ts +2 -0
- package/dist/examples/ralph-loop.d.ts.map +1 -0
- package/dist/examples/ralph-loop.js +281 -0
- package/dist/examples/ralph-loop.js.map +1 -0
- package/dist/examples/workflow-superiority.d.ts +32 -0
- package/dist/examples/workflow-superiority.d.ts.map +1 -0
- package/dist/examples/workflow-superiority.js +1421 -0
- package/dist/examples/workflow-superiority.js.map +1 -0
- package/dist/index.d.ts +13 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -26
- package/dist/index.js.map +1 -1
- package/dist/logs.d.ts +70 -25
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +238 -42
- package/dist/logs.js.map +1 -1
- package/dist/models.d.ts +9 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +17 -0
- package/dist/models.js.map +1 -0
- package/dist/protocol.d.ts +366 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +2 -0
- package/dist/protocol.js.map +1 -0
- package/dist/pty.d.ts +8 -0
- package/dist/pty.d.ts.map +1 -0
- package/dist/pty.js +26 -0
- package/dist/pty.js.map +1 -0
- package/dist/relay-adapter.d.ts +139 -0
- package/dist/relay-adapter.d.ts.map +1 -0
- package/dist/relay-adapter.js +210 -0
- package/dist/relay-adapter.js.map +1 -0
- package/dist/relay.d.ts +304 -0
- package/dist/relay.d.ts.map +1 -0
- package/dist/relay.js +910 -0
- package/dist/relay.js.map +1 -0
- package/dist/shadow.d.ts +101 -0
- package/dist/shadow.d.ts.map +1 -0
- package/dist/shadow.js +174 -0
- package/dist/shadow.js.map +1 -0
- package/dist/spawn-from-env.d.ts +77 -0
- package/dist/spawn-from-env.d.ts.map +1 -0
- package/dist/spawn-from-env.js +172 -0
- package/dist/spawn-from-env.js.map +1 -0
- package/dist/workflows/barrier.d.ts +72 -0
- package/dist/workflows/barrier.d.ts.map +1 -0
- package/dist/workflows/barrier.js +162 -0
- package/dist/workflows/barrier.js.map +1 -0
- package/dist/workflows/builder.d.ts +114 -0
- package/dist/workflows/builder.d.ts.map +1 -0
- package/dist/workflows/builder.js +201 -0
- package/dist/workflows/builder.js.map +1 -0
- package/dist/workflows/cli.d.ts +11 -0
- package/dist/workflows/cli.d.ts.map +1 -0
- package/dist/workflows/cli.js +144 -0
- package/dist/workflows/cli.js.map +1 -0
- package/dist/workflows/coordinator.d.ts +73 -0
- package/dist/workflows/coordinator.d.ts.map +1 -0
- package/dist/workflows/coordinator.js +647 -0
- package/dist/workflows/coordinator.js.map +1 -0
- package/dist/workflows/custom-steps.d.ts +73 -0
- package/dist/workflows/custom-steps.d.ts.map +1 -0
- package/dist/workflows/custom-steps.js +321 -0
- package/dist/workflows/custom-steps.js.map +1 -0
- package/dist/workflows/dry-run-format.d.ts +6 -0
- package/dist/workflows/dry-run-format.d.ts.map +1 -0
- package/dist/workflows/dry-run-format.js +68 -0
- package/dist/workflows/dry-run-format.js.map +1 -0
- package/dist/workflows/file-db.d.ts +33 -0
- package/dist/workflows/file-db.d.ts.map +1 -0
- package/dist/workflows/file-db.js +108 -0
- package/dist/workflows/file-db.js.map +1 -0
- package/dist/workflows/index.d.ts +15 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +15 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/memory-db.d.ts +17 -0
- package/dist/workflows/memory-db.d.ts.map +1 -0
- package/dist/workflows/memory-db.js +33 -0
- package/dist/workflows/memory-db.js.map +1 -0
- package/dist/workflows/run.d.ts +38 -0
- package/dist/workflows/run.d.ts.map +1 -0
- package/dist/workflows/run.js +25 -0
- package/dist/workflows/run.js.map +1 -0
- package/dist/workflows/runner.d.ts +320 -0
- package/dist/workflows/runner.d.ts.map +1 -0
- package/dist/workflows/runner.js +2821 -0
- package/dist/workflows/runner.js.map +1 -0
- package/dist/workflows/state.d.ts +77 -0
- package/dist/workflows/state.d.ts.map +1 -0
- package/dist/workflows/state.js +140 -0
- package/dist/workflows/state.js.map +1 -0
- package/dist/workflows/templates.d.ts +47 -0
- package/dist/workflows/templates.d.ts.map +1 -0
- package/dist/workflows/templates.js +405 -0
- package/dist/workflows/templates.js.map +1 -0
- package/dist/workflows/trajectory.d.ts +87 -0
- package/dist/workflows/trajectory.d.ts.map +1 -0
- package/dist/workflows/trajectory.js +441 -0
- package/dist/workflows/trajectory.js.map +1 -0
- package/dist/workflows/types.d.ts +306 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +23 -0
- package/dist/workflows/types.js.map +1 -0
- package/dist/workflows/validator.d.ts +11 -0
- package/dist/workflows/validator.d.ts.map +1 -0
- package/dist/workflows/validator.js +128 -0
- package/dist/workflows/validator.js.map +1 -0
- package/package.json +59 -53
- package/dist/discovery.d.ts +0 -10
- package/dist/discovery.d.ts.map +0 -1
- package/dist/discovery.js +0 -22
- package/dist/discovery.js.map +0 -1
- package/dist/errors.d.ts +0 -9
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -9
- package/dist/errors.js.map +0 -1
- package/dist/protocol/index.d.ts +0 -8
- package/dist/protocol/index.d.ts.map +0 -1
- package/dist/protocol/index.js +0 -8
- package/dist/protocol/index.js.map +0 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,538 +1,152 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
thread?: string;
|
|
1
|
+
import { type AgentRuntime, type BrokerEvent, type BrokerStats, type BrokerStatus, type CrashInsightsResponse, type ProtocolError, type RestartPolicy } from './protocol.js';
|
|
2
|
+
export interface AgentRelayClientOptions {
|
|
3
|
+
binaryPath?: string;
|
|
4
|
+
binaryArgs?: string[];
|
|
5
|
+
brokerName?: string;
|
|
6
|
+
channels?: string[];
|
|
7
|
+
cwd?: string;
|
|
8
|
+
env?: NodeJS.ProcessEnv;
|
|
9
|
+
requestTimeoutMs?: number;
|
|
10
|
+
shutdownTimeoutMs?: number;
|
|
11
|
+
clientName?: string;
|
|
12
|
+
clientVersion?: string;
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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;
|
|
27
31
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
from: string;
|
|
34
|
-
/** Response body text */
|
|
35
|
-
body: string;
|
|
36
|
-
/** Optional structured data from the response */
|
|
37
|
-
data?: Record<string, unknown>;
|
|
38
|
-
/** The correlation ID used for this request/response */
|
|
39
|
-
correlationId: string;
|
|
40
|
-
/** Thread identifier if set */
|
|
41
|
-
thread?: string;
|
|
42
|
-
/** The full payload for advanced use cases */
|
|
43
|
-
payload: SendPayload;
|
|
32
|
+
export interface SpawnHeadlessClaudeInput {
|
|
33
|
+
name: string;
|
|
34
|
+
args?: string[];
|
|
35
|
+
channels?: string[];
|
|
36
|
+
task?: string;
|
|
44
37
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
ready?: boolean;
|
|
53
|
-
/** Agent ready details (only set when waitForReady is true and spawn succeeded) */
|
|
54
|
-
readyInfo?: AgentReadyPayload;
|
|
38
|
+
export interface SendMessageInput {
|
|
39
|
+
to: string;
|
|
40
|
+
text: string;
|
|
41
|
+
from?: string;
|
|
42
|
+
threadId?: string;
|
|
43
|
+
priority?: number;
|
|
44
|
+
data?: Record<string, unknown>;
|
|
55
45
|
}
|
|
56
|
-
export interface
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
/** Agent name */
|
|
60
|
-
agentName: string;
|
|
61
|
-
/** Entity type: 'agent' (default) or 'user' */
|
|
62
|
-
entityType?: EntityType;
|
|
63
|
-
/** CLI identifier (claude, codex, gemini, etc.) */
|
|
46
|
+
export interface ListAgent {
|
|
47
|
+
name: string;
|
|
48
|
+
runtime: AgentRuntime;
|
|
64
49
|
cli?: string;
|
|
65
|
-
/** Program identifier */
|
|
66
|
-
program?: string;
|
|
67
|
-
/** Model identifier */
|
|
68
50
|
model?: string;
|
|
69
|
-
/** Task description */
|
|
70
|
-
task?: string;
|
|
71
|
-
/** Working directory */
|
|
72
|
-
workingDirectory?: string;
|
|
73
|
-
/** Team name */
|
|
74
51
|
team?: string;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
avatarUrl?: string;
|
|
79
|
-
/** Suppress console logging */
|
|
80
|
-
quiet?: boolean;
|
|
81
|
-
/** Auto-reconnect on disconnect */
|
|
82
|
-
reconnect: boolean;
|
|
83
|
-
/** Max reconnect attempts */
|
|
84
|
-
maxReconnectAttempts: number;
|
|
85
|
-
/** Initial reconnect delay (ms) */
|
|
86
|
-
reconnectDelayMs: number;
|
|
87
|
-
/** Max reconnect delay (ms) */
|
|
88
|
-
reconnectMaxDelayMs: number;
|
|
89
|
-
/**
|
|
90
|
-
* Mark this client as a system component.
|
|
91
|
-
* Allows using reserved agent names (Dashboard, cli, system).
|
|
92
|
-
* Should only be set by trusted system components.
|
|
93
|
-
*/
|
|
94
|
-
_isSystemComponent?: boolean;
|
|
52
|
+
channels: string[];
|
|
53
|
+
parent?: string;
|
|
54
|
+
pid?: number;
|
|
95
55
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
private
|
|
107
|
-
private
|
|
108
|
-
private
|
|
109
|
-
private
|
|
110
|
-
private
|
|
111
|
-
private
|
|
112
|
-
private
|
|
113
|
-
private
|
|
114
|
-
private
|
|
115
|
-
private
|
|
116
|
-
private
|
|
117
|
-
private
|
|
118
|
-
private
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
*/
|
|
142
|
-
connect(): Promise<void>;
|
|
143
|
-
/**
|
|
144
|
-
* Disconnect from the relay daemon.
|
|
145
|
-
*/
|
|
146
|
-
disconnect(): void;
|
|
147
|
-
/**
|
|
148
|
-
* Permanently destroy the client.
|
|
149
|
-
*/
|
|
150
|
-
destroy(): void;
|
|
151
|
-
/**
|
|
152
|
-
* Send a message to another agent.
|
|
153
|
-
*/
|
|
154
|
-
sendMessage(to: string, body: string, kind?: PayloadKind, data?: Record<string, unknown>, thread?: string, meta?: SendMeta): boolean;
|
|
155
|
-
/**
|
|
156
|
-
* Send an ACK for a delivered message.
|
|
157
|
-
*/
|
|
158
|
-
sendAck(payload: AckPayload): boolean;
|
|
159
|
-
/**
|
|
160
|
-
* Send a message and wait for ACK response.
|
|
161
|
-
*/
|
|
162
|
-
sendAndWait(to: string, body: string, options?: SyncOptions): Promise<AckPayload>;
|
|
163
|
-
/**
|
|
164
|
-
* Send a request to another agent and wait for their response.
|
|
165
|
-
*
|
|
166
|
-
* This implements a request/response pattern where the message is sent with
|
|
167
|
-
* a correlation ID, and the method waits for the target agent to respond
|
|
168
|
-
* with a message containing that correlation ID.
|
|
169
|
-
*
|
|
170
|
-
* @example
|
|
171
|
-
* ```typescript
|
|
172
|
-
* // Simple request
|
|
173
|
-
* const response = await client.request('Worker', 'Process this task');
|
|
174
|
-
* console.log(response.body); // Worker's response
|
|
175
|
-
*
|
|
176
|
-
* // With options
|
|
177
|
-
* const response = await client.request('Worker', 'Process task', {
|
|
178
|
-
* timeout: 60000,
|
|
179
|
-
* data: { taskId: '123', priority: 'high' },
|
|
180
|
-
* thread: 'task-thread-1',
|
|
181
|
-
* });
|
|
182
|
-
* ```
|
|
183
|
-
*
|
|
184
|
-
* @param to - Target agent name
|
|
185
|
-
* @param body - Request message body
|
|
186
|
-
* @param options - Request options (timeout, data, thread, kind)
|
|
187
|
-
* @returns Promise that resolves with the response from the target agent
|
|
188
|
-
* @throws Error if client is not ready, send fails, timeout occurs, or agent disconnects
|
|
189
|
-
*/
|
|
190
|
-
request(to: string, body: string, options?: RequestOptions): Promise<RequestResponse>;
|
|
191
|
-
/**
|
|
192
|
-
* Respond to a request from another agent.
|
|
193
|
-
*
|
|
194
|
-
* This is a convenience method for responding to messages that have a
|
|
195
|
-
* correlation ID. The response will be routed back to the requesting agent.
|
|
196
|
-
*
|
|
197
|
-
* @param correlationId - The correlation ID from the original request (from data._correlationId or meta.replyTo)
|
|
198
|
-
* @param to - Target agent (the one who sent the original request)
|
|
199
|
-
* @param body - Response body
|
|
200
|
-
* @param data - Optional structured data to include in the response
|
|
201
|
-
* @returns true if the message was sent
|
|
202
|
-
*/
|
|
203
|
-
respond(correlationId: string, to: string, body: string, data?: Record<string, unknown>): boolean;
|
|
204
|
-
/**
|
|
205
|
-
* Broadcast a message to all agents.
|
|
206
|
-
*/
|
|
207
|
-
broadcast(body: string, kind?: PayloadKind, data?: Record<string, unknown>): boolean;
|
|
208
|
-
/**
|
|
209
|
-
* Subscribe to a topic.
|
|
210
|
-
*/
|
|
211
|
-
subscribe(topic: string): boolean;
|
|
212
|
-
/**
|
|
213
|
-
* Unsubscribe from a topic.
|
|
214
|
-
*/
|
|
215
|
-
unsubscribe(topic: string): boolean;
|
|
216
|
-
/**
|
|
217
|
-
* Bind as a shadow to a primary agent.
|
|
218
|
-
*/
|
|
219
|
-
bindAsShadow(primaryAgent: string, options?: {
|
|
220
|
-
speakOn?: SpeakOnTrigger[];
|
|
221
|
-
receiveIncoming?: boolean;
|
|
222
|
-
receiveOutgoing?: boolean;
|
|
223
|
-
}): boolean;
|
|
224
|
-
/**
|
|
225
|
-
* Unbind from a primary agent.
|
|
226
|
-
*/
|
|
227
|
-
unbindAsShadow(primaryAgent: string): boolean;
|
|
228
|
-
/**
|
|
229
|
-
* Send log output to the daemon for dashboard streaming.
|
|
230
|
-
*/
|
|
231
|
-
sendLog(data: string): boolean;
|
|
232
|
-
/**
|
|
233
|
-
* Spawn a new agent via the relay daemon.
|
|
234
|
-
* @param options - Spawn options
|
|
235
|
-
* @param options.name - Name for the new agent
|
|
236
|
-
* @param options.cli - CLI to use (claude, codex, gemini, etc.)
|
|
237
|
-
* @param options.task - Task description
|
|
238
|
-
* @param options.cwd - Working directory
|
|
239
|
-
* @param options.team - Team name
|
|
240
|
-
* @param options.interactive - Interactive mode
|
|
241
|
-
* @param options.shadowMode - Shadow execution mode ('subagent' or 'process')
|
|
242
|
-
* @param options.shadowOf - Spawn as shadow of this agent
|
|
243
|
-
* @param options.shadowAgent - Shadow agent profile to use (for subagent mode)
|
|
244
|
-
* @param options.shadowTriggers - When to trigger the shadow (for subagent mode)
|
|
245
|
-
* @param options.shadowSpeakOn - Shadow speak-on triggers
|
|
246
|
-
* @param options.waitForReady - Wait for the agent to be ready before resolving (default: false)
|
|
247
|
-
* @param options.readyTimeoutMs - Timeout for agent to become ready (default: 60000ms)
|
|
248
|
-
* @param timeoutMs - Timeout for spawn operation (default: 60000ms)
|
|
249
|
-
* @returns Spawn result. When waitForReady is true, includes `ready` and `readyInfo` fields.
|
|
250
|
-
*/
|
|
251
|
-
spawn(options: {
|
|
56
|
+
export declare class AgentRelayProtocolError extends Error {
|
|
57
|
+
code: string;
|
|
58
|
+
retryable: boolean;
|
|
59
|
+
data?: unknown;
|
|
60
|
+
constructor(payload: ProtocolError);
|
|
61
|
+
}
|
|
62
|
+
export declare class AgentRelayProcessError extends Error {
|
|
63
|
+
constructor(message: string);
|
|
64
|
+
}
|
|
65
|
+
export declare class AgentRelayClient {
|
|
66
|
+
private readonly options;
|
|
67
|
+
private child?;
|
|
68
|
+
private stdoutRl?;
|
|
69
|
+
private stderrRl?;
|
|
70
|
+
private lastStderrLine?;
|
|
71
|
+
private requestSeq;
|
|
72
|
+
private pending;
|
|
73
|
+
private startingPromise?;
|
|
74
|
+
private eventListeners;
|
|
75
|
+
private stderrListeners;
|
|
76
|
+
private eventBuffer;
|
|
77
|
+
private maxBufferSize;
|
|
78
|
+
private exitPromise?;
|
|
79
|
+
/** The workspace key returned by the broker in its hello_ack response. */
|
|
80
|
+
workspaceKey?: string;
|
|
81
|
+
constructor(options?: AgentRelayClientOptions);
|
|
82
|
+
static start(options?: AgentRelayClientOptions): Promise<AgentRelayClient>;
|
|
83
|
+
onEvent(listener: (event: BrokerEvent) => void): () => void;
|
|
84
|
+
queryEvents(filter?: {
|
|
85
|
+
kind?: string;
|
|
86
|
+
name?: string;
|
|
87
|
+
since?: number;
|
|
88
|
+
limit?: number;
|
|
89
|
+
}): BrokerEvent[];
|
|
90
|
+
getLastEvent(kind: string, name?: string): BrokerEvent | undefined;
|
|
91
|
+
onBrokerStderr(listener: (line: string) => void): () => void;
|
|
92
|
+
start(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Pre-register a batch of agents with Relaycast before their steps execute.
|
|
95
|
+
* The broker warms its token cache in parallel; subsequent spawn_agent calls
|
|
96
|
+
* hit the cache rather than waiting on individual HTTP registrations.
|
|
97
|
+
* Fire-and-forget from the caller's perspective — broker responds immediately
|
|
98
|
+
* and registers in the background.
|
|
99
|
+
*/
|
|
100
|
+
preflightAgents(agents: Array<{
|
|
252
101
|
name: string;
|
|
253
|
-
cli: string;
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
/** Wait for the agent to complete connection before resolving */
|
|
272
|
-
waitForReady?: boolean;
|
|
273
|
-
/** Timeout for agent to become ready (default: 60000ms). Only used when waitForReady is true. */
|
|
274
|
-
readyTimeoutMs?: number;
|
|
275
|
-
}, timeoutMs?: number): Promise<SpawnResult>;
|
|
276
|
-
/**
|
|
277
|
-
* Wait for an agent to become ready (complete HELLO/WELCOME handshake).
|
|
278
|
-
* This is useful when you want to wait for an agent that was spawned through
|
|
279
|
-
* another mechanism, or to verify an agent is connected before sending messages.
|
|
280
|
-
*
|
|
281
|
-
* @example
|
|
282
|
-
* ```typescript
|
|
283
|
-
* // Wait for an agent that might be spawning
|
|
284
|
-
* try {
|
|
285
|
-
* const readyInfo = await client.waitForAgentReady('Worker', 30000);
|
|
286
|
-
* console.log(`Worker is ready: ${readyInfo.cli}`);
|
|
287
|
-
* } catch (err) {
|
|
288
|
-
* console.error('Worker did not become ready in time');
|
|
289
|
-
* }
|
|
290
|
-
* ```
|
|
291
|
-
*
|
|
292
|
-
* @param name - Agent name to wait for
|
|
293
|
-
* @param timeoutMs - Timeout in milliseconds (default: 60000ms)
|
|
294
|
-
* @returns Promise that resolves with AgentReadyPayload when the agent connects
|
|
295
|
-
* @throws Error if the agent doesn't become ready within the timeout
|
|
296
|
-
*/
|
|
297
|
-
waitForAgentReady(name: string, timeoutMs?: number): Promise<AgentReadyPayload>;
|
|
298
|
-
/**
|
|
299
|
-
* Release (terminate) an agent via the relay daemon.
|
|
300
|
-
* @param name - Agent name to release
|
|
301
|
-
* @param timeoutMs - Timeout for release operation (default: 10000ms)
|
|
302
|
-
*/
|
|
303
|
-
release(name: string, reason?: string, timeoutMs?: number): Promise<ReleaseResultPayload>;
|
|
304
|
-
/**
|
|
305
|
-
* Send input data to a spawned agent's PTY.
|
|
306
|
-
* @param name - Agent name to send input to
|
|
307
|
-
* @param data - Input data to send
|
|
308
|
-
* @param timeoutMs - Timeout for the operation (default: 10000ms)
|
|
309
|
-
*/
|
|
310
|
-
sendWorkerInput(name: string, data: string, timeoutMs?: number): Promise<SendInputResultPayload>;
|
|
311
|
-
/**
|
|
312
|
-
* Change the model of a running spawned agent.
|
|
313
|
-
* The command waits for the agent to be idle before sending the model switch command.
|
|
314
|
-
*
|
|
315
|
-
* @param name - Agent name to switch model for
|
|
316
|
-
* @param model - Target model (e.g., 'opus', 'sonnet', 'haiku')
|
|
317
|
-
* @param options - Options including idle wait timeout
|
|
318
|
-
* @param operationTimeoutMs - Timeout for the overall protocol operation (default: 45000ms)
|
|
319
|
-
*/
|
|
320
|
-
setWorkerModel(name: string, model: string, options?: {
|
|
102
|
+
cli: string | AgentRuntime;
|
|
103
|
+
}>): Promise<void>;
|
|
104
|
+
spawnPty(input: SpawnPtyInput): Promise<{
|
|
105
|
+
name: string;
|
|
106
|
+
runtime: AgentRuntime;
|
|
107
|
+
}>;
|
|
108
|
+
spawnHeadlessClaude(input: SpawnHeadlessClaudeInput): Promise<{
|
|
109
|
+
name: string;
|
|
110
|
+
runtime: AgentRuntime;
|
|
111
|
+
}>;
|
|
112
|
+
release(name: string, reason?: string): Promise<{
|
|
113
|
+
name: string;
|
|
114
|
+
}>;
|
|
115
|
+
sendInput(name: string, data: string): Promise<{
|
|
116
|
+
name: string;
|
|
117
|
+
bytes_written: number;
|
|
118
|
+
}>;
|
|
119
|
+
setModel(name: string, model: string, opts?: {
|
|
321
120
|
timeoutMs?: number;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
/**
|
|
353
|
-
* Send a message to a channel.
|
|
354
|
-
* @param channel - Channel name
|
|
355
|
-
* @param body - Message content
|
|
356
|
-
* @param options - Optional thread, mentions, attachments
|
|
357
|
-
*/
|
|
358
|
-
sendChannelMessage(channel: string, body: string, options?: {
|
|
359
|
-
thread?: string;
|
|
360
|
-
mentions?: string[];
|
|
361
|
-
attachments?: MessageAttachment[];
|
|
362
|
-
data?: Record<string, unknown>;
|
|
363
|
-
}): boolean;
|
|
364
|
-
/**
|
|
365
|
-
* Create a consensus proposal.
|
|
366
|
-
*
|
|
367
|
-
* The proposal will be broadcast to all participants. They can vote using
|
|
368
|
-
* the `vote()` method. Results are delivered via `onMessage` callback.
|
|
369
|
-
*
|
|
370
|
-
* @example
|
|
371
|
-
* ```typescript
|
|
372
|
-
* client.createProposal({
|
|
373
|
-
* title: 'Approve API design',
|
|
374
|
-
* description: 'Should we proceed with the REST API design?',
|
|
375
|
-
* participants: ['Developer', 'Reviewer', 'Lead'],
|
|
376
|
-
* consensusType: 'majority',
|
|
377
|
-
* });
|
|
378
|
-
* ```
|
|
379
|
-
*
|
|
380
|
-
* @param options - Proposal options
|
|
381
|
-
* @returns true if the message was sent
|
|
382
|
-
*/
|
|
383
|
-
createProposal(options: CreateProposalOptions): boolean;
|
|
384
|
-
/**
|
|
385
|
-
* Vote on a consensus proposal.
|
|
386
|
-
*
|
|
387
|
-
* @example
|
|
388
|
-
* ```typescript
|
|
389
|
-
* // Approve with a reason
|
|
390
|
-
* client.vote({
|
|
391
|
-
* proposalId: 'prop_123',
|
|
392
|
-
* value: 'approve',
|
|
393
|
-
* reason: 'Looks good to me',
|
|
394
|
-
* });
|
|
395
|
-
*
|
|
396
|
-
* // Reject without reason
|
|
397
|
-
* client.vote({ proposalId: 'prop_123', value: 'reject' });
|
|
398
|
-
* ```
|
|
399
|
-
*
|
|
400
|
-
* @param options - Vote options
|
|
401
|
-
* @returns true if the message was sent
|
|
402
|
-
*/
|
|
403
|
-
vote(options: VoteOptions): boolean;
|
|
404
|
-
/**
|
|
405
|
-
* Send a query to the daemon and wait for a response.
|
|
406
|
-
* @internal
|
|
407
|
-
*/
|
|
408
|
-
private query;
|
|
409
|
-
/**
|
|
410
|
-
* Get daemon status information.
|
|
411
|
-
* @returns Daemon status including version, uptime, and counts
|
|
412
|
-
*/
|
|
413
|
-
getStatus(): Promise<StatusResponsePayload>;
|
|
414
|
-
/**
|
|
415
|
-
* Get messages from the inbox.
|
|
416
|
-
* @param options - Filter options
|
|
417
|
-
* @param options.limit - Maximum number of messages to return
|
|
418
|
-
* @param options.unreadOnly - Only return unread messages
|
|
419
|
-
* @param options.from - Filter by sender
|
|
420
|
-
* @param options.channel - Filter by channel
|
|
421
|
-
* @returns Array of inbox messages
|
|
422
|
-
*/
|
|
423
|
-
getInbox(options?: {
|
|
424
|
-
limit?: number;
|
|
425
|
-
unreadOnly?: boolean;
|
|
426
|
-
from?: string;
|
|
427
|
-
channel?: string;
|
|
428
|
-
}): Promise<InboxMessage[]>;
|
|
429
|
-
/**
|
|
430
|
-
* Query all messages (not filtered by recipient).
|
|
431
|
-
* Used by dashboard to get message history.
|
|
432
|
-
* @param options - Query options
|
|
433
|
-
* @param options.limit - Maximum number of messages to return (default: 100)
|
|
434
|
-
* @param options.sinceTs - Only return messages after this timestamp
|
|
435
|
-
* @param options.from - Filter by sender
|
|
436
|
-
* @param options.to - Filter by recipient
|
|
437
|
-
* @param options.thread - Filter by thread ID
|
|
438
|
-
* @param options.order - Sort order ('asc' or 'desc', default: 'desc')
|
|
439
|
-
* @returns Array of messages
|
|
440
|
-
*/
|
|
441
|
-
queryMessages(options?: {
|
|
442
|
-
limit?: number;
|
|
443
|
-
sinceTs?: number;
|
|
444
|
-
from?: string;
|
|
445
|
-
to?: string;
|
|
446
|
-
thread?: string;
|
|
447
|
-
order?: 'asc' | 'desc';
|
|
448
|
-
}): Promise<MessagesResponsePayload['messages']>;
|
|
449
|
-
/**
|
|
450
|
-
* List online agents.
|
|
451
|
-
* @param options - Filter options
|
|
452
|
-
* @param options.includeIdle - Include idle agents (default: true)
|
|
453
|
-
* @param options.project - Filter by project
|
|
454
|
-
* @returns Array of agent info
|
|
455
|
-
*/
|
|
456
|
-
listAgents(options?: {
|
|
457
|
-
includeIdle?: boolean;
|
|
458
|
-
project?: string;
|
|
459
|
-
}): Promise<AgentInfo[]>;
|
|
460
|
-
/**
|
|
461
|
-
* Get system health information.
|
|
462
|
-
* @param options - Include options
|
|
463
|
-
* @param options.includeCrashes - Include crash history (default: true)
|
|
464
|
-
* @param options.includeAlerts - Include alerts (default: true)
|
|
465
|
-
* @returns Health information including score, issues, and recommendations
|
|
466
|
-
*/
|
|
467
|
-
getHealth(options?: {
|
|
468
|
-
includeCrashes?: boolean;
|
|
469
|
-
includeAlerts?: boolean;
|
|
470
|
-
}): Promise<HealthResponsePayload>;
|
|
471
|
-
/**
|
|
472
|
-
* Get resource metrics for agents.
|
|
473
|
-
* @param options - Filter options
|
|
474
|
-
* @param options.agent - Filter to a specific agent
|
|
475
|
-
* @returns Metrics including memory, CPU, and system info
|
|
476
|
-
*/
|
|
477
|
-
getMetrics(options?: {
|
|
478
|
-
agent?: string;
|
|
479
|
-
}): Promise<MetricsResponsePayload>;
|
|
480
|
-
/**
|
|
481
|
-
* List only currently connected agents (not historical/registered agents).
|
|
482
|
-
* Use this instead of listAgents() when you need accurate liveness information.
|
|
483
|
-
* @param options - Filter options
|
|
484
|
-
* @param options.project - Filter by project
|
|
485
|
-
* @returns Array of currently connected agent info
|
|
486
|
-
*/
|
|
487
|
-
listConnectedAgents(options?: {
|
|
488
|
-
project?: string;
|
|
489
|
-
}): Promise<AgentInfo[]>;
|
|
490
|
-
/**
|
|
491
|
-
* Remove an agent from the registry (sessions, agents.json).
|
|
492
|
-
* Use this to clean up stale agents that are no longer needed.
|
|
493
|
-
* @param name - Agent name to remove
|
|
494
|
-
* @param options - Removal options
|
|
495
|
-
* @param options.removeMessages - Also remove all messages from/to this agent (default: false)
|
|
496
|
-
* @returns Result indicating if the agent was removed
|
|
497
|
-
*/
|
|
498
|
-
removeAgent(name: string, options?: {
|
|
499
|
-
removeMessages?: boolean;
|
|
500
|
-
}): Promise<RemoveAgentResponsePayload>;
|
|
501
|
-
private setState;
|
|
502
|
-
private sendHello;
|
|
503
|
-
private send;
|
|
504
|
-
private flushWrites;
|
|
505
|
-
private handleData;
|
|
506
|
-
private processFrame;
|
|
507
|
-
private handleWelcome;
|
|
508
|
-
private handleDeliver;
|
|
509
|
-
/**
|
|
510
|
-
* Extract correlation ID from a delivered message.
|
|
511
|
-
* Checks both payload_meta.replyTo and payload.data._correlationId
|
|
512
|
-
*/
|
|
513
|
-
private extractCorrelationId;
|
|
514
|
-
private handleChannelMessage;
|
|
515
|
-
private handleAck;
|
|
516
|
-
private handleSpawnResult;
|
|
517
|
-
private handleReleaseResult;
|
|
518
|
-
private handleSendInputResult;
|
|
519
|
-
private handleSetModelResult;
|
|
520
|
-
private handleListWorkersResult;
|
|
521
|
-
private handleAgentReady;
|
|
522
|
-
private handleQueryResponse;
|
|
523
|
-
private handlePing;
|
|
524
|
-
private handleErrorFrame;
|
|
525
|
-
private handleDisconnect;
|
|
526
|
-
private handleError;
|
|
527
|
-
private rejectPendingSyncAcks;
|
|
528
|
-
private rejectPendingSpawns;
|
|
529
|
-
private rejectPendingReleases;
|
|
530
|
-
private rejectPendingSendInputs;
|
|
531
|
-
private rejectPendingSetModels;
|
|
532
|
-
private rejectPendingListWorkers;
|
|
533
|
-
private rejectPendingQueries;
|
|
534
|
-
private rejectPendingRequests;
|
|
535
|
-
private rejectPendingAgentReady;
|
|
536
|
-
private scheduleReconnect;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
name: string;
|
|
123
|
+
model: string;
|
|
124
|
+
success: boolean;
|
|
125
|
+
}>;
|
|
126
|
+
getMetrics(agent?: string): Promise<{
|
|
127
|
+
agents: Array<{
|
|
128
|
+
name: string;
|
|
129
|
+
pid: number;
|
|
130
|
+
memory_bytes: number;
|
|
131
|
+
uptime_secs: number;
|
|
132
|
+
}>;
|
|
133
|
+
broker?: BrokerStats;
|
|
134
|
+
}>;
|
|
135
|
+
getCrashInsights(): Promise<CrashInsightsResponse>;
|
|
136
|
+
sendMessage(input: SendMessageInput): Promise<{
|
|
137
|
+
event_id: string;
|
|
138
|
+
targets: string[];
|
|
139
|
+
}>;
|
|
140
|
+
listAgents(): Promise<ListAgent[]>;
|
|
141
|
+
getStatus(): Promise<BrokerStatus>;
|
|
142
|
+
shutdown(): Promise<void>;
|
|
143
|
+
waitForExit(): Promise<void>;
|
|
144
|
+
private startInternal;
|
|
145
|
+
private disposeProcessHandles;
|
|
146
|
+
private failAllPending;
|
|
147
|
+
private handleStdoutLine;
|
|
148
|
+
private requestHello;
|
|
149
|
+
private requestOk;
|
|
150
|
+
private sendRequest;
|
|
537
151
|
}
|
|
538
152
|
//# sourceMappingURL=client.d.ts.map
|