@agent-relay/sdk 3.2.22 → 4.0.1

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 (92) hide show
  1. package/README.md +10 -3
  2. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  3. package/bin/agent-relay-broker-darwin-x64 +0 -0
  4. package/bin/agent-relay-broker-linux-arm64 +0 -0
  5. package/bin/agent-relay-broker-linux-x64 +0 -0
  6. package/dist/broker-path.d.ts +3 -2
  7. package/dist/broker-path.d.ts.map +1 -1
  8. package/dist/broker-path.js +119 -32
  9. package/dist/broker-path.js.map +1 -1
  10. package/dist/client.d.ts +119 -197
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +354 -823
  13. package/dist/client.js.map +1 -1
  14. package/dist/examples/example.js +2 -5
  15. package/dist/examples/example.js.map +1 -1
  16. package/dist/index.d.ts +3 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/relay-adapter.d.ts +9 -26
  21. package/dist/relay-adapter.d.ts.map +1 -1
  22. package/dist/relay-adapter.js +75 -47
  23. package/dist/relay-adapter.js.map +1 -1
  24. package/dist/relay.d.ts +26 -6
  25. package/dist/relay.d.ts.map +1 -1
  26. package/dist/relay.js +213 -43
  27. package/dist/relay.js.map +1 -1
  28. package/dist/transport.d.ts +58 -0
  29. package/dist/transport.d.ts.map +1 -0
  30. package/dist/transport.js +184 -0
  31. package/dist/transport.js.map +1 -0
  32. package/dist/types.d.ts +69 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +5 -0
  35. package/dist/types.js.map +1 -0
  36. package/dist/workflows/__tests__/channel-messenger.test.d.ts +2 -0
  37. package/dist/workflows/__tests__/channel-messenger.test.d.ts.map +1 -0
  38. package/dist/workflows/__tests__/channel-messenger.test.js +117 -0
  39. package/dist/workflows/__tests__/channel-messenger.test.js.map +1 -0
  40. package/dist/workflows/__tests__/run-summary-table.test.js +4 -3
  41. package/dist/workflows/__tests__/run-summary-table.test.js.map +1 -1
  42. package/dist/workflows/__tests__/step-executor.test.d.ts +2 -0
  43. package/dist/workflows/__tests__/step-executor.test.d.ts.map +1 -0
  44. package/dist/workflows/__tests__/step-executor.test.js +378 -0
  45. package/dist/workflows/__tests__/step-executor.test.js.map +1 -0
  46. package/dist/workflows/__tests__/template-resolver.test.d.ts +2 -0
  47. package/dist/workflows/__tests__/template-resolver.test.d.ts.map +1 -0
  48. package/dist/workflows/__tests__/template-resolver.test.js +145 -0
  49. package/dist/workflows/__tests__/template-resolver.test.js.map +1 -0
  50. package/dist/workflows/__tests__/verification.test.d.ts +2 -0
  51. package/dist/workflows/__tests__/verification.test.d.ts.map +1 -0
  52. package/dist/workflows/__tests__/verification.test.js +170 -0
  53. package/dist/workflows/__tests__/verification.test.js.map +1 -0
  54. package/dist/workflows/builder.d.ts +3 -2
  55. package/dist/workflows/builder.d.ts.map +1 -1
  56. package/dist/workflows/builder.js +1 -3
  57. package/dist/workflows/builder.js.map +1 -1
  58. package/dist/workflows/channel-messenger.d.ts +28 -0
  59. package/dist/workflows/channel-messenger.d.ts.map +1 -0
  60. package/dist/workflows/channel-messenger.js +255 -0
  61. package/dist/workflows/channel-messenger.js.map +1 -0
  62. package/dist/workflows/index.d.ts +7 -0
  63. package/dist/workflows/index.d.ts.map +1 -1
  64. package/dist/workflows/index.js +7 -0
  65. package/dist/workflows/index.js.map +1 -1
  66. package/dist/workflows/process-spawner.d.ts +35 -0
  67. package/dist/workflows/process-spawner.d.ts.map +1 -0
  68. package/dist/workflows/process-spawner.js +141 -0
  69. package/dist/workflows/process-spawner.js.map +1 -0
  70. package/dist/workflows/run.d.ts +2 -1
  71. package/dist/workflows/run.d.ts.map +1 -1
  72. package/dist/workflows/run.js.map +1 -1
  73. package/dist/workflows/runner.d.ts +6 -6
  74. package/dist/workflows/runner.d.ts.map +1 -1
  75. package/dist/workflows/runner.js +443 -719
  76. package/dist/workflows/runner.js.map +1 -1
  77. package/dist/workflows/step-executor.d.ts +95 -0
  78. package/dist/workflows/step-executor.d.ts.map +1 -0
  79. package/dist/workflows/step-executor.js +393 -0
  80. package/dist/workflows/step-executor.js.map +1 -0
  81. package/dist/workflows/template-resolver.d.ts +33 -0
  82. package/dist/workflows/template-resolver.d.ts.map +1 -0
  83. package/dist/workflows/template-resolver.js +144 -0
  84. package/dist/workflows/template-resolver.js.map +1 -0
  85. package/dist/workflows/validator.d.ts.map +1 -1
  86. package/dist/workflows/validator.js +17 -2
  87. package/dist/workflows/validator.js.map +1 -1
  88. package/dist/workflows/verification.d.ts +33 -0
  89. package/dist/workflows/verification.d.ts.map +1 -0
  90. package/dist/workflows/verification.js +122 -0
  91. package/dist/workflows/verification.js.map +1 -0
  92. package/package.json +2 -2
@@ -0,0 +1,184 @@
1
+ /**
2
+ * BrokerTransport — HTTP/WS transport layer for communicating with the
3
+ * agent-relay broker. Used internally by AgentRelayClient.
4
+ *
5
+ * Handles:
6
+ * - HTTP requests with API key auth and structured error parsing
7
+ * - WebSocket connection for real-time event streaming
8
+ * - Event buffering, replay, and query (mirrors stdio client behavior)
9
+ */
10
+ import WebSocket from 'ws';
11
+ export class AgentRelayProtocolError extends Error {
12
+ code;
13
+ retryable;
14
+ data;
15
+ constructor(payload) {
16
+ super(payload.message);
17
+ this.name = 'AgentRelayProtocolError';
18
+ this.code = payload.code;
19
+ this.retryable = payload.retryable ?? false;
20
+ this.data = payload.data;
21
+ }
22
+ }
23
+ export class BrokerTransport {
24
+ baseUrl;
25
+ apiKey;
26
+ requestTimeoutMs;
27
+ maxBufferSize;
28
+ ws = null;
29
+ eventListeners = new Set();
30
+ eventBuffer = [];
31
+ reconnectTimer = null;
32
+ sinceSeq = 0;
33
+ _connected = false;
34
+ _intentionalClose = false;
35
+ constructor(options) {
36
+ this.baseUrl = options.baseUrl.replace(/\/$/, '');
37
+ this.apiKey = options.apiKey;
38
+ this.requestTimeoutMs = options.requestTimeoutMs ?? 30_000;
39
+ this.maxBufferSize = options.maxBufferSize ?? 1000;
40
+ }
41
+ get connected() {
42
+ return this._connected;
43
+ }
44
+ get wsUrl() {
45
+ return this.baseUrl.replace(/^http/, 'ws') + '/ws';
46
+ }
47
+ // ── HTTP ─────────────────────────────────────────────────────────────
48
+ async request(path, init) {
49
+ const headers = new Headers(init?.headers);
50
+ if (!headers.has('Content-Type')) {
51
+ headers.set('Content-Type', 'application/json');
52
+ }
53
+ if (this.apiKey) {
54
+ headers.set('X-API-Key', this.apiKey);
55
+ }
56
+ const signal = init?.signal ?? AbortSignal.timeout(this.requestTimeoutMs);
57
+ const res = await fetch(`${this.baseUrl}${path}`, { ...init, headers, signal });
58
+ if (!res.ok) {
59
+ let body;
60
+ try {
61
+ body = (await res.json());
62
+ }
63
+ catch {
64
+ // non-JSON error
65
+ }
66
+ throw new AgentRelayProtocolError({
67
+ code: body?.code ?? `http_${res.status}`,
68
+ message: body?.message ?? body?.error ?? res.statusText,
69
+ retryable: res.status >= 500,
70
+ });
71
+ }
72
+ return res.json();
73
+ }
74
+ // ── WebSocket events ─────────────────────────────────────────────────
75
+ connect(sinceSeq) {
76
+ if (this.ws)
77
+ return;
78
+ // Clear any pending reconnect timer to avoid duplicate connections
79
+ if (this.reconnectTimer) {
80
+ clearTimeout(this.reconnectTimer);
81
+ this.reconnectTimer = null;
82
+ }
83
+ this.sinceSeq = sinceSeq ?? this.sinceSeq;
84
+ this._connect();
85
+ }
86
+ _connect() {
87
+ this._intentionalClose = false;
88
+ const url = `${this.wsUrl}?sinceSeq=${this.sinceSeq}`;
89
+ const headers = {};
90
+ if (this.apiKey) {
91
+ headers['X-API-Key'] = this.apiKey;
92
+ }
93
+ this.ws = new WebSocket(url, { headers });
94
+ this.ws.on('open', () => {
95
+ this._connected = true;
96
+ if (this.reconnectTimer) {
97
+ clearTimeout(this.reconnectTimer);
98
+ this.reconnectTimer = null;
99
+ }
100
+ });
101
+ this.ws.on('message', (data) => {
102
+ try {
103
+ const event = JSON.parse(data.toString());
104
+ // Track sequence for replay on reconnect
105
+ if (typeof event.seq === 'number' && event.seq > this.sinceSeq) {
106
+ this.sinceSeq = event.seq;
107
+ }
108
+ // Buffer the event
109
+ this.eventBuffer.push(event);
110
+ if (this.eventBuffer.length > this.maxBufferSize) {
111
+ this.eventBuffer = this.eventBuffer.slice(-this.maxBufferSize);
112
+ }
113
+ // Notify listeners
114
+ for (const listener of this.eventListeners) {
115
+ try {
116
+ listener(event);
117
+ }
118
+ catch {
119
+ // don't let a bad listener break the stream
120
+ }
121
+ }
122
+ }
123
+ catch {
124
+ // ignore non-JSON frames (ping/pong)
125
+ }
126
+ });
127
+ this.ws.on('close', () => {
128
+ this._connected = false;
129
+ this.ws = null;
130
+ // Auto-reconnect after 2s unless intentionally closed
131
+ if (!this._intentionalClose) {
132
+ this.reconnectTimer = setTimeout(() => this._connect(), 2000);
133
+ }
134
+ });
135
+ this.ws.on('error', () => {
136
+ // error always followed by close
137
+ });
138
+ }
139
+ disconnect() {
140
+ this._intentionalClose = true;
141
+ if (this.reconnectTimer) {
142
+ clearTimeout(this.reconnectTimer);
143
+ this.reconnectTimer = null;
144
+ }
145
+ if (this.ws) {
146
+ this.ws.close();
147
+ this.ws = null;
148
+ }
149
+ this._connected = false;
150
+ }
151
+ onEvent(listener) {
152
+ this.eventListeners.add(listener);
153
+ return () => {
154
+ this.eventListeners.delete(listener);
155
+ };
156
+ }
157
+ queryEvents(filter) {
158
+ let events = [...this.eventBuffer];
159
+ if (filter?.kind) {
160
+ events = events.filter((e) => e.kind === filter.kind);
161
+ }
162
+ if (filter?.name) {
163
+ events = events.filter((e) => 'name' in e && e.name === filter.name);
164
+ }
165
+ if (filter?.since !== undefined) {
166
+ const since = filter.since;
167
+ events = events.filter((e) => 'timestamp' in e && typeof e.timestamp === 'number' && e.timestamp >= since);
168
+ }
169
+ if (filter?.limit !== undefined) {
170
+ events = events.slice(-filter.limit);
171
+ }
172
+ return events;
173
+ }
174
+ getLastEvent(kind, name) {
175
+ for (let i = this.eventBuffer.length - 1; i >= 0; i -= 1) {
176
+ const event = this.eventBuffer[i];
177
+ if (event.kind === kind && (!name || ('name' in event && event.name === name))) {
178
+ return event;
179
+ }
180
+ }
181
+ return undefined;
182
+ }
183
+ }
184
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AAG3B,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,IAAI,CAAS;IACb,SAAS,CAAU;IACnB,IAAI,CAAW;IAEf,YAAY,OAA+E;QACzF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF;AAWD,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,gBAAgB,CAAS;IACzB,aAAa,CAAS;IAE/B,EAAE,GAAqB,IAAI,CAAC;IAC5B,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAC;IACzD,WAAW,GAAkB,EAAE,CAAC;IAChC,cAAc,GAAyC,IAAI,CAAC;IAC5D,QAAQ,GAAG,CAAC,CAAC;IACb,UAAU,GAAG,KAAK,CAAC;IACnB,iBAAiB,GAAG,KAAK,CAAC;IAElC,YAAY,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IACrD,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;IAED,wEAAwE;IAExE,KAAK,CAAC,OAAO,CAAc,IAAY,EAAE,IAAkB;QACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,IAAqE,CAAC;YAC1E,IAAI,CAAC;gBACH,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwD,CAAC;YACnF,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,MAAM,IAAI,uBAAuB,CAAC;gBAChC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE;gBACxC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,CAAC,UAAU;gBACvD,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,wEAAwE;IAExE,OAAO,CAAC,QAAiB;QACvB,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO;QACpB,mEAAmE;QACnE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAmC,CAAC;gBAC5E,yCAAyC;gBACzC,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC/D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;gBAC5B,CAAC;gBACD,mBAAmB;gBACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACjE,CAAC;gBACD,mBAAmB;gBACnB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC3C,IAAI,CAAC;wBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC;oBAAC,MAAM,CAAC;wBACP,4CAA4C;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,sDAAsD;YACtD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,iCAAiC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,QAAsC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,MAAyE;QACnF,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,IAAa;QACtC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC/E,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Shared input/output types for the broker SDK.
3
+ */
4
+ import type { AgentRuntime, HeadlessProvider, MessageInjectionMode, RestartPolicy } from './protocol.js';
5
+ export interface SpawnPtyInput {
6
+ name: string;
7
+ cli: string;
8
+ args?: string[];
9
+ channels?: string[];
10
+ task?: string;
11
+ model?: string;
12
+ cwd?: string;
13
+ team?: string;
14
+ shadowOf?: string;
15
+ shadowMode?: string;
16
+ idleThresholdSecs?: number;
17
+ restartPolicy?: RestartPolicy;
18
+ continueFrom?: string;
19
+ skipRelayPrompt?: boolean;
20
+ }
21
+ export interface SpawnHeadlessInput {
22
+ name: string;
23
+ provider: HeadlessProvider;
24
+ args?: string[];
25
+ channels?: string[];
26
+ task?: string;
27
+ skipRelayPrompt?: boolean;
28
+ }
29
+ export type AgentTransport = 'pty' | 'headless';
30
+ export interface SpawnProviderInput {
31
+ name: string;
32
+ provider: string;
33
+ transport?: AgentTransport;
34
+ args?: string[];
35
+ channels?: string[];
36
+ task?: string;
37
+ model?: string;
38
+ cwd?: string;
39
+ team?: string;
40
+ shadowOf?: string;
41
+ shadowMode?: string;
42
+ idleThresholdSecs?: number;
43
+ restartPolicy?: RestartPolicy;
44
+ continueFrom?: string;
45
+ skipRelayPrompt?: boolean;
46
+ }
47
+ export interface SendMessageInput {
48
+ to: string;
49
+ text: string;
50
+ from?: string;
51
+ threadId?: string;
52
+ workspaceId?: string;
53
+ workspaceAlias?: string;
54
+ priority?: number;
55
+ data?: Record<string, unknown>;
56
+ mode?: MessageInjectionMode;
57
+ }
58
+ export interface ListAgent {
59
+ name: string;
60
+ runtime: AgentRuntime;
61
+ provider?: HeadlessProvider;
62
+ cli?: string;
63
+ model?: string;
64
+ team?: string;
65
+ channels: string[];
66
+ parent?: string;
67
+ pid?: number;
68
+ }
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEzG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared input/output types for the broker SDK.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=channel-messenger.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-messenger.test.d.ts","sourceRoot":"","sources":["../../../src/workflows/__tests__/channel-messenger.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ // Import from the module that will be extracted from runner.ts
3
+ import { ChannelMessenger, formatError, formatStepOutput, sendToChannel, truncateMessage, } from '../channel-messenger.js';
4
+ describe('channel messenger helpers', () => {
5
+ it('sendToChannel forwards messages to the relay client', async () => {
6
+ const relay = { send: vi.fn().mockResolvedValue(undefined) };
7
+ await sendToChannel(relay, 'workflow-room', 'hello');
8
+ expect(relay.send).toHaveBeenCalledWith('workflow-room', 'hello');
9
+ });
10
+ it('truncateMessage keeps the most recent tail within the limit', () => {
11
+ expect(truncateMessage('abcdefghij', 4)).toBe('ghij');
12
+ expect(truncateMessage('abc', 10)).toBe('abc');
13
+ });
14
+ it('formatStepOutput returns a completion note when scrubbed output is empty', () => {
15
+ expect(formatStepOutput('plan', '▗▖\n')).toBe('**[plan]** Step completed — output written to disk');
16
+ });
17
+ it('formatStepOutput scrubs noise and formats a fenced block', () => {
18
+ const output = 'Thinking…\nuseful line\n';
19
+ expect(formatStepOutput('plan', output)).toBe('**[plan] Output:**\n```\nuseful line\n```');
20
+ });
21
+ it('formatError normalizes unknown errors', () => {
22
+ expect(formatError('build', new Error('Boom'))).toBe('**[build]** Failed: Boom');
23
+ expect(formatError('build', 'bad input')).toBe('**[build]** Failed: bad input');
24
+ });
25
+ });
26
+ describe('ChannelMessenger', () => {
27
+ describe('buildNonInteractiveAwareness', () => {
28
+ it('returns undefined when no non-interactive agents exist', () => {
29
+ const messenger = new ChannelMessenger();
30
+ const agents = new Map([['worker', { name: 'worker', cli: 'claude', interactive: true }]]);
31
+ const result = messenger.buildNonInteractiveAwareness(agents, new Map());
32
+ expect(result).toBeUndefined();
33
+ });
34
+ it('lists non-interactive agents with step references', () => {
35
+ const messenger = new ChannelMessenger();
36
+ const agents = new Map([
37
+ ['bg-worker', { name: 'bg-worker', cli: 'claude', interactive: false }],
38
+ ]);
39
+ const stepStates = new Map([
40
+ ['analyze', { row: { agentName: 'bg-worker', status: 'running' } }],
41
+ ]);
42
+ const result = messenger.buildNonInteractiveAwareness(agents, stepStates);
43
+ expect(result).toContain('bg-worker');
44
+ expect(result).toContain('{{steps.analyze.output}}');
45
+ expect(result).toContain('cannot receive messages');
46
+ });
47
+ });
48
+ describe('buildDelegationGuidance', () => {
49
+ it('includes timeout note when timeout is provided', () => {
50
+ const messenger = new ChannelMessenger();
51
+ const result = messenger.buildDelegationGuidance('claude', 300_000);
52
+ expect(result).toContain('5 minutes');
53
+ expect(result).toContain('AUTONOMOUS DELEGATION');
54
+ });
55
+ it('includes sub-agent option only for claude CLI', () => {
56
+ const messenger = new ChannelMessenger();
57
+ const claudeResult = messenger.buildDelegationGuidance('claude');
58
+ const codexResult = messenger.buildDelegationGuidance('codex');
59
+ expect(claudeResult).toContain('Task tool');
60
+ expect(codexResult).not.toContain('Task tool');
61
+ });
62
+ it('omits timeout note when no timeout given', () => {
63
+ const messenger = new ChannelMessenger();
64
+ const result = messenger.buildDelegationGuidance('claude');
65
+ expect(result).not.toContain('minutes before this step');
66
+ });
67
+ });
68
+ describe('buildRelayRegistrationNote', () => {
69
+ it('returns empty string for claude CLI', () => {
70
+ const messenger = new ChannelMessenger();
71
+ expect(messenger.buildRelayRegistrationNote('claude', 'worker-1')).toBe('');
72
+ });
73
+ it('returns registration instructions for non-claude CLIs', () => {
74
+ const messenger = new ChannelMessenger();
75
+ const result = messenger.buildRelayRegistrationNote('codex', 'helper-1');
76
+ expect(result).toContain('register(name="helper-1")');
77
+ expect(result).toContain('RELAY SETUP');
78
+ });
79
+ });
80
+ describe('postCompletionReport', () => {
81
+ it('formats a completion report with step results', () => {
82
+ const postSpy = vi.fn();
83
+ const messenger = new ChannelMessenger({ postFn: postSpy });
84
+ const outcomes = [
85
+ { name: 'plan', agent: 'lead', status: 'completed', attempts: 1, verificationPassed: true },
86
+ { name: 'code', agent: 'worker', status: 'completed', attempts: 2 },
87
+ { name: 'optional', agent: 'worker', status: 'skipped', attempts: 0 },
88
+ ];
89
+ messenger.postCompletionReport('my-workflow', outcomes, 'All done', 0.95);
90
+ expect(postSpy).toHaveBeenCalledTimes(1);
91
+ const text = postSpy.mock.calls[0][0];
92
+ expect(text).toContain('my-workflow');
93
+ expect(text).toContain('Complete');
94
+ expect(text).toContain('95%');
95
+ expect(text).toContain('verified');
96
+ expect(text).toContain('2 attempts');
97
+ expect(text).toContain('skipped');
98
+ });
99
+ });
100
+ describe('postFailureReport', () => {
101
+ it('formats a failure report with error details', () => {
102
+ const postSpy = vi.fn();
103
+ const messenger = new ChannelMessenger({ postFn: postSpy });
104
+ const outcomes = [
105
+ { name: 'plan', agent: 'lead', status: 'completed', attempts: 1 },
106
+ { name: 'code', agent: 'worker', status: 'failed', attempts: 3, error: 'Timeout exceeded' },
107
+ ];
108
+ messenger.postFailureReport('my-workflow', outcomes, 'Step failed');
109
+ expect(postSpy).toHaveBeenCalledTimes(1);
110
+ const text = postSpy.mock.calls[0][0];
111
+ expect(text).toContain('Failed');
112
+ expect(text).toContain('1/2 steps passed');
113
+ expect(text).toContain('Timeout exceeded');
114
+ });
115
+ });
116
+ });
117
+ //# sourceMappingURL=channel-messenger.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-messenger.test.js","sourceRoot":"","sources":["../../../src/workflows/__tests__/channel-messenger.test.ts"],"names":[],"mappings":"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"}
@@ -116,14 +116,15 @@ describe('formatRunSummaryTable', () => {
116
116
  });
117
117
  });
118
118
  describe('WorkflowRunner logRunSummary', () => {
119
- it('falls back to the legacy summary format when no reports exist', () => {
119
+ it('uses the table summary format even when no reports exist', () => {
120
120
  const runner = new WorkflowRunner({ cwd: '/tmp/workflow-runner' });
121
121
  const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
122
122
  runner.logRunSummary('sample-workflow', [{ name: 'lint', agent: 'shell', status: 'completed', attempts: 1, output: 'ok' }], 'run-1');
123
123
  const combined = logSpy.mock.calls.flat().join('\n');
124
124
  expect(combined).toContain('Workflow "sample-workflow"');
125
- expect(combined).toContain('✓ lint [shell]');
126
- expect(combined).not.toContain('Step Status');
125
+ expect(combined).toContain('Step Status');
126
+ expect(combined).toContain('lint');
127
+ expect(combined).toContain('pass');
127
128
  logSpy.mockRestore();
128
129
  });
129
130
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run-summary-table.test.js","sourceRoot":"","sources":["../../../src/workflows/__tests__/run-summary-table.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-summary-table.test.js","sourceRoot":"","sources":["../../../src/workflows/__tests__/run-summary-table.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=step-executor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-executor.test.d.ts","sourceRoot":"","sources":["../../../src/workflows/__tests__/step-executor.test.ts"],"names":[],"mappings":""}