@agentuity/frontend 0.1.14 → 0.1.16

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 (82) hide show
  1. package/dist/analytics/beacon-standalone.d.ts +106 -0
  2. package/dist/analytics/beacon-standalone.d.ts.map +1 -0
  3. package/dist/analytics/beacon-standalone.js +584 -0
  4. package/dist/analytics/beacon-standalone.js.map +1 -0
  5. package/dist/analytics/index.d.ts +22 -0
  6. package/dist/analytics/index.d.ts.map +1 -0
  7. package/dist/analytics/index.js +28 -0
  8. package/dist/analytics/index.js.map +1 -0
  9. package/dist/analytics/types.d.ts +141 -0
  10. package/dist/analytics/types.d.ts.map +1 -0
  11. package/dist/analytics/types.js +2 -0
  12. package/dist/analytics/types.js.map +1 -0
  13. package/dist/analytics/utils/storage.d.ts +13 -0
  14. package/dist/analytics/utils/storage.d.ts.map +1 -0
  15. package/dist/analytics/utils/storage.js +63 -0
  16. package/dist/analytics/utils/storage.js.map +1 -0
  17. package/dist/analytics/utils/utm.d.ts +12 -0
  18. package/dist/analytics/utils/utm.d.ts.map +1 -0
  19. package/dist/analytics/utils/utm.js +27 -0
  20. package/dist/analytics/utils/utm.js.map +1 -0
  21. package/dist/beacon-script.d.ts +16 -0
  22. package/dist/beacon-script.d.ts.map +1 -0
  23. package/dist/beacon-script.js +1 -1
  24. package/dist/beacon-script.js.map +1 -0
  25. package/dist/beacon.js +1 -1
  26. package/dist/client/eventstream.d.ts +12 -0
  27. package/dist/client/eventstream.d.ts.map +1 -0
  28. package/dist/client/eventstream.js +39 -0
  29. package/dist/client/eventstream.js.map +1 -0
  30. package/dist/client/index.d.ts +33 -0
  31. package/dist/client/index.d.ts.map +1 -0
  32. package/dist/client/index.js +227 -0
  33. package/dist/client/index.js.map +1 -0
  34. package/dist/client/stream.d.ts +6 -0
  35. package/dist/client/stream.d.ts.map +1 -0
  36. package/dist/client/stream.js +49 -0
  37. package/dist/client/stream.js.map +1 -0
  38. package/dist/client/types.d.ts +168 -0
  39. package/dist/client/types.d.ts.map +1 -0
  40. package/dist/client/types.js +5 -0
  41. package/dist/client/types.js.map +1 -0
  42. package/dist/client/websocket.d.ts +6 -0
  43. package/dist/client/websocket.d.ts.map +1 -0
  44. package/dist/client/websocket.js +49 -0
  45. package/dist/client/websocket.js.map +1 -0
  46. package/dist/env.d.ts +2 -0
  47. package/dist/env.d.ts.map +1 -0
  48. package/dist/env.js +10 -0
  49. package/dist/env.js.map +1 -0
  50. package/dist/eventstream-manager.d.ts +85 -0
  51. package/dist/eventstream-manager.d.ts.map +1 -0
  52. package/dist/eventstream-manager.js +137 -0
  53. package/dist/eventstream-manager.js.map +1 -0
  54. package/dist/index.d.ts +13 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +15 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/memo.d.ts +6 -0
  59. package/dist/memo.d.ts.map +1 -0
  60. package/dist/memo.js +20 -0
  61. package/dist/memo.js.map +1 -0
  62. package/dist/reconnect.d.ts +22 -0
  63. package/dist/reconnect.d.ts.map +1 -0
  64. package/dist/reconnect.js +47 -0
  65. package/dist/reconnect.js.map +1 -0
  66. package/dist/serialization.d.ts +6 -0
  67. package/dist/serialization.d.ts.map +1 -0
  68. package/dist/serialization.js +16 -0
  69. package/dist/serialization.js.map +1 -0
  70. package/dist/types.d.ts +42 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +2 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/url.d.ts +3 -0
  75. package/dist/url.d.ts.map +1 -0
  76. package/dist/url.js +24 -0
  77. package/dist/url.js.map +1 -0
  78. package/dist/websocket-manager.d.ts +90 -0
  79. package/dist/websocket-manager.d.ts.map +1 -0
  80. package/dist/websocket-manager.js +163 -0
  81. package/dist/websocket-manager.js.map +1 -0
  82. package/package.json +4 -4
@@ -0,0 +1,163 @@
1
+ import { createReconnectManager } from './reconnect';
2
+ import { deserializeData } from './serialization';
3
+ /**
4
+ * Serialize data for WebSocket transmission
5
+ */
6
+ const serializeWSData = (data) => {
7
+ if (typeof data === 'string') {
8
+ return data;
9
+ }
10
+ if (typeof data === 'object') {
11
+ if (data instanceof ArrayBuffer || ArrayBuffer.isView(data) || data instanceof Blob) {
12
+ return data;
13
+ }
14
+ return JSON.stringify(data);
15
+ }
16
+ throw new Error('unsupported data type for websocket: ' + typeof data);
17
+ };
18
+ /**
19
+ * Generic WebSocket connection manager with automatic reconnection,
20
+ * message queuing, and handler management.
21
+ *
22
+ * Framework-agnostic - can be used with React, Svelte, Vue, or vanilla JS.
23
+ */
24
+ export class WebSocketManager {
25
+ ws;
26
+ manualClose = false;
27
+ pendingMessages = [];
28
+ queuedMessages = [];
29
+ messageHandler;
30
+ reconnectManager;
31
+ callbacks;
32
+ url;
33
+ reconnectConfig;
34
+ constructor(options) {
35
+ this.url = options.url;
36
+ this.callbacks = options.callbacks || {};
37
+ this.reconnectConfig = {
38
+ threshold: options.reconnect?.threshold ?? 0,
39
+ baseDelay: options.reconnect?.baseDelay ?? 500,
40
+ factor: options.reconnect?.factor ?? 2,
41
+ maxDelay: options.reconnect?.maxDelay ?? 30000,
42
+ jitter: options.reconnect?.jitter ?? 500,
43
+ };
44
+ }
45
+ /**
46
+ * Connect to the WebSocket server
47
+ */
48
+ connect() {
49
+ if (this.manualClose)
50
+ return;
51
+ this.ws = new WebSocket(this.url);
52
+ this.ws.onopen = () => {
53
+ this.reconnectManager?.recordSuccess();
54
+ this.callbacks.onConnect?.();
55
+ // Flush queued messages
56
+ if (this.queuedMessages.length > 0) {
57
+ this.queuedMessages.forEach((msg) => this.ws.send(serializeWSData(msg)));
58
+ this.queuedMessages = [];
59
+ }
60
+ };
61
+ this.ws.onerror = () => {
62
+ const error = new Error('WebSocket error');
63
+ this.callbacks.onError?.(error);
64
+ };
65
+ this.ws.onclose = (evt) => {
66
+ this.ws = undefined;
67
+ this.callbacks.onDisconnect?.();
68
+ if (this.manualClose) {
69
+ this.queuedMessages = [];
70
+ return;
71
+ }
72
+ if (evt.code !== 1000) {
73
+ const error = new Error(`WebSocket closed: ${evt.code} ${evt.reason || ''}`);
74
+ this.callbacks.onError?.(error);
75
+ }
76
+ this.reconnectManager?.recordFailure();
77
+ };
78
+ this.ws.onmessage = (event) => {
79
+ const payload = deserializeData(event.data);
80
+ // Call the registered message handler
81
+ if (this.messageHandler) {
82
+ this.messageHandler(payload);
83
+ }
84
+ else {
85
+ // Buffer messages until a handler is set
86
+ this.pendingMessages.push(payload);
87
+ }
88
+ // Also call the callback if provided
89
+ this.callbacks.onMessage?.(payload);
90
+ };
91
+ // Setup reconnect manager
92
+ if (!this.reconnectManager) {
93
+ this.reconnectManager = createReconnectManager({
94
+ onReconnect: () => this.connect(),
95
+ threshold: this.reconnectConfig.threshold,
96
+ baseDelay: this.reconnectConfig.baseDelay,
97
+ factor: this.reconnectConfig.factor,
98
+ maxDelay: this.reconnectConfig.maxDelay,
99
+ jitter: this.reconnectConfig.jitter,
100
+ enabled: () => !this.manualClose,
101
+ });
102
+ }
103
+ }
104
+ /**
105
+ * Send data through the WebSocket.
106
+ * Messages are queued if not currently connected.
107
+ */
108
+ send(data) {
109
+ if (this.ws?.readyState === WebSocket.OPEN) {
110
+ this.ws.send(serializeWSData(data));
111
+ }
112
+ else {
113
+ this.queuedMessages.push(data);
114
+ }
115
+ }
116
+ /**
117
+ * Set the message handler.
118
+ * Any buffered messages will be delivered immediately.
119
+ */
120
+ setMessageHandler(handler) {
121
+ this.messageHandler = handler;
122
+ // Flush pending messages
123
+ this.pendingMessages.forEach(handler);
124
+ this.pendingMessages = [];
125
+ }
126
+ /**
127
+ * Get current state
128
+ */
129
+ getState() {
130
+ return {
131
+ isConnected: this.ws?.readyState === WebSocket.OPEN,
132
+ error: null, // Error state managed externally via callbacks
133
+ readyState: this.ws?.readyState ?? WebSocket.CLOSED,
134
+ };
135
+ }
136
+ /**
137
+ * Close the WebSocket connection and cleanup
138
+ */
139
+ close() {
140
+ this.manualClose = true;
141
+ this.reconnectManager?.dispose();
142
+ if (this.ws) {
143
+ this.ws.onopen = null;
144
+ this.ws.onerror = null;
145
+ this.ws.onclose = null;
146
+ this.ws.onmessage = null;
147
+ this.ws.close();
148
+ }
149
+ this.ws = undefined;
150
+ this.messageHandler = undefined;
151
+ this.pendingMessages = [];
152
+ this.queuedMessages = [];
153
+ // Notify disconnect callback
154
+ this.callbacks.onDisconnect?.();
155
+ }
156
+ /**
157
+ * Dispose of the manager (alias for close)
158
+ */
159
+ dispose() {
160
+ this.close();
161
+ }
162
+ }
163
+ //# sourceMappingURL=websocket-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-manager.js","sourceRoot":"","sources":["../src/websocket-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/frontend",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -19,17 +19,17 @@
19
19
  "src"
20
20
  ],
21
21
  "scripts": {
22
- "clean": "rm -rf dist",
22
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
23
23
  "build": "bunx tsc --build && bun scripts/build-beacon.ts",
24
24
  "typecheck": "bunx tsc --noEmit",
25
25
  "test": "bun test",
26
26
  "prepublishOnly": "bun run clean && bun run build"
27
27
  },
28
28
  "dependencies": {
29
- "@agentuity/core": "0.1.14"
29
+ "@agentuity/core": "0.1.16"
30
30
  },
31
31
  "devDependencies": {
32
- "@agentuity/test-utils": "0.1.14",
32
+ "@agentuity/test-utils": "0.1.16",
33
33
  "@types/bun": "latest",
34
34
  "bun-types": "latest",
35
35
  "typescript": "^5.9.0"