agent-relay 2.2.24 → 2.3.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.
Files changed (116) hide show
  1. package/package.json +64 -21
  2. package/packages/acp-bridge/package.json +2 -2
  3. package/packages/api-types/package.json +1 -1
  4. package/packages/benchmark/package.json +5 -5
  5. package/packages/bridge/package.json +7 -7
  6. package/packages/cli-tester/package.json +1 -1
  7. package/packages/config/package.json +2 -2
  8. package/packages/continuity/package.json +2 -2
  9. package/packages/daemon/package.json +12 -12
  10. package/packages/hooks/package.json +4 -4
  11. package/packages/mcp/package.json +5 -5
  12. package/packages/memory/package.json +2 -2
  13. package/packages/policy/package.json +2 -2
  14. package/packages/protocol/package.json +1 -1
  15. package/packages/resiliency/package.json +1 -1
  16. package/packages/sdk/package.json +3 -3
  17. package/packages/sdk-ts/README.md +65 -0
  18. package/packages/sdk-ts/dist/__tests__/integration.test.d.ts +2 -0
  19. package/packages/sdk-ts/dist/__tests__/integration.test.d.ts.map +1 -0
  20. package/packages/sdk-ts/dist/__tests__/integration.test.js +139 -0
  21. package/packages/sdk-ts/dist/__tests__/integration.test.js.map +1 -0
  22. package/packages/sdk-ts/dist/__tests__/quickstart.test.d.ts +2 -0
  23. package/packages/sdk-ts/dist/__tests__/quickstart.test.d.ts.map +1 -0
  24. package/packages/sdk-ts/dist/__tests__/quickstart.test.js +176 -0
  25. package/packages/sdk-ts/dist/__tests__/quickstart.test.js.map +1 -0
  26. package/packages/sdk-ts/dist/browser.d.ts +16 -0
  27. package/packages/sdk-ts/dist/browser.d.ts.map +1 -0
  28. package/packages/sdk-ts/dist/browser.js +19 -0
  29. package/packages/sdk-ts/dist/browser.js.map +1 -0
  30. package/packages/sdk-ts/dist/client.d.ts +91 -0
  31. package/packages/sdk-ts/dist/client.d.ts.map +1 -0
  32. package/packages/sdk-ts/dist/client.js +360 -0
  33. package/packages/sdk-ts/dist/client.js.map +1 -0
  34. package/packages/sdk-ts/dist/consensus-helpers.d.ts +103 -0
  35. package/packages/sdk-ts/dist/consensus-helpers.d.ts.map +1 -0
  36. package/packages/sdk-ts/dist/consensus-helpers.js +147 -0
  37. package/packages/sdk-ts/dist/consensus-helpers.js.map +1 -0
  38. package/packages/sdk-ts/dist/consensus.d.ts +72 -0
  39. package/packages/sdk-ts/dist/consensus.d.ts.map +1 -0
  40. package/packages/sdk-ts/dist/consensus.js +378 -0
  41. package/packages/sdk-ts/dist/consensus.js.map +1 -0
  42. package/packages/sdk-ts/dist/examples/demo.d.ts +2 -0
  43. package/packages/sdk-ts/dist/examples/demo.d.ts.map +1 -0
  44. package/packages/sdk-ts/dist/examples/demo.js +63 -0
  45. package/packages/sdk-ts/dist/examples/demo.js.map +1 -0
  46. package/packages/sdk-ts/dist/examples/example.d.ts +2 -0
  47. package/packages/sdk-ts/dist/examples/example.d.ts.map +1 -0
  48. package/packages/sdk-ts/dist/examples/example.js +80 -0
  49. package/packages/sdk-ts/dist/examples/example.js.map +1 -0
  50. package/packages/sdk-ts/dist/examples/quickstart.d.ts +2 -0
  51. package/packages/sdk-ts/dist/examples/quickstart.d.ts.map +1 -0
  52. package/packages/sdk-ts/dist/examples/quickstart.js +56 -0
  53. package/packages/sdk-ts/dist/examples/quickstart.js.map +1 -0
  54. package/packages/sdk-ts/dist/examples/ralph-loop.d.ts +2 -0
  55. package/packages/sdk-ts/dist/examples/ralph-loop.d.ts.map +1 -0
  56. package/packages/sdk-ts/dist/examples/ralph-loop.js +281 -0
  57. package/packages/sdk-ts/dist/examples/ralph-loop.js.map +1 -0
  58. package/packages/sdk-ts/dist/index.d.ts +9 -0
  59. package/packages/sdk-ts/dist/index.d.ts.map +1 -0
  60. package/packages/sdk-ts/dist/index.js +9 -0
  61. package/packages/sdk-ts/dist/index.js.map +1 -0
  62. package/packages/sdk-ts/dist/logs.d.ts +47 -0
  63. package/packages/sdk-ts/dist/logs.d.ts.map +1 -0
  64. package/packages/sdk-ts/dist/logs.js +137 -0
  65. package/packages/sdk-ts/dist/logs.js.map +1 -0
  66. package/packages/sdk-ts/dist/protocol.d.ts +249 -0
  67. package/packages/sdk-ts/dist/protocol.d.ts.map +1 -0
  68. package/packages/sdk-ts/dist/protocol.js +2 -0
  69. package/packages/sdk-ts/dist/protocol.js.map +1 -0
  70. package/packages/sdk-ts/dist/pty.d.ts +8 -0
  71. package/packages/sdk-ts/dist/pty.d.ts.map +1 -0
  72. package/packages/sdk-ts/dist/pty.js +14 -0
  73. package/packages/sdk-ts/dist/pty.js.map +1 -0
  74. package/packages/sdk-ts/dist/relay.d.ts +118 -0
  75. package/packages/sdk-ts/dist/relay.d.ts.map +1 -0
  76. package/packages/sdk-ts/dist/relay.js +355 -0
  77. package/packages/sdk-ts/dist/relay.js.map +1 -0
  78. package/packages/sdk-ts/dist/relaycast.d.ts +57 -0
  79. package/packages/sdk-ts/dist/relaycast.d.ts.map +1 -0
  80. package/packages/sdk-ts/dist/relaycast.js +110 -0
  81. package/packages/sdk-ts/dist/relaycast.js.map +1 -0
  82. package/packages/sdk-ts/dist/shadow.d.ts +100 -0
  83. package/packages/sdk-ts/dist/shadow.d.ts.map +1 -0
  84. package/packages/sdk-ts/dist/shadow.js +174 -0
  85. package/packages/sdk-ts/dist/shadow.js.map +1 -0
  86. package/packages/sdk-ts/package.json +75 -0
  87. package/packages/sdk-ts/scripts/bundle-agent-relay.mjs +53 -0
  88. package/packages/sdk-ts/src/__tests__/integration.test.ts +170 -0
  89. package/packages/sdk-ts/src/__tests__/quickstart.test.ts +198 -0
  90. package/packages/sdk-ts/src/browser.ts +57 -0
  91. package/packages/sdk-ts/src/client.ts +491 -0
  92. package/packages/sdk-ts/src/consensus-helpers.ts +253 -0
  93. package/packages/sdk-ts/src/consensus.ts +506 -0
  94. package/packages/sdk-ts/src/examples/demo.ts +88 -0
  95. package/packages/sdk-ts/src/examples/example.ts +91 -0
  96. package/packages/sdk-ts/src/examples/quickstart.ts +72 -0
  97. package/packages/sdk-ts/src/examples/ralph-loop.ts +352 -0
  98. package/packages/sdk-ts/src/examples/sample-prd.json +37 -0
  99. package/packages/sdk-ts/src/index.ts +8 -0
  100. package/packages/sdk-ts/src/logs.ts +163 -0
  101. package/packages/sdk-ts/src/protocol.ts +266 -0
  102. package/packages/sdk-ts/src/pty.ts +16 -0
  103. package/packages/sdk-ts/src/relay.ts +454 -0
  104. package/packages/sdk-ts/src/relaycast.ts +143 -0
  105. package/packages/sdk-ts/src/shadow.ts +230 -0
  106. package/packages/sdk-ts/tsconfig.json +16 -0
  107. package/packages/spawner/package.json +1 -1
  108. package/packages/state/package.json +1 -1
  109. package/packages/storage/package.json +2 -2
  110. package/packages/telemetry/package.json +1 -1
  111. package/packages/trajectory/package.json +2 -2
  112. package/packages/user-directory/package.json +2 -2
  113. package/packages/utils/package.json +3 -3
  114. package/packages/wrapper/package.json +6 -6
  115. package/packages/mcp/SPEC.md +0 -1922
  116. package/packages/mcp/STAFFING_PLAN.md +0 -294
@@ -0,0 +1,266 @@
1
+ export const PROTOCOL_VERSION = 1 as const;
2
+
3
+ export type AgentRuntime = "pty" | "headless_claude";
4
+
5
+ export interface AgentSpec {
6
+ name: string;
7
+ runtime: AgentRuntime;
8
+ cli?: string;
9
+ args?: string[];
10
+ channels?: string[];
11
+ }
12
+
13
+ export interface RelayDelivery {
14
+ delivery_id: string;
15
+ event_id: string;
16
+ from: string;
17
+ target: string;
18
+ body: string;
19
+ thread_id?: string;
20
+ priority?: number;
21
+ }
22
+
23
+ export interface ProtocolEnvelope<TPayload> {
24
+ v: number;
25
+ type: string;
26
+ request_id?: string;
27
+ payload: TPayload;
28
+ }
29
+
30
+ export type SdkToBroker =
31
+ | {
32
+ type: "hello";
33
+ payload: { client_name: string; client_version: string };
34
+ }
35
+ | {
36
+ type: "spawn_agent";
37
+ payload: { agent: AgentSpec };
38
+ }
39
+ | {
40
+ type: "send_message";
41
+ payload: {
42
+ to: string;
43
+ text: string;
44
+ from?: string;
45
+ thread_id?: string;
46
+ priority?: number;
47
+ };
48
+ }
49
+ | {
50
+ type: "release_agent";
51
+ payload: { name: string };
52
+ }
53
+ | {
54
+ type: "list_agents";
55
+ payload: Record<string, never>;
56
+ }
57
+ | {
58
+ type: "get_status";
59
+ payload: Record<string, never>;
60
+ }
61
+ | {
62
+ type: "shutdown";
63
+ payload: Record<string, never>;
64
+ };
65
+
66
+ export interface PendingDeliveryInfo {
67
+ delivery_id: string;
68
+ worker_name: string;
69
+ event_id: string;
70
+ attempts: number;
71
+ }
72
+
73
+ export interface BrokerStatus {
74
+ agent_count: number;
75
+ agents: Array<{
76
+ name: string;
77
+ runtime: AgentRuntime;
78
+ channels: string[];
79
+ parent?: string;
80
+ pid?: number;
81
+ }>;
82
+ pending_delivery_count: number;
83
+ pending_deliveries: PendingDeliveryInfo[];
84
+ }
85
+
86
+ export interface ProtocolError {
87
+ code: string;
88
+ message: string;
89
+ retryable: boolean;
90
+ data?: unknown;
91
+ }
92
+
93
+ export type BrokerEvent =
94
+ | {
95
+ kind: "agent_spawned";
96
+ name: string;
97
+ runtime: AgentRuntime;
98
+ parent?: string;
99
+ }
100
+ | {
101
+ kind: "agent_released";
102
+ name: string;
103
+ }
104
+ | {
105
+ kind: "agent_exited";
106
+ name: string;
107
+ code?: number;
108
+ signal?: string;
109
+ }
110
+ | {
111
+ kind: "relay_inbound";
112
+ event_id: string;
113
+ from: string;
114
+ target: string;
115
+ body: string;
116
+ thread_id?: string;
117
+ }
118
+ | {
119
+ kind: "worker_stream";
120
+ name: string;
121
+ stream: string;
122
+ chunk: string;
123
+ }
124
+ | {
125
+ kind: "delivery_retry";
126
+ name: string;
127
+ delivery_id: string;
128
+ event_id: string;
129
+ attempts: number;
130
+ }
131
+ | {
132
+ kind: "delivery_dropped";
133
+ name: string;
134
+ count: number;
135
+ reason: string;
136
+ }
137
+ | {
138
+ kind: "delivery_queued";
139
+ name: string;
140
+ delivery_id: string;
141
+ event_id: string;
142
+ timestamp?: unknown;
143
+ }
144
+ | {
145
+ kind: "delivery_injected";
146
+ name: string;
147
+ delivery_id: string;
148
+ event_id: string;
149
+ timestamp?: unknown;
150
+ }
151
+ | {
152
+ kind: "delivery_verified";
153
+ name: string;
154
+ delivery_id: string;
155
+ event_id: string;
156
+ }
157
+ | {
158
+ kind: "delivery_failed";
159
+ name: string;
160
+ delivery_id: string;
161
+ event_id: string;
162
+ reason: string;
163
+ }
164
+ | {
165
+ kind: "delivery_active";
166
+ name: string;
167
+ delivery_id: string;
168
+ event_id: string;
169
+ }
170
+ | {
171
+ kind: "delivery_ack";
172
+ name: string;
173
+ delivery_id: string;
174
+ event_id: string;
175
+ }
176
+ | {
177
+ kind: "worker_ready";
178
+ name: string;
179
+ runtime: AgentRuntime;
180
+ }
181
+ | {
182
+ kind: "worker_error";
183
+ name: string;
184
+ code: string;
185
+ message: string;
186
+ }
187
+ | {
188
+ kind: "relaycast_published";
189
+ event_id: string;
190
+ to: string;
191
+ target_type: string;
192
+ }
193
+ | {
194
+ kind: "relaycast_publish_failed";
195
+ event_id: string;
196
+ to: string;
197
+ reason: string;
198
+ }
199
+ | {
200
+ kind: "acl_denied";
201
+ name: string;
202
+ sender: string;
203
+ owner_chain: string[];
204
+ };
205
+
206
+ export type BrokerToSdk =
207
+ | {
208
+ type: "hello_ack";
209
+ payload: { broker_version: string; protocol_version: number };
210
+ }
211
+ | {
212
+ type: "ok";
213
+ payload: { result: unknown };
214
+ }
215
+ | {
216
+ type: "error";
217
+ payload: ProtocolError;
218
+ }
219
+ | {
220
+ type: "event";
221
+ payload: BrokerEvent;
222
+ };
223
+
224
+ export type BrokerToWorker =
225
+ | {
226
+ type: "init_worker";
227
+ payload: { agent: AgentSpec };
228
+ }
229
+ | {
230
+ type: "deliver_relay";
231
+ payload: RelayDelivery;
232
+ }
233
+ | {
234
+ type: "shutdown_worker";
235
+ payload: { reason: string; grace_ms?: number };
236
+ }
237
+ | {
238
+ type: "ping";
239
+ payload: { ts_ms: number };
240
+ };
241
+
242
+ export type WorkerToBroker =
243
+ | {
244
+ type: "worker_ready";
245
+ payload: { name: string; runtime: AgentRuntime };
246
+ }
247
+ | {
248
+ type: "delivery_ack";
249
+ payload: { delivery_id: string; event_id: string };
250
+ }
251
+ | {
252
+ type: "worker_stream";
253
+ payload: { stream: string; chunk: string };
254
+ }
255
+ | {
256
+ type: "worker_error";
257
+ payload: ProtocolError;
258
+ }
259
+ | {
260
+ type: "worker_exited";
261
+ payload: { code?: number; signal?: string };
262
+ }
263
+ | {
264
+ type: "pong";
265
+ payload: { ts_ms: number };
266
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PTY stream utilities — ANSI stripping and line extraction.
3
+ */
4
+
5
+ // eslint-disable-next-line no-control-regex
6
+ const ANSI_RE = /\x1b(?:\[[0-9;?]*[A-Za-z]|\][^\x07\x1b]*(?:\x07|\x1b\\)?|[()][0-9A-Za-z]|[\x20-\x2f]*[\x40-\x7e])|\x1b/g;
7
+
8
+ /** Strip ANSI escape sequences from a string. */
9
+ export function stripAnsi(s: string): string {
10
+ return s.replace(ANSI_RE, "");
11
+ }
12
+
13
+ /** Strip ANSI, split on newlines, trim, and drop empty lines. */
14
+ export function cleanLines(raw: string): string[] {
15
+ return stripAnsi(raw).split(/\r?\n/).map(l => l.trimEnd()).filter(Boolean);
16
+ }