@ironflow/browser 0.20.0 → 0.20.2

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 (66) hide show
  1. package/LICENSE +181 -0
  2. package/package.json +9 -9
  3. package/dist/agents/index.d.ts +0 -34
  4. package/dist/agents/index.d.ts.map +0 -1
  5. package/dist/agents/index.js +0 -24
  6. package/dist/agents/index.js.map +0 -1
  7. package/dist/agents/invoke.d.ts +0 -16
  8. package/dist/agents/invoke.d.ts.map +0 -1
  9. package/dist/agents/invoke.js +0 -222
  10. package/dist/agents/invoke.js.map +0 -1
  11. package/dist/agents/readMemory.d.ts +0 -18
  12. package/dist/agents/readMemory.d.ts.map +0 -1
  13. package/dist/agents/readMemory.js +0 -87
  14. package/dist/agents/readMemory.js.map +0 -1
  15. package/dist/agents/subscribe.d.ts +0 -23
  16. package/dist/agents/subscribe.d.ts.map +0 -1
  17. package/dist/agents/subscribe.js +0 -117
  18. package/dist/agents/subscribe.js.map +0 -1
  19. package/dist/agents/types.d.ts +0 -156
  20. package/dist/agents/types.d.ts.map +0 -1
  21. package/dist/agents/types.js +0 -7
  22. package/dist/agents/types.js.map +0 -1
  23. package/dist/client.d.ts +0 -844
  24. package/dist/client.d.ts.map +0 -1
  25. package/dist/client.js +0 -2243
  26. package/dist/client.js.map +0 -1
  27. package/dist/config-client.d.ts +0 -43
  28. package/dist/config-client.d.ts.map +0 -1
  29. package/dist/config-client.js +0 -134
  30. package/dist/config-client.js.map +0 -1
  31. package/dist/config.d.ts +0 -91
  32. package/dist/config.d.ts.map +0 -1
  33. package/dist/config.js +0 -55
  34. package/dist/config.js.map +0 -1
  35. package/dist/index.d.ts +0 -53
  36. package/dist/index.d.ts.map +0 -1
  37. package/dist/index.js +0 -53
  38. package/dist/index.js.map +0 -1
  39. package/dist/kv.d.ts +0 -79
  40. package/dist/kv.d.ts.map +0 -1
  41. package/dist/kv.js +0 -289
  42. package/dist/kv.js.map +0 -1
  43. package/dist/projection-stream.d.ts +0 -42
  44. package/dist/projection-stream.d.ts.map +0 -1
  45. package/dist/projection-stream.js +0 -48
  46. package/dist/projection-stream.js.map +0 -1
  47. package/dist/subscription.d.ts +0 -107
  48. package/dist/subscription.d.ts.map +0 -1
  49. package/dist/subscription.js +0 -450
  50. package/dist/subscription.js.map +0 -1
  51. package/dist/transport/connectrpc.d.ts +0 -74
  52. package/dist/transport/connectrpc.d.ts.map +0 -1
  53. package/dist/transport/connectrpc.js +0 -393
  54. package/dist/transport/connectrpc.js.map +0 -1
  55. package/dist/transport/index.d.ts +0 -7
  56. package/dist/transport/index.d.ts.map +0 -1
  57. package/dist/transport/index.js +0 -6
  58. package/dist/transport/index.js.map +0 -1
  59. package/dist/transport/types.d.ts +0 -69
  60. package/dist/transport/types.d.ts.map +0 -1
  61. package/dist/transport/types.js +0 -5
  62. package/dist/transport/types.js.map +0 -1
  63. package/dist/transport/websocket.d.ts +0 -38
  64. package/dist/transport/websocket.d.ts.map +0 -1
  65. package/dist/transport/websocket.js +0 -276
  66. package/dist/transport/websocket.js.map +0 -1
@@ -1,276 +0,0 @@
1
- /**
2
- * WebSocket transport implementation
3
- */
4
- import { getWebSocketUrl, WSServerMessageSchema, calculateBackoff, } from "@ironflow/core";
5
- /**
6
- * WebSocket-based transport for subscriptions
7
- */
8
- export class WebSocketTransport {
9
- wsUrl;
10
- options;
11
- callbacks;
12
- ws = null;
13
- _connectionState = "disconnected";
14
- reconnectAttempt = 0;
15
- reconnectTimer = null;
16
- paused = false;
17
- pendingSubscriptions = new Map();
18
- constructor(serverUrl, options) {
19
- const baseWsUrl = getWebSocketUrl(serverUrl);
20
- const params = [];
21
- if (options.environment) {
22
- params.push(`env=${encodeURIComponent(options.environment)}`);
23
- }
24
- if (options.auth?.apiKey) {
25
- params.push(`token=${encodeURIComponent(options.auth.apiKey)}`);
26
- }
27
- else if (options.auth?.token) {
28
- params.push(`token=${encodeURIComponent(options.auth.token)}`);
29
- }
30
- if (params.length > 0) {
31
- const separator = baseWsUrl.includes("?") ? "&" : "?";
32
- this.wsUrl = `${baseWsUrl}${separator}${params.join("&")}`;
33
- }
34
- else {
35
- this.wsUrl = baseWsUrl;
36
- }
37
- this.options = options;
38
- }
39
- get connectionState() {
40
- return this._connectionState;
41
- }
42
- setCallbacks(callbacks) {
43
- this.callbacks = callbacks;
44
- }
45
- async connect() {
46
- if (this._connectionState === "connected") {
47
- return;
48
- }
49
- if (this.paused) {
50
- return;
51
- }
52
- const timeout = this.options.connectionTimeout ?? 10_000;
53
- return new Promise((resolve, reject) => {
54
- this._connectionState = "connecting";
55
- this.callbacks?.onConnectionChange("connecting");
56
- const timeoutId = setTimeout(() => {
57
- if (this._connectionState === "connecting") {
58
- // Close the pending WebSocket
59
- if (this.ws) {
60
- this.ws.onopen = null;
61
- this.ws.onclose = null;
62
- this.ws.onerror = null;
63
- this.ws.close();
64
- this.ws = null;
65
- }
66
- this._connectionState = "disconnected";
67
- this.callbacks?.onConnectionChange("disconnected");
68
- reject(new Error(`WebSocket connection timeout after ${timeout}ms`));
69
- }
70
- }, timeout);
71
- try {
72
- this.ws = new WebSocket(this.wsUrl);
73
- this.ws.onopen = () => {
74
- clearTimeout(timeoutId);
75
- this._connectionState = "connected";
76
- this.reconnectAttempt = 0;
77
- this.callbacks?.onConnectionChange("connected");
78
- // Re-subscribe all pending subscriptions
79
- for (const [pattern, options] of this.pendingSubscriptions) {
80
- this.sendSubscribe(pattern, options);
81
- }
82
- resolve();
83
- };
84
- this.ws.onclose = (event) => {
85
- clearTimeout(timeoutId);
86
- const wasConnected = this._connectionState === "connected";
87
- this._connectionState = "disconnected";
88
- this.callbacks?.onConnectionChange("disconnected");
89
- if (this.options.autoReconnect &&
90
- !this.paused &&
91
- event.code !== 1000) {
92
- this.scheduleReconnect();
93
- }
94
- if (!wasConnected && this._connectionState === "disconnected") {
95
- reject(new Error("WebSocket connection failed"));
96
- }
97
- };
98
- this.ws.onerror = () => {
99
- clearTimeout(timeoutId);
100
- if (this._connectionState === "connecting") {
101
- reject(new Error("WebSocket connection error"));
102
- }
103
- };
104
- this.ws.onmessage = (event) => {
105
- this.handleMessage(event.data);
106
- };
107
- }
108
- catch (error) {
109
- clearTimeout(timeoutId);
110
- this._connectionState = "disconnected";
111
- reject(error);
112
- }
113
- });
114
- }
115
- disconnect() {
116
- this.clearReconnectTimer();
117
- this.paused = false;
118
- if (this.ws) {
119
- const ws = this.ws;
120
- this.ws = null;
121
- ws.close(1000, "Client disconnect");
122
- }
123
- this._connectionState = "disconnected";
124
- this.pendingSubscriptions.clear();
125
- }
126
- subscribe(pattern, options) {
127
- this.pendingSubscriptions.set(pattern, options);
128
- if (this._connectionState === "connected") {
129
- this.sendSubscribe(pattern, options);
130
- }
131
- }
132
- unsubscribe(subscriptionId) {
133
- // Remove from pending if pattern matches
134
- // Note: We don't have pattern->id mapping here, so we just send unsubscribe
135
- if (this._connectionState === "connected" && this.ws) {
136
- const request = {
137
- type: "unsubscribe",
138
- subscriptionId,
139
- };
140
- this.ws.send(JSON.stringify(request));
141
- }
142
- }
143
- async ack(eventId, type, delay) {
144
- if (this._connectionState !== "connected" || !this.ws) {
145
- throw new Error("Not connected");
146
- }
147
- const request = {
148
- type: "ack",
149
- eventId,
150
- ackType: type,
151
- };
152
- if (delay !== undefined && type === "nak") {
153
- request.redeliverDelay = delay;
154
- }
155
- this.ws.send(JSON.stringify(request));
156
- }
157
- pause() {
158
- this.paused = true;
159
- this.clearReconnectTimer();
160
- if (this.ws) {
161
- this.ws.close(1000, "Paused");
162
- this.ws = null;
163
- }
164
- this._connectionState = "disconnected";
165
- this.callbacks?.onConnectionChange("disconnected");
166
- }
167
- resume() {
168
- this.paused = false;
169
- this.connect().catch(() => {
170
- // Will retry via reconnect logic
171
- });
172
- }
173
- sendSubscribe(pattern, options) {
174
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
175
- return;
176
- }
177
- const request = {
178
- type: "subscribe",
179
- subscription: {
180
- pattern,
181
- options: options
182
- ? {
183
- replay: options.replay,
184
- includeMetadata: options.includeMetadata,
185
- filter: options.filter,
186
- consumerGroup: options.consumerGroup,
187
- ackMode: options.ackMode,
188
- backpressure: options.backpressure,
189
- namespace: options.namespace,
190
- }
191
- : undefined,
192
- },
193
- };
194
- this.ws.send(JSON.stringify(request));
195
- }
196
- handleMessage(data) {
197
- let parsed;
198
- try {
199
- parsed = JSON.parse(data);
200
- }
201
- catch {
202
- return;
203
- }
204
- const result = WSServerMessageSchema.safeParse(parsed);
205
- if (!result.success) {
206
- return;
207
- }
208
- const message = result.data;
209
- switch (message.type) {
210
- case "subscription_result":
211
- for (const sub of message.results) {
212
- if (sub.status === "ok" && sub.subscriptionId) {
213
- this.callbacks?.onSubscribed(sub.pattern, sub.subscriptionId);
214
- }
215
- else {
216
- this.callbacks?.onSubscribeFailed(sub.pattern, new Error(sub.message ?? `Subscription failed: ${sub.code}`));
217
- }
218
- }
219
- break;
220
- case "event":
221
- {
222
- const event = {
223
- topic: message.topic,
224
- data: message.data,
225
- meta: message.meta,
226
- eventId: message.eventId,
227
- };
228
- this.callbacks?.onEvent(message.subscriptionId, event);
229
- }
230
- break;
231
- case "subscription_error":
232
- this.callbacks?.onError(message.subscriptionId, {
233
- subscriptionId: message.subscriptionId,
234
- code: message.code,
235
- message: message.message,
236
- retrying: message.retrying,
237
- });
238
- break;
239
- case "error":
240
- // Broadcast to all subscriptions
241
- this.callbacks?.onError("", {
242
- code: message.code,
243
- message: message.message,
244
- });
245
- break;
246
- }
247
- }
248
- scheduleReconnect() {
249
- if (this.reconnectTimer || this.paused) {
250
- return;
251
- }
252
- this._connectionState = "reconnecting";
253
- this.callbacks?.onConnectionChange("reconnecting");
254
- this.reconnectAttempt++;
255
- const delay = calculateBackoff(this.reconnectAttempt, this.options.reconnectDelay, this.options.maxReconnectDelay, this.options.reconnectBackoff);
256
- this.reconnectTimer = setTimeout(() => {
257
- this.reconnectTimer = null;
258
- this.connect().catch(() => {
259
- // Will trigger another reconnect via onclose
260
- });
261
- }, delay);
262
- }
263
- clearReconnectTimer() {
264
- if (this.reconnectTimer) {
265
- clearTimeout(this.reconnectTimer);
266
- this.reconnectTimer = null;
267
- }
268
- }
269
- }
270
- /**
271
- * Create a WebSocket transport
272
- */
273
- export function createWebSocketTransport(serverUrl, options) {
274
- return new WebSocketTransport(serverUrl, options);
275
- }
276
- //# sourceMappingURL=websocket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}