@ironflow/browser 0.20.2 → 0.22.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 (66) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/index.d.ts +34 -0
  3. package/dist/agents/index.d.ts.map +1 -0
  4. package/dist/agents/index.js +24 -0
  5. package/dist/agents/index.js.map +1 -0
  6. package/dist/agents/invoke.d.ts +16 -0
  7. package/dist/agents/invoke.d.ts.map +1 -0
  8. package/dist/agents/invoke.js +222 -0
  9. package/dist/agents/invoke.js.map +1 -0
  10. package/dist/agents/readMemory.d.ts +18 -0
  11. package/dist/agents/readMemory.d.ts.map +1 -0
  12. package/dist/agents/readMemory.js +87 -0
  13. package/dist/agents/readMemory.js.map +1 -0
  14. package/dist/agents/subscribe.d.ts +23 -0
  15. package/dist/agents/subscribe.d.ts.map +1 -0
  16. package/dist/agents/subscribe.js +117 -0
  17. package/dist/agents/subscribe.js.map +1 -0
  18. package/dist/agents/types.d.ts +156 -0
  19. package/dist/agents/types.d.ts.map +1 -0
  20. package/dist/agents/types.js +7 -0
  21. package/dist/agents/types.js.map +1 -0
  22. package/dist/client.d.ts +844 -0
  23. package/dist/client.d.ts.map +1 -0
  24. package/dist/client.js +2243 -0
  25. package/dist/client.js.map +1 -0
  26. package/dist/config-client.d.ts +43 -0
  27. package/dist/config-client.d.ts.map +1 -0
  28. package/dist/config-client.js +134 -0
  29. package/dist/config-client.js.map +1 -0
  30. package/dist/config.d.ts +91 -0
  31. package/dist/config.d.ts.map +1 -0
  32. package/dist/config.js +55 -0
  33. package/dist/config.js.map +1 -0
  34. package/dist/index.d.ts +53 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +53 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/kv.d.ts +79 -0
  39. package/dist/kv.d.ts.map +1 -0
  40. package/dist/kv.js +289 -0
  41. package/dist/kv.js.map +1 -0
  42. package/dist/projection-stream.d.ts +42 -0
  43. package/dist/projection-stream.d.ts.map +1 -0
  44. package/dist/projection-stream.js +48 -0
  45. package/dist/projection-stream.js.map +1 -0
  46. package/dist/subscription.d.ts +107 -0
  47. package/dist/subscription.d.ts.map +1 -0
  48. package/dist/subscription.js +450 -0
  49. package/dist/subscription.js.map +1 -0
  50. package/dist/transport/connectrpc.d.ts +74 -0
  51. package/dist/transport/connectrpc.d.ts.map +1 -0
  52. package/dist/transport/connectrpc.js +393 -0
  53. package/dist/transport/connectrpc.js.map +1 -0
  54. package/dist/transport/index.d.ts +7 -0
  55. package/dist/transport/index.d.ts.map +1 -0
  56. package/dist/transport/index.js +6 -0
  57. package/dist/transport/index.js.map +1 -0
  58. package/dist/transport/types.d.ts +69 -0
  59. package/dist/transport/types.d.ts.map +1 -0
  60. package/dist/transport/types.js +5 -0
  61. package/dist/transport/types.js.map +1 -0
  62. package/dist/transport/websocket.d.ts +38 -0
  63. package/dist/transport/websocket.d.ts.map +1 -0
  64. package/dist/transport/websocket.js +276 -0
  65. package/dist/transport/websocket.js.map +1 -0
  66. package/package.json +3 -3
@@ -0,0 +1,276 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ironflow/browser",
3
- "version": "0.20.2",
3
+ "version": "0.22.0",
4
4
  "description": "Browser client for Ironflow event-driven backend platform - real-time subscriptions, workflow triggers, and event emission",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,8 +21,8 @@
21
21
  "@bufbuild/protobuf": "^2.12.0",
22
22
  "@connectrpc/connect": "^2.1.1",
23
23
  "@connectrpc/connect-web": "^2.1.1",
24
- "zod": "^4.4.3",
25
- "@ironflow/core": "^0.20.2"
24
+ "@ironflow/core": "^0.22.0",
25
+ "zod": "^4.4.3"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.18",