@calimero-network/mero-js 1.1.0 → 2.0.0-beta.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 (172) hide show
  1. package/README.md +341 -319
  2. package/dist/api/admin/aliases.d.ts +54 -0
  3. package/dist/api/admin/aliases.d.ts.map +1 -0
  4. package/dist/api/admin/aliases.js +43 -0
  5. package/dist/api/admin/aliases.js.map +1 -0
  6. package/dist/api/admin/applications.d.ts +52 -0
  7. package/dist/api/admin/applications.d.ts.map +1 -0
  8. package/dist/api/admin/applications.js +31 -0
  9. package/dist/api/admin/applications.js.map +1 -0
  10. package/dist/api/admin/blobs.d.ts +24 -0
  11. package/dist/api/admin/blobs.d.ts.map +1 -0
  12. package/dist/api/admin/blobs.js +58 -0
  13. package/dist/api/admin/blobs.js.map +1 -0
  14. package/dist/api/admin/capabilities.d.ts +26 -0
  15. package/dist/api/admin/capabilities.d.ts.map +1 -0
  16. package/dist/api/admin/capabilities.js +13 -0
  17. package/dist/api/admin/capabilities.js.map +1 -0
  18. package/dist/api/admin/client.d.ts +63 -0
  19. package/dist/api/admin/client.d.ts.map +1 -0
  20. package/dist/api/admin/client.js +103 -0
  21. package/dist/api/admin/client.js.map +1 -0
  22. package/dist/api/admin/contexts.d.ts +110 -0
  23. package/dist/api/admin/contexts.d.ts.map +1 -0
  24. package/dist/api/admin/contexts.js +61 -0
  25. package/dist/api/admin/contexts.js.map +1 -0
  26. package/dist/api/admin/factory.d.ts +4 -0
  27. package/dist/api/admin/factory.d.ts.map +1 -0
  28. package/dist/api/admin/factory.js +5 -0
  29. package/dist/api/admin/factory.js.map +1 -0
  30. package/dist/api/admin/identity.d.ts +10 -0
  31. package/dist/api/admin/identity.d.ts.map +1 -0
  32. package/dist/api/admin/identity.js +10 -0
  33. package/dist/api/admin/identity.js.map +1 -0
  34. package/dist/api/admin/index.d.ts +23 -0
  35. package/dist/api/admin/index.d.ts.map +1 -0
  36. package/dist/api/admin/index.js +26 -0
  37. package/dist/api/admin/index.js.map +1 -0
  38. package/dist/api/admin/network.d.ts +10 -0
  39. package/dist/api/admin/network.d.ts.map +1 -0
  40. package/dist/api/admin/network.js +9 -0
  41. package/dist/api/admin/network.js.map +1 -0
  42. package/dist/api/admin/proposals.d.ts +49 -0
  43. package/dist/api/admin/proposals.d.ts.map +1 -0
  44. package/dist/api/admin/proposals.js +34 -0
  45. package/dist/api/admin/proposals.js.map +1 -0
  46. package/dist/api/admin/public.d.ts +15 -0
  47. package/dist/api/admin/public.d.ts.map +1 -0
  48. package/dist/api/admin/public.js +18 -0
  49. package/dist/api/admin/public.js.map +1 -0
  50. package/dist/api/admin/tee.d.ts +74 -0
  51. package/dist/api/admin/tee.d.ts.map +1 -0
  52. package/dist/api/admin/tee.js +16 -0
  53. package/dist/api/admin/tee.js.map +1 -0
  54. package/dist/api/auth/client.d.ts +55 -0
  55. package/dist/api/auth/client.d.ts.map +1 -0
  56. package/dist/api/auth/client.js +127 -0
  57. package/dist/api/auth/client.js.map +1 -0
  58. package/dist/api/auth/factory.d.ts +4 -0
  59. package/dist/api/auth/factory.d.ts.map +1 -0
  60. package/dist/api/auth/factory.js +5 -0
  61. package/dist/api/auth/factory.js.map +1 -0
  62. package/dist/api/auth/index.d.ts +4 -0
  63. package/dist/api/auth/index.d.ts.map +1 -0
  64. package/dist/api/auth/index.js +4 -0
  65. package/dist/api/auth/index.js.map +1 -0
  66. package/dist/api/auth/types.d.ts +94 -0
  67. package/dist/api/auth/types.d.ts.map +1 -0
  68. package/dist/api/auth/types.js +4 -0
  69. package/dist/api/auth/types.js.map +1 -0
  70. package/dist/api/index.d.ts +15 -0
  71. package/dist/api/index.d.ts.map +1 -0
  72. package/dist/api/index.js +18 -0
  73. package/dist/api/index.js.map +1 -0
  74. package/dist/api/rpc/client.d.ts +76 -0
  75. package/dist/api/rpc/client.d.ts.map +1 -0
  76. package/dist/api/rpc/client.js +126 -0
  77. package/dist/api/rpc/client.js.map +1 -0
  78. package/dist/api/rpc/index.d.ts +3 -0
  79. package/dist/api/rpc/index.d.ts.map +1 -0
  80. package/dist/api/rpc/index.js +2 -0
  81. package/dist/api/rpc/index.js.map +1 -0
  82. package/dist/api/rpc/types.d.ts +74 -0
  83. package/dist/api/rpc/types.d.ts.map +1 -0
  84. package/dist/api/rpc/types.js +6 -0
  85. package/dist/api/rpc/types.js.map +1 -0
  86. package/dist/api/sse/client.d.ts +76 -0
  87. package/dist/api/sse/client.d.ts.map +1 -0
  88. package/dist/api/sse/client.js +203 -0
  89. package/dist/api/sse/client.js.map +1 -0
  90. package/dist/api/sse/index.d.ts +4 -0
  91. package/dist/api/sse/index.d.ts.map +1 -0
  92. package/dist/api/sse/index.js +2 -0
  93. package/dist/api/sse/index.js.map +1 -0
  94. package/dist/api/sse/types.d.ts +35 -0
  95. package/dist/api/sse/types.d.ts.map +1 -0
  96. package/dist/api/sse/types.js +6 -0
  97. package/dist/api/sse/types.js.map +1 -0
  98. package/dist/api/utils.d.ts +68 -0
  99. package/dist/api/utils.d.ts.map +1 -0
  100. package/dist/api/utils.js +83 -0
  101. package/dist/api/utils.js.map +1 -0
  102. package/dist/api/ws/client.d.ts +72 -0
  103. package/dist/api/ws/client.d.ts.map +1 -0
  104. package/dist/api/ws/client.js +202 -0
  105. package/dist/api/ws/client.js.map +1 -0
  106. package/dist/api/ws/index.d.ts +4 -0
  107. package/dist/api/ws/index.d.ts.map +1 -0
  108. package/dist/api/ws/index.js +2 -0
  109. package/dist/api/ws/index.js.map +1 -0
  110. package/dist/api/ws/types.d.ts +32 -0
  111. package/dist/api/ws/types.d.ts.map +1 -0
  112. package/dist/api/ws/types.js +6 -0
  113. package/dist/api/ws/types.js.map +1 -0
  114. package/dist/http-client/index.d.ts +1 -1
  115. package/dist/http-client/index.d.ts.map +1 -1
  116. package/dist/http-client/index.js +2 -1
  117. package/dist/http-client/index.js.map +1 -1
  118. package/dist/http-client/web-client.d.ts +3 -3
  119. package/dist/http-client/web-client.d.ts.map +1 -1
  120. package/dist/http-client/web-client.js +16 -6
  121. package/dist/http-client/web-client.js.map +1 -1
  122. package/dist/index.browser.mjs +1 -1
  123. package/dist/index.browser.mjs.map +4 -4
  124. package/dist/index.cjs +1590 -281
  125. package/dist/index.cjs.map +4 -4
  126. package/dist/index.d.ts +8 -3
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +7 -5
  129. package/dist/index.js.map +1 -1
  130. package/dist/index.mjs +1596 -281
  131. package/dist/index.mjs.map +4 -4
  132. package/dist/mero-js.d.ts +198 -7
  133. package/dist/mero-js.d.ts.map +1 -1
  134. package/dist/mero-js.js +329 -38
  135. package/dist/mero-js.js.map +1 -1
  136. package/package.json +42 -7
  137. package/dist/admin-api/admin-client.d.ts +0 -38
  138. package/dist/admin-api/admin-client.d.ts.map +0 -1
  139. package/dist/admin-api/admin-client.js +0 -104
  140. package/dist/admin-api/admin-client.js.map +0 -1
  141. package/dist/admin-api/admin-factory.d.ts +0 -8
  142. package/dist/admin-api/admin-factory.d.ts.map +0 -1
  143. package/dist/admin-api/admin-factory.js +0 -42
  144. package/dist/admin-api/admin-factory.js.map +0 -1
  145. package/dist/admin-api/admin-types.d.ts +0 -213
  146. package/dist/admin-api/admin-types.d.ts.map +0 -1
  147. package/dist/admin-api/admin-types.js +0 -3
  148. package/dist/admin-api/admin-types.js.map +0 -1
  149. package/dist/admin-api/index.d.ts +0 -4
  150. package/dist/admin-api/index.d.ts.map +0 -1
  151. package/dist/admin-api/index.js +0 -5
  152. package/dist/admin-api/index.js.map +0 -1
  153. package/dist/auth-api/auth-client.d.ts +0 -34
  154. package/dist/auth-api/auth-client.d.ts.map +0 -1
  155. package/dist/auth-api/auth-client.js +0 -112
  156. package/dist/auth-api/auth-client.js.map +0 -1
  157. package/dist/auth-api/auth-factory.d.ts +0 -8
  158. package/dist/auth-api/auth-factory.d.ts.map +0 -1
  159. package/dist/auth-api/auth-factory.js +0 -42
  160. package/dist/auth-api/auth-factory.js.map +0 -1
  161. package/dist/auth-api/auth-types.d.ts +0 -127
  162. package/dist/auth-api/auth-types.d.ts.map +0 -1
  163. package/dist/auth-api/auth-types.js +0 -3
  164. package/dist/auth-api/auth-types.js.map +0 -1
  165. package/dist/auth-api/index.d.ts +0 -4
  166. package/dist/auth-api/index.d.ts.map +0 -1
  167. package/dist/auth-api/index.js +0 -5
  168. package/dist/auth-api/index.js.map +0 -1
  169. package/dist/http-client/api-response.d.ts +0 -16
  170. package/dist/http-client/api-response.d.ts.map +0 -1
  171. package/dist/http-client/api-response.js +0 -2
  172. package/dist/http-client/api-response.js.map +0 -1
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SSE Client
3
+ *
4
+ * Server-Sent Events for real-time event streaming.
5
+ * Uses standard EventSource with manual subscription management.
6
+ */
7
+ import type { HttpClient } from '../../http-client';
8
+ import type { SseSubscriptionResponse, SseSessionResponse, SseEventHandler, SseErrorHandler } from './types';
9
+ export interface SseClientOptions {
10
+ /** Base URL */
11
+ baseUrl: string;
12
+ /** HTTP client for subscription requests */
13
+ httpClient: HttpClient;
14
+ /** Function to get current auth token */
15
+ getAuthToken?: () => Promise<string | null>;
16
+ /** Auto-reconnect on disconnect */
17
+ autoReconnect?: boolean;
18
+ /** Reconnect delay in ms */
19
+ reconnectDelay?: number;
20
+ }
21
+ export declare class SseClient {
22
+ private eventSource;
23
+ private options;
24
+ private sessionId;
25
+ private eventHandlers;
26
+ private errorHandlers;
27
+ private subscribedContexts;
28
+ private _lastEventId;
29
+ constructor(options: SseClientOptions);
30
+ /**
31
+ * Connect to the SSE stream
32
+ */
33
+ connect(): Promise<string>;
34
+ /**
35
+ * Disconnect from the SSE stream
36
+ */
37
+ disconnect(): void;
38
+ /**
39
+ * Subscribe to context events
40
+ */
41
+ subscribe(contextIds: string[]): Promise<SseSubscriptionResponse>;
42
+ /**
43
+ * Unsubscribe from context events
44
+ */
45
+ unsubscribe(contextIds: string[]): Promise<SseSubscriptionResponse>;
46
+ /**
47
+ * Get session information
48
+ */
49
+ getSession(): Promise<SseSessionResponse>;
50
+ /**
51
+ * Add event handler
52
+ */
53
+ onEvent(handler: SseEventHandler): () => void;
54
+ /**
55
+ * Add error handler
56
+ */
57
+ onError(handler: SseErrorHandler): () => void;
58
+ /**
59
+ * Check if connected
60
+ */
61
+ isConnected(): boolean;
62
+ /**
63
+ * Get current session ID
64
+ */
65
+ getSessionId(): string | null;
66
+ /**
67
+ * Get subscribed context IDs
68
+ */
69
+ getSubscribedContexts(): string[];
70
+ /**
71
+ * Get the last event ID (useful for resumable connections)
72
+ */
73
+ getLastEventId(): string | null;
74
+ private handleDisconnect;
75
+ }
76
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/sse/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAEV,uBAAuB,EACvB,kBAAkB,EAElB,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,EAAE,UAAU,CAAC;IACvB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,YAAY,CAAuB;gBAE/B,OAAO,EAAE,gBAAgB;IASrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAoEhC;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAuBvE;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAuBzE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAU/C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,IAAI;IAO7C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,IAAI;IAO7C;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B,OAAO,CAAC,gBAAgB;CAiBzB"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * SSE Client
3
+ *
4
+ * Server-Sent Events for real-time event streaming.
5
+ * Uses standard EventSource with manual subscription management.
6
+ */
7
+ export class SseClient {
8
+ constructor(options) {
9
+ this.eventSource = null;
10
+ this.sessionId = null;
11
+ this.eventHandlers = [];
12
+ this.errorHandlers = [];
13
+ this.subscribedContexts = new Set();
14
+ // Track last event ID for reconnection (used for resumable streams)
15
+ this._lastEventId = null;
16
+ this.options = {
17
+ autoReconnect: true,
18
+ reconnectDelay: 1000,
19
+ getAuthToken: async () => null,
20
+ ...options,
21
+ };
22
+ }
23
+ /**
24
+ * Connect to the SSE stream
25
+ */
26
+ async connect() {
27
+ if (this.eventSource) {
28
+ throw new Error('Already connected');
29
+ }
30
+ const token = await this.options.getAuthToken();
31
+ let url = `${this.options.baseUrl}/sse`;
32
+ if (token) {
33
+ url += `?token=${encodeURIComponent(token)}`;
34
+ }
35
+ return new Promise((resolve, reject) => {
36
+ this.eventSource = new EventSource(url, {
37
+ withCredentials: true,
38
+ });
39
+ // Handle connect event (first event with session_id)
40
+ this.eventSource.addEventListener('connect', (event) => {
41
+ const messageEvent = event;
42
+ try {
43
+ // Session ID may be in data or as plain string
44
+ const data = messageEvent.data;
45
+ this.sessionId = typeof data === 'string' && data.startsWith('{')
46
+ ? JSON.parse(data).session_id || JSON.parse(data).sessionId
47
+ : data;
48
+ resolve(this.sessionId);
49
+ }
50
+ catch {
51
+ this.sessionId = messageEvent.data;
52
+ resolve(this.sessionId);
53
+ }
54
+ });
55
+ this.eventSource.onmessage = (event) => {
56
+ this._lastEventId = event.lastEventId;
57
+ try {
58
+ const data = JSON.parse(event.data);
59
+ const sseEvent = {
60
+ id: event.lastEventId,
61
+ event: 'message',
62
+ data,
63
+ };
64
+ this.eventHandlers.forEach(h => h(sseEvent));
65
+ }
66
+ catch {
67
+ // Non-JSON message
68
+ const sseEvent = {
69
+ id: event.lastEventId,
70
+ event: 'message',
71
+ data: event.data,
72
+ };
73
+ this.eventHandlers.forEach(h => h(sseEvent));
74
+ }
75
+ };
76
+ this.eventSource.onerror = (_event) => {
77
+ const error = new Error('SSE connection error');
78
+ this.errorHandlers.forEach(h => h(error));
79
+ if (this.eventSource?.readyState === EventSource.CLOSED) {
80
+ this.handleDisconnect();
81
+ if (!this.sessionId) {
82
+ reject(error);
83
+ }
84
+ }
85
+ };
86
+ });
87
+ }
88
+ /**
89
+ * Disconnect from the SSE stream
90
+ */
91
+ disconnect() {
92
+ this.options.autoReconnect = false;
93
+ this.eventSource?.close();
94
+ this.eventSource = null;
95
+ this.sessionId = null;
96
+ this.subscribedContexts.clear();
97
+ }
98
+ /**
99
+ * Subscribe to context events
100
+ */
101
+ async subscribe(contextIds) {
102
+ if (!this.sessionId) {
103
+ throw new Error('Not connected');
104
+ }
105
+ const request = {
106
+ id: this.sessionId,
107
+ method: 'subscribe',
108
+ params: { contextIds },
109
+ };
110
+ const response = await this.options.httpClient.post('/sse/subscription', request);
111
+ if (!response.error) {
112
+ contextIds.forEach(id => this.subscribedContexts.add(id));
113
+ }
114
+ return response;
115
+ }
116
+ /**
117
+ * Unsubscribe from context events
118
+ */
119
+ async unsubscribe(contextIds) {
120
+ if (!this.sessionId) {
121
+ throw new Error('Not connected');
122
+ }
123
+ const request = {
124
+ id: this.sessionId,
125
+ method: 'unsubscribe',
126
+ params: { contextIds },
127
+ };
128
+ const response = await this.options.httpClient.post('/sse/subscription', request);
129
+ if (!response.error) {
130
+ contextIds.forEach(id => this.subscribedContexts.delete(id));
131
+ }
132
+ return response;
133
+ }
134
+ /**
135
+ * Get session information
136
+ */
137
+ async getSession() {
138
+ if (!this.sessionId) {
139
+ throw new Error('Not connected');
140
+ }
141
+ return this.options.httpClient.get(`/sse/session/${this.sessionId}`);
142
+ }
143
+ /**
144
+ * Add event handler
145
+ */
146
+ onEvent(handler) {
147
+ this.eventHandlers.push(handler);
148
+ return () => {
149
+ this.eventHandlers = this.eventHandlers.filter(h => h !== handler);
150
+ };
151
+ }
152
+ /**
153
+ * Add error handler
154
+ */
155
+ onError(handler) {
156
+ this.errorHandlers.push(handler);
157
+ return () => {
158
+ this.errorHandlers = this.errorHandlers.filter(h => h !== handler);
159
+ };
160
+ }
161
+ /**
162
+ * Check if connected
163
+ */
164
+ isConnected() {
165
+ return this.eventSource?.readyState === EventSource.OPEN;
166
+ }
167
+ /**
168
+ * Get current session ID
169
+ */
170
+ getSessionId() {
171
+ return this.sessionId;
172
+ }
173
+ /**
174
+ * Get subscribed context IDs
175
+ */
176
+ getSubscribedContexts() {
177
+ return Array.from(this.subscribedContexts);
178
+ }
179
+ /**
180
+ * Get the last event ID (useful for resumable connections)
181
+ */
182
+ getLastEventId() {
183
+ return this._lastEventId;
184
+ }
185
+ handleDisconnect() {
186
+ if (!this.options.autoReconnect) {
187
+ return;
188
+ }
189
+ setTimeout(async () => {
190
+ try {
191
+ await this.connect();
192
+ // Resubscribe to previous contexts
193
+ if (this.subscribedContexts.size > 0) {
194
+ await this.subscribe(Array.from(this.subscribedContexts));
195
+ }
196
+ }
197
+ catch {
198
+ // Will retry via handleDisconnect on next error
199
+ }
200
+ }, this.options.reconnectDelay);
201
+ }
202
+ }
203
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/sse/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { SseClient } from './client';
2
+ export type { SseClientOptions } from './client';
3
+ export type { SseSubscriptionRequest, SseSubscriptionResponse, SseSessionResponse, SseEvent, SseEventHandler, SseErrorHandler, } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/sse/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SseClient } from './client';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/sse/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SSE Types
3
+ * Based on OpenAPI spec: /sse endpoints
4
+ */
5
+ export interface SseSubscriptionRequest {
6
+ /** Session ID from connect event */
7
+ id: string;
8
+ method: 'subscribe' | 'unsubscribe';
9
+ params: {
10
+ contextIds: string[];
11
+ };
12
+ }
13
+ export interface SseSubscriptionResponse {
14
+ data?: {
15
+ subscribedContextIds?: string[];
16
+ unsubscribedContextIds?: string[];
17
+ };
18
+ error?: string;
19
+ }
20
+ export interface SseSessionResponse {
21
+ data?: {
22
+ sessionId: string;
23
+ subscribedContextIds: string[];
24
+ connectedAt: string;
25
+ };
26
+ error?: string;
27
+ }
28
+ export interface SseEvent {
29
+ id?: string;
30
+ event: string;
31
+ data: unknown;
32
+ }
33
+ export type SseEventHandler = (event: SseEvent) => void;
34
+ export type SseErrorHandler = (error: Error) => void;
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/sse/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE;QACL,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;QAChC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;KACnC,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * SSE Types
3
+ * Based on OpenAPI spec: /sse endpoints
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/sse/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Shared utilities for API clients
3
+ */
4
+ export type ApiResponseWrapper<T> = {
5
+ data: T;
6
+ error?: never;
7
+ } | {
8
+ data?: never;
9
+ error: ApiError;
10
+ };
11
+ /**
12
+ * API-level error structure (returned in response body even with HTTP 200)
13
+ * Common in RPC-style APIs where errors are semantic, not transport-level.
14
+ */
15
+ export interface ApiError {
16
+ type?: string;
17
+ code?: number;
18
+ message: string;
19
+ data?: unknown;
20
+ }
21
+ /**
22
+ * Custom error class for API errors that includes structured error data.
23
+ */
24
+ export declare class ApiResponseError extends Error {
25
+ readonly type?: string;
26
+ readonly code?: number;
27
+ readonly data?: unknown;
28
+ constructor(error: ApiError);
29
+ }
30
+ /**
31
+ * Unwraps a response from the API format { data: T } to T.
32
+ *
33
+ * This function handles:
34
+ * 1. Standard success responses: { data: T }
35
+ * 2. RPC-style error responses: { error: { message, type?, code? } }
36
+ * 3. Null/undefined data detection
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // Success case
41
+ * const apps = await unwrap(client.get<{ data: App[] }>('/apps'));
42
+ * // apps is App[]
43
+ *
44
+ * // Error case (throws ApiResponseError)
45
+ * const result = await unwrap(client.post('/rpc', badRequest));
46
+ * // throws ApiResponseError with message, type, code
47
+ * ```
48
+ *
49
+ * @param response - Promise resolving to an ApiResponseWrapper<T>
50
+ * @returns Promise resolving to the unwrapped data
51
+ * @throws ApiResponseError if the response contains an error payload
52
+ * @throws Error if data is null or undefined
53
+ */
54
+ export declare function unwrap<T>(response: Promise<ApiResponseWrapper<T> | {
55
+ data: T;
56
+ }>): Promise<T>;
57
+ /**
58
+ * Safely unwraps a response, returning null instead of throwing on missing data.
59
+ * Still throws on explicit error payloads.
60
+ *
61
+ * @param response - Promise resolving to an ApiResponseWrapper<T>
62
+ * @returns Promise resolving to the unwrapped data or null
63
+ * @throws ApiResponseError if the response contains an error payload
64
+ */
65
+ export declare function unwrapOrNull<T>(response: Promise<ApiResponseWrapper<T> | {
66
+ data: T;
67
+ }>): Promise<T | null>;
68
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/api/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEnG;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEnB,KAAK,EAAE,QAAQ;CAO5B;AAkBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAC5B,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,GACrD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAanB"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Shared utilities for API clients
3
+ */
4
+ /**
5
+ * Custom error class for API errors that includes structured error data.
6
+ */
7
+ export class ApiResponseError extends Error {
8
+ constructor(error) {
9
+ super(error.message);
10
+ this.name = 'ApiResponseError';
11
+ this.type = error.type;
12
+ this.code = error.code;
13
+ this.data = error.data;
14
+ }
15
+ }
16
+ /**
17
+ * Type guard to check if a response contains an error payload.
18
+ */
19
+ function hasErrorPayload(response) {
20
+ return (typeof response === 'object' &&
21
+ response !== null &&
22
+ 'error' in response &&
23
+ response.error !== null &&
24
+ response.error !== undefined &&
25
+ typeof response.error === 'object');
26
+ }
27
+ /**
28
+ * Unwraps a response from the API format { data: T } to T.
29
+ *
30
+ * This function handles:
31
+ * 1. Standard success responses: { data: T }
32
+ * 2. RPC-style error responses: { error: { message, type?, code? } }
33
+ * 3. Null/undefined data detection
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Success case
38
+ * const apps = await unwrap(client.get<{ data: App[] }>('/apps'));
39
+ * // apps is App[]
40
+ *
41
+ * // Error case (throws ApiResponseError)
42
+ * const result = await unwrap(client.post('/rpc', badRequest));
43
+ * // throws ApiResponseError with message, type, code
44
+ * ```
45
+ *
46
+ * @param response - Promise resolving to an ApiResponseWrapper<T>
47
+ * @returns Promise resolving to the unwrapped data
48
+ * @throws ApiResponseError if the response contains an error payload
49
+ * @throws Error if data is null or undefined
50
+ */
51
+ export async function unwrap(response) {
52
+ const result = await response;
53
+ // Check for RPC-style error payload (even with HTTP 200)
54
+ if (hasErrorPayload(result)) {
55
+ throw new ApiResponseError(result.error);
56
+ }
57
+ // Check specifically for null/undefined, not falsy values
58
+ // This allows valid responses like 0, false, or empty strings
59
+ if (result.data === null || result.data === undefined) {
60
+ throw new Error('Response data is null or undefined');
61
+ }
62
+ return result.data;
63
+ }
64
+ /**
65
+ * Safely unwraps a response, returning null instead of throwing on missing data.
66
+ * Still throws on explicit error payloads.
67
+ *
68
+ * @param response - Promise resolving to an ApiResponseWrapper<T>
69
+ * @returns Promise resolving to the unwrapped data or null
70
+ * @throws ApiResponseError if the response contains an error payload
71
+ */
72
+ export async function unwrapOrNull(response) {
73
+ const result = await response;
74
+ // Check for RPC-style error payload
75
+ if (hasErrorPayload(result)) {
76
+ throw new ApiResponseError(result.error);
77
+ }
78
+ if (result.data === null || result.data === undefined) {
79
+ return null;
80
+ }
81
+ return result.data;
82
+ }
83
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/api/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAKzC,YAAY,KAAe;QACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,QAAiB;IAEjB,OAAO,CACL,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,KAAK,IAAI;QACjB,OAAO,IAAI,QAAQ;QACnB,QAAQ,CAAC,KAAK,KAAK,IAAI;QACvB,QAAQ,CAAC,KAAK,KAAK,SAAS;QAC5B,OAAQ,QAA+B,CAAC,KAAK,KAAK,QAAQ,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAsD;IAEtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;IAE9B,yDAAyD;IACzD,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE;QAC3B,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,0DAA0D;IAC1D,8DAA8D;IAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAsD;IAEtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;IAE9B,oCAAoC;IACpC,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE;QAC3B,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;QACrD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * WebSocket Client
3
+ *
4
+ * Real-time event subscriptions via WebSocket.
5
+ * Events are pushed from server to client.
6
+ * For queries/mutations, use the JSON-RPC endpoint.
7
+ */
8
+ import type { WebSocketResponse, WebSocketEventHandler, WebSocketErrorHandler, WebSocketCloseHandler } from './types';
9
+ export interface WebSocketClientOptions {
10
+ /** Base URL (will be converted to ws:// or wss://) */
11
+ baseUrl: string;
12
+ /** Function to get current auth token */
13
+ getAuthToken?: () => Promise<string | null>;
14
+ /** Auto-reconnect on disconnect */
15
+ autoReconnect?: boolean;
16
+ /** Reconnect delay in ms */
17
+ reconnectDelay?: number;
18
+ /** Max reconnect attempts */
19
+ maxReconnectAttempts?: number;
20
+ }
21
+ export declare class WebSocketClient {
22
+ private ws;
23
+ private options;
24
+ private requestId;
25
+ private pendingRequests;
26
+ private eventHandlers;
27
+ private errorHandlers;
28
+ private closeHandlers;
29
+ private reconnectAttempts;
30
+ private subscribedContexts;
31
+ constructor(options: WebSocketClientOptions);
32
+ /**
33
+ * Connect to the WebSocket server
34
+ */
35
+ connect(): Promise<void>;
36
+ /**
37
+ * Disconnect from the WebSocket server
38
+ */
39
+ disconnect(): void;
40
+ /**
41
+ * Subscribe to context events
42
+ */
43
+ subscribe(contextIds: string[]): Promise<WebSocketResponse>;
44
+ /**
45
+ * Unsubscribe from context events
46
+ */
47
+ unsubscribe(contextIds: string[]): Promise<WebSocketResponse>;
48
+ /**
49
+ * Add event handler
50
+ */
51
+ onEvent(handler: WebSocketEventHandler): () => void;
52
+ /**
53
+ * Add error handler
54
+ */
55
+ onError(handler: WebSocketErrorHandler): () => void;
56
+ /**
57
+ * Add close handler
58
+ */
59
+ onClose(handler: WebSocketCloseHandler): () => void;
60
+ /**
61
+ * Check if connected
62
+ */
63
+ isConnected(): boolean;
64
+ /**
65
+ * Get subscribed context IDs
66
+ */
67
+ getSubscribedContexts(): string[];
68
+ private send;
69
+ private handleMessage;
70
+ private handleDisconnect;
71
+ }
72
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/ws/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EAEjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAGlB;IACL,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,OAAO,EAAE,sBAAsB;IAU3C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAcjE;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAcnE;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOnD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;YAInB,IAAI;IAuBlB,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,gBAAgB;CAyBzB"}