@aerostack/sdk-node 0.7.5 → 0.7.7

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.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Aerostack Realtime Client for Node.js SDK
3
3
  */
4
- export type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*';
4
+ export type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*' | string;
5
5
  export interface RealtimeMessage {
6
6
  type: string;
7
7
  topic: string;
@@ -12,15 +12,27 @@ export interface RealtimeSubscriptionOptions {
12
12
  filter?: Record<string, any>;
13
13
  }
14
14
  export type RealtimeCallback<T = any> = (payload: RealtimePayload<T>) => void;
15
+ /** Typed payload for realtime events */
15
16
  export interface RealtimePayload<T = any> {
16
- type: 'db_change' | 'chat_message';
17
+ type: 'db_change' | 'chat_message' | 'event';
17
18
  topic: string;
18
- operation: RealtimeEvent;
19
+ operation?: RealtimeEvent;
20
+ event?: string;
19
21
  data: T;
20
22
  old?: T;
21
- timestamp?: string;
23
+ userId?: string;
24
+ timestamp?: number | string;
22
25
  [key: string]: any;
23
26
  }
27
+ /** Chat history message returned from REST API */
28
+ export interface HistoryMessage {
29
+ id: string;
30
+ room_id: string;
31
+ user_id: string;
32
+ event: string;
33
+ data: any;
34
+ created_at: number;
35
+ }
24
36
  export interface NodeRealtimeOptions {
25
37
  serverUrl: string;
26
38
  apiKey?: string;
@@ -30,15 +42,28 @@ export interface NodeRealtimeOptions {
30
42
  }
31
43
  export declare class RealtimeSubscription<T = any> {
32
44
  private client;
33
- private topic;
45
+ topic: string;
34
46
  private options;
35
47
  private callbacks;
36
48
  private _isSubscribed;
37
49
  constructor(client: NodeRealtimeClient, topic: string, options?: RealtimeSubscriptionOptions);
38
- on(event: RealtimeEvent, callback: RealtimeCallback<T>): this;
50
+ /** Listen for DB change events (INSERT/UPDATE/DELETE/*) or custom named events */
51
+ on(event: RealtimeEvent | string, callback: RealtimeCallback<T>): this;
52
+ /** Remove a specific callback for an event */
53
+ off(event: RealtimeEvent | string, callback: RealtimeCallback<T>): this;
39
54
  subscribe(): this;
40
55
  unsubscribe(): void;
41
56
  get isSubscribed(): boolean;
57
+ /** Publish a custom event to all subscribers on this channel */
58
+ publish(event: string, data: any, options?: {
59
+ persist?: boolean;
60
+ }): void;
61
+ /** Fetch persisted message history for this channel (requires persist: true on publish) */
62
+ getHistory(limit?: number, before?: number): Promise<HistoryMessage[]>;
63
+ /** Track this user's presence state on this channel (auto-synced to subscribers) */
64
+ track(state: Record<string, any>): void;
65
+ /** Stop tracking presence on this channel */
66
+ untrack(): void;
42
67
  /** @internal */
43
68
  _emit(payload: RealtimePayload<T>): void;
44
69
  }
@@ -57,6 +82,7 @@ export declare class NodeRealtimeClient {
57
82
  private _connectingPromise;
58
83
  private _status;
59
84
  private _statusListeners;
85
+ private _httpBaseUrl;
60
86
  private _lastPong;
61
87
  private _maxReconnectAttempts;
62
88
  private _maxRetriesListeners;
@@ -71,9 +97,14 @@ export declare class NodeRealtimeClient {
71
97
  private _doConnect;
72
98
  disconnect(): void;
73
99
  channel<T = any>(topic: string, options?: RealtimeSubscriptionOptions): RealtimeSubscription<T>;
74
- sendChat(roomId: string, text: string): void;
100
+ /** Legacy: send a chat message (now persisted to DB) */
101
+ sendChat(roomId: string, text: string, metadata?: Record<string, any>): void;
102
+ /** @internal — Generate unique message ID for ack tracking */
103
+ _generateId(): string;
75
104
  /** @internal */
76
105
  _send(data: any): void;
106
+ /** @internal — Fetch chat/event history via REST API */
107
+ _fetchHistory(room: string, limit?: number, before?: number): Promise<HistoryMessage[]>;
77
108
  private handleMessage;
78
109
  private startHeartbeat;
79
110
  private stopHeartbeat;
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ class RealtimeSubscription {
15
15
  this.topic = topic;
16
16
  this.options = options;
17
17
  }
18
+ /** Listen for DB change events (INSERT/UPDATE/DELETE/*) or custom named events */
18
19
  on(event, callback) {
19
20
  if (!this.callbacks.has(event)) {
20
21
  this.callbacks.set(event, new Set());
@@ -22,6 +23,11 @@ class RealtimeSubscription {
22
23
  this.callbacks.get(event).add(callback);
23
24
  return this;
24
25
  }
26
+ /** Remove a specific callback for an event */
27
+ off(event, callback) {
28
+ this.callbacks.get(event)?.delete(callback);
29
+ return this;
30
+ }
25
31
  subscribe() {
26
32
  if (this._isSubscribed)
27
33
  return this;
@@ -44,17 +50,51 @@ class RealtimeSubscription {
44
50
  this.callbacks.clear();
45
51
  }
46
52
  get isSubscribed() { return this._isSubscribed; }
53
+ // ─── Phase 1: Pub/Sub — Publish custom events ─────────────────────────
54
+ /** Publish a custom event to all subscribers on this channel */
55
+ publish(event, data, options) {
56
+ this.client._send({
57
+ type: 'publish',
58
+ topic: this.topic,
59
+ event,
60
+ data,
61
+ persist: options?.persist,
62
+ id: this.client._generateId(),
63
+ });
64
+ }
65
+ // ─── Phase 2: Chat History ────────────────────────────────────────────
66
+ /** Fetch persisted message history for this channel (requires persist: true on publish) */
67
+ async getHistory(limit = 50, before) {
68
+ return this.client._fetchHistory(this.topic, limit, before);
69
+ }
70
+ // ─── Phase 3: Presence ────────────────────────────────────────────────
71
+ /** Track this user's presence state on this channel (auto-synced to subscribers) */
72
+ track(state) {
73
+ this.client._send({
74
+ type: 'track',
75
+ topic: this.topic,
76
+ state,
77
+ });
78
+ }
79
+ /** Stop tracking presence on this channel */
80
+ untrack() {
81
+ this.client._send({
82
+ type: 'untrack',
83
+ topic: this.topic,
84
+ });
85
+ }
47
86
  /** @internal */
48
87
  _emit(payload) {
49
- const event = payload.operation;
50
- this.callbacks.get(event)?.forEach(cb => {
51
- try {
52
- cb(payload);
53
- }
54
- catch (e) {
55
- console.error('Realtime callback error:', e);
56
- }
57
- });
88
+ // DB change events (INSERT/UPDATE/DELETE)
89
+ if (payload.operation) {
90
+ const event = payload.operation;
91
+ this.callbacks.get(event)?.forEach(cb => cb(payload));
92
+ }
93
+ // Custom named events ('player-moved', 'presence:join', etc.)
94
+ if (payload.event) {
95
+ this.callbacks.get(payload.event)?.forEach(cb => cb(payload));
96
+ }
97
+ // Catch-all
58
98
  this.callbacks.get('*')?.forEach(cb => {
59
99
  try {
60
100
  cb(payload);
@@ -83,6 +123,7 @@ class NodeRealtimeClient {
83
123
  uri.protocol = uri.protocol === 'https:' ? 'wss:' : 'ws:';
84
124
  uri.pathname = uri.pathname.replace(/\/v1\/?$/, '') + '/api/realtime';
85
125
  this.wsUrl = uri.toString();
126
+ this._httpBaseUrl = options.serverUrl.replace(/\/v1\/?$/, '');
86
127
  this.apiKey = options.apiKey;
87
128
  this.token = options.token;
88
129
  this.projectId = options.projectId;
@@ -211,8 +252,13 @@ class NodeRealtimeClient {
211
252
  }
212
253
  return sub;
213
254
  }
214
- sendChat(roomId, text) {
215
- this._send({ type: 'chat', roomId, text });
255
+ /** Legacy: send a chat message (now persisted to DB) */
256
+ sendChat(roomId, text, metadata) {
257
+ this._send({ type: 'chat', roomId, text, metadata });
258
+ }
259
+ /** @internal — Generate unique message ID for ack tracking */
260
+ _generateId() {
261
+ return Math.random().toString(36).slice(2) + Date.now().toString(36);
216
262
  }
217
263
  /** @internal */
218
264
  _send(data) {
@@ -223,14 +269,49 @@ class NodeRealtimeClient {
223
269
  this._sendQueue.push(data);
224
270
  }
225
271
  }
272
+ /** @internal — Fetch chat/event history via REST API */
273
+ async _fetchHistory(room, limit = 50, before) {
274
+ const url = new URL(`${this._httpBaseUrl}/api/v1/public/realtime/history`);
275
+ url.searchParams.set('room', room);
276
+ url.searchParams.set('limit', String(limit));
277
+ if (before)
278
+ url.searchParams.set('before', String(before));
279
+ const headers = {};
280
+ if (this.apiKey)
281
+ headers['X-Aerostack-Key'] = this.apiKey;
282
+ if (this.token)
283
+ headers['Authorization'] = `Bearer ${this.token}`;
284
+ const res = await fetch(url.toString(), { headers });
285
+ const json = await res.json();
286
+ return json.messages || [];
287
+ }
226
288
  handleMessage(data) {
289
+ // Track pong for liveness
227
290
  if (data.type === 'pong') {
228
291
  this._lastPong = Date.now();
229
292
  return;
230
293
  }
231
- const sub = this.subscriptions.get(data.topic);
232
- if (sub)
233
- sub._emit(data);
294
+ // Ack (fire-and-forget acknowledgment from server)
295
+ if (data.type === 'ack') {
296
+ return;
297
+ }
298
+ // Route to subscription: db_change, chat_message, event, presence:*
299
+ if (data.type === 'db_change' || data.type === 'chat_message' || data.type === 'event') {
300
+ const sub = this.subscriptions.get(data.topic);
301
+ if (sub)
302
+ sub._emit(data);
303
+ }
304
+ // Re-key subscription on server-confirmed topic (for non-TS SDKs compatibility)
305
+ if (data.type === 'subscribed' && data.topic) {
306
+ for (const [origTopic, sub] of this.subscriptions.entries()) {
307
+ if (data.topic !== origTopic && data.topic.startsWith(origTopic)) {
308
+ this.subscriptions.delete(origTopic);
309
+ sub.topic = data.topic;
310
+ this.subscriptions.set(data.topic, sub);
311
+ break;
312
+ }
313
+ }
314
+ }
234
315
  }
235
316
  startHeartbeat() {
236
317
  this.heartbeatTimer = setInterval(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as gen from './_generated/index.js';
2
2
  import { NodeRealtimeClient } from './realtime.js';
3
+ import { AerostackClient } from '@aerostack/core';
3
4
  export interface SDKOptions {
4
5
  /**
5
6
  * Aerostack API Key.
@@ -12,6 +13,7 @@ export interface SDKOptions {
12
13
  /** Alias for serverUrl for backward compatibility */
13
14
  serverURL?: string;
14
15
  maxReconnectAttempts?: number;
16
+ projectId?: string;
15
17
  }
16
18
  /**
17
19
  * Compatibility wrapper for Database API
@@ -32,6 +34,11 @@ declare class DatabaseFacade {
32
34
  /**
33
35
  * Aerostack SDK Facade for Node.js.
34
36
  * Provides a clean, ergonomic API for all Aerostack services.
37
+ *
38
+ * Use `sdk.rpc` for the full enterprise API surface (cache bulk ops,
39
+ * storage CRUD, db batch, queue job tracking, vector enhancements).
40
+ * The top-level properties (cache, storage, etc.) use OpenAPI-generated
41
+ * classes and are kept for backward compatibility.
35
42
  */
36
43
  export declare class SDK {
37
44
  readonly database: DatabaseFacade;
@@ -43,6 +50,14 @@ export declare class SDK {
43
50
  readonly services: gen.ServicesApi;
44
51
  readonly gateway: gen.GatewayApi;
45
52
  readonly realtime: NodeRealtimeClient;
53
+ /**
54
+ * Full enterprise RPC client — exposes all new methods:
55
+ * cache.list/keys/getMany/setMany/deleteMany/flush/expire/increment
56
+ * storage.get/getUrl/list/delete/exists/getMetadata/copy/move
57
+ * db.batch, queue.getJob/listJobs/cancelJob
58
+ * ai.search.update/get/count
59
+ */
60
+ readonly rpc: AerostackClient;
46
61
  private config;
47
62
  constructor(options?: SDKOptions);
48
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,cAAM,cAAc;IACJ,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,GAAG,CAAC,WAAW;IAExC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE;QAClB,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACpC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACtB;CAOJ;AAED;;;GAGG;AACH,qBAAa,GAAG;IACZ,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC5C,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC;IAC9B,SAAgB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;IAC1C,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAE7C,OAAO,CAAC,MAAM,CAAoB;gBAEtB,OAAO,GAAE,UAAe;IA0BpC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAelC;AAED,kCAAkC;AAClC,eAAO,MAAM,SAAS,YAAM,CAAC;AAG7B,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,QAAqB,CAAC"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,cAAM,cAAc;IACJ,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,GAAG,CAAC,WAAW;IAExC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE;QAClB,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACpC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACtB;CAOJ;AAED;;;;;;;;GAQG;AACH,qBAAa,GAAG;IACZ,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC5C,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC;IAC9B,SAAgB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;IAC1C,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C;;;;;;OAMG;IACH,SAAgB,GAAG,EAAE,eAAe,CAAC;IAErC,OAAO,CAAC,MAAM,CAAoB;gBAEtB,OAAO,GAAE,UAAe;IAkCpC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAmBlC;AAED,kCAAkC;AAClC,eAAO,MAAM,SAAS,YAAM,CAAC;AAG7B,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,QAAqB,CAAC"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.createClient = exports.Aerostack = exports.SDK = void 0;
37
37
  const gen = __importStar(require("./_generated/index.js"));
38
38
  const realtime_js_1 = require("./realtime.js");
39
+ const core_1 = require("@aerostack/core");
39
40
  /**
40
41
  * Compatibility wrapper for Database API
41
42
  */
@@ -57,6 +58,11 @@ class DatabaseFacade {
57
58
  /**
58
59
  * Aerostack SDK Facade for Node.js.
59
60
  * Provides a clean, ergonomic API for all Aerostack services.
61
+ *
62
+ * Use `sdk.rpc` for the full enterprise API surface (cache bulk ops,
63
+ * storage CRUD, db batch, queue job tracking, vector enhancements).
64
+ * The top-level properties (cache, storage, etc.) use OpenAPI-generated
65
+ * classes and are kept for backward compatibility.
60
66
  */
61
67
  class SDK {
62
68
  constructor(options = {}) {
@@ -75,9 +81,16 @@ class SDK {
75
81
  this.ai = new gen.AIApi(this.config);
76
82
  this.services = new gen.ServicesApi(this.config);
77
83
  this.gateway = new gen.GatewayApi(this.config);
84
+ // Enterprise client — full API surface
85
+ this.rpc = new core_1.AerostackClient({
86
+ baseUrl: serverUrl,
87
+ apiKey,
88
+ projectId: options.projectId,
89
+ });
78
90
  this.realtime = new realtime_js_1.NodeRealtimeClient({
79
91
  serverUrl,
80
92
  apiKey: apiKey,
93
+ projectId: options.projectId,
81
94
  maxReconnectAttempts: options.maxReconnectAttempts
82
95
  });
83
96
  }
@@ -98,6 +111,10 @@ class SDK {
98
111
  this.ai = new gen.AIApi(this.config);
99
112
  this.services = new gen.ServicesApi(this.config);
100
113
  this.gateway = new gen.GatewayApi(this.config);
114
+ this.rpc = new core_1.AerostackClient({
115
+ baseUrl: this.config.basePath,
116
+ apiKey,
117
+ });
101
118
  }
102
119
  }
103
120
  exports.SDK = SDK;
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Aerostack Realtime Client for Node.js SDK
3
3
  */
4
- export type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*';
4
+ export type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*' | string;
5
5
  export interface RealtimeMessage {
6
6
  type: string;
7
7
  topic: string;
@@ -12,15 +12,27 @@ export interface RealtimeSubscriptionOptions {
12
12
  filter?: Record<string, any>;
13
13
  }
14
14
  export type RealtimeCallback<T = any> = (payload: RealtimePayload<T>) => void;
15
+ /** Typed payload for realtime events */
15
16
  export interface RealtimePayload<T = any> {
16
- type: 'db_change' | 'chat_message';
17
+ type: 'db_change' | 'chat_message' | 'event';
17
18
  topic: string;
18
- operation: RealtimeEvent;
19
+ operation?: RealtimeEvent;
20
+ event?: string;
19
21
  data: T;
20
22
  old?: T;
21
- timestamp?: string;
23
+ userId?: string;
24
+ timestamp?: number | string;
22
25
  [key: string]: any;
23
26
  }
27
+ /** Chat history message returned from REST API */
28
+ export interface HistoryMessage {
29
+ id: string;
30
+ room_id: string;
31
+ user_id: string;
32
+ event: string;
33
+ data: any;
34
+ created_at: number;
35
+ }
24
36
  export interface NodeRealtimeOptions {
25
37
  serverUrl: string;
26
38
  apiKey?: string;
@@ -30,15 +42,28 @@ export interface NodeRealtimeOptions {
30
42
  }
31
43
  export declare class RealtimeSubscription<T = any> {
32
44
  private client;
33
- private topic;
45
+ topic: string;
34
46
  private options;
35
47
  private callbacks;
36
48
  private _isSubscribed;
37
49
  constructor(client: NodeRealtimeClient, topic: string, options?: RealtimeSubscriptionOptions);
38
- on(event: RealtimeEvent, callback: RealtimeCallback<T>): this;
50
+ /** Listen for DB change events (INSERT/UPDATE/DELETE/*) or custom named events */
51
+ on(event: RealtimeEvent | string, callback: RealtimeCallback<T>): this;
52
+ /** Remove a specific callback for an event */
53
+ off(event: RealtimeEvent | string, callback: RealtimeCallback<T>): this;
39
54
  subscribe(): this;
40
55
  unsubscribe(): void;
41
56
  get isSubscribed(): boolean;
57
+ /** Publish a custom event to all subscribers on this channel */
58
+ publish(event: string, data: any, options?: {
59
+ persist?: boolean;
60
+ }): void;
61
+ /** Fetch persisted message history for this channel (requires persist: true on publish) */
62
+ getHistory(limit?: number, before?: number): Promise<HistoryMessage[]>;
63
+ /** Track this user's presence state on this channel (auto-synced to subscribers) */
64
+ track(state: Record<string, any>): void;
65
+ /** Stop tracking presence on this channel */
66
+ untrack(): void;
42
67
  /** @internal */
43
68
  _emit(payload: RealtimePayload<T>): void;
44
69
  }
@@ -57,6 +82,7 @@ export declare class NodeRealtimeClient {
57
82
  private _connectingPromise;
58
83
  private _status;
59
84
  private _statusListeners;
85
+ private _httpBaseUrl;
60
86
  private _lastPong;
61
87
  private _maxReconnectAttempts;
62
88
  private _maxRetriesListeners;
@@ -71,9 +97,14 @@ export declare class NodeRealtimeClient {
71
97
  private _doConnect;
72
98
  disconnect(): void;
73
99
  channel<T = any>(topic: string, options?: RealtimeSubscriptionOptions): RealtimeSubscription<T>;
74
- sendChat(roomId: string, text: string): void;
100
+ /** Legacy: send a chat message (now persisted to DB) */
101
+ sendChat(roomId: string, text: string, metadata?: Record<string, any>): void;
102
+ /** @internal — Generate unique message ID for ack tracking */
103
+ _generateId(): string;
75
104
  /** @internal */
76
105
  _send(data: any): void;
106
+ /** @internal — Fetch chat/event history via REST API */
107
+ _fetchHistory(room: string, limit?: number, before?: number): Promise<HistoryMessage[]>;
77
108
  private handleMessage;
78
109
  private startHeartbeat;
79
110
  private stopHeartbeat;
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export class RealtimeSubscription {
12
12
  this.topic = topic;
13
13
  this.options = options;
14
14
  }
15
+ /** Listen for DB change events (INSERT/UPDATE/DELETE/*) or custom named events */
15
16
  on(event, callback) {
16
17
  if (!this.callbacks.has(event)) {
17
18
  this.callbacks.set(event, new Set());
@@ -19,6 +20,11 @@ export class RealtimeSubscription {
19
20
  this.callbacks.get(event).add(callback);
20
21
  return this;
21
22
  }
23
+ /** Remove a specific callback for an event */
24
+ off(event, callback) {
25
+ this.callbacks.get(event)?.delete(callback);
26
+ return this;
27
+ }
22
28
  subscribe() {
23
29
  if (this._isSubscribed)
24
30
  return this;
@@ -41,17 +47,51 @@ export class RealtimeSubscription {
41
47
  this.callbacks.clear();
42
48
  }
43
49
  get isSubscribed() { return this._isSubscribed; }
50
+ // ─── Phase 1: Pub/Sub — Publish custom events ─────────────────────────
51
+ /** Publish a custom event to all subscribers on this channel */
52
+ publish(event, data, options) {
53
+ this.client._send({
54
+ type: 'publish',
55
+ topic: this.topic,
56
+ event,
57
+ data,
58
+ persist: options?.persist,
59
+ id: this.client._generateId(),
60
+ });
61
+ }
62
+ // ─── Phase 2: Chat History ────────────────────────────────────────────
63
+ /** Fetch persisted message history for this channel (requires persist: true on publish) */
64
+ async getHistory(limit = 50, before) {
65
+ return this.client._fetchHistory(this.topic, limit, before);
66
+ }
67
+ // ─── Phase 3: Presence ────────────────────────────────────────────────
68
+ /** Track this user's presence state on this channel (auto-synced to subscribers) */
69
+ track(state) {
70
+ this.client._send({
71
+ type: 'track',
72
+ topic: this.topic,
73
+ state,
74
+ });
75
+ }
76
+ /** Stop tracking presence on this channel */
77
+ untrack() {
78
+ this.client._send({
79
+ type: 'untrack',
80
+ topic: this.topic,
81
+ });
82
+ }
44
83
  /** @internal */
45
84
  _emit(payload) {
46
- const event = payload.operation;
47
- this.callbacks.get(event)?.forEach(cb => {
48
- try {
49
- cb(payload);
50
- }
51
- catch (e) {
52
- console.error('Realtime callback error:', e);
53
- }
54
- });
85
+ // DB change events (INSERT/UPDATE/DELETE)
86
+ if (payload.operation) {
87
+ const event = payload.operation;
88
+ this.callbacks.get(event)?.forEach(cb => cb(payload));
89
+ }
90
+ // Custom named events ('player-moved', 'presence:join', etc.)
91
+ if (payload.event) {
92
+ this.callbacks.get(payload.event)?.forEach(cb => cb(payload));
93
+ }
94
+ // Catch-all
55
95
  this.callbacks.get('*')?.forEach(cb => {
56
96
  try {
57
97
  cb(payload);
@@ -79,6 +119,7 @@ export class NodeRealtimeClient {
79
119
  uri.protocol = uri.protocol === 'https:' ? 'wss:' : 'ws:';
80
120
  uri.pathname = uri.pathname.replace(/\/v1\/?$/, '') + '/api/realtime';
81
121
  this.wsUrl = uri.toString();
122
+ this._httpBaseUrl = options.serverUrl.replace(/\/v1\/?$/, '');
82
123
  this.apiKey = options.apiKey;
83
124
  this.token = options.token;
84
125
  this.projectId = options.projectId;
@@ -207,8 +248,13 @@ export class NodeRealtimeClient {
207
248
  }
208
249
  return sub;
209
250
  }
210
- sendChat(roomId, text) {
211
- this._send({ type: 'chat', roomId, text });
251
+ /** Legacy: send a chat message (now persisted to DB) */
252
+ sendChat(roomId, text, metadata) {
253
+ this._send({ type: 'chat', roomId, text, metadata });
254
+ }
255
+ /** @internal — Generate unique message ID for ack tracking */
256
+ _generateId() {
257
+ return Math.random().toString(36).slice(2) + Date.now().toString(36);
212
258
  }
213
259
  /** @internal */
214
260
  _send(data) {
@@ -219,14 +265,49 @@ export class NodeRealtimeClient {
219
265
  this._sendQueue.push(data);
220
266
  }
221
267
  }
268
+ /** @internal — Fetch chat/event history via REST API */
269
+ async _fetchHistory(room, limit = 50, before) {
270
+ const url = new URL(`${this._httpBaseUrl}/api/v1/public/realtime/history`);
271
+ url.searchParams.set('room', room);
272
+ url.searchParams.set('limit', String(limit));
273
+ if (before)
274
+ url.searchParams.set('before', String(before));
275
+ const headers = {};
276
+ if (this.apiKey)
277
+ headers['X-Aerostack-Key'] = this.apiKey;
278
+ if (this.token)
279
+ headers['Authorization'] = `Bearer ${this.token}`;
280
+ const res = await fetch(url.toString(), { headers });
281
+ const json = await res.json();
282
+ return json.messages || [];
283
+ }
222
284
  handleMessage(data) {
285
+ // Track pong for liveness
223
286
  if (data.type === 'pong') {
224
287
  this._lastPong = Date.now();
225
288
  return;
226
289
  }
227
- const sub = this.subscriptions.get(data.topic);
228
- if (sub)
229
- sub._emit(data);
290
+ // Ack (fire-and-forget acknowledgment from server)
291
+ if (data.type === 'ack') {
292
+ return;
293
+ }
294
+ // Route to subscription: db_change, chat_message, event, presence:*
295
+ if (data.type === 'db_change' || data.type === 'chat_message' || data.type === 'event') {
296
+ const sub = this.subscriptions.get(data.topic);
297
+ if (sub)
298
+ sub._emit(data);
299
+ }
300
+ // Re-key subscription on server-confirmed topic (for non-TS SDKs compatibility)
301
+ if (data.type === 'subscribed' && data.topic) {
302
+ for (const [origTopic, sub] of this.subscriptions.entries()) {
303
+ if (data.topic !== origTopic && data.topic.startsWith(origTopic)) {
304
+ this.subscriptions.delete(origTopic);
305
+ sub.topic = data.topic;
306
+ this.subscriptions.set(data.topic, sub);
307
+ break;
308
+ }
309
+ }
310
+ }
230
311
  }
231
312
  startHeartbeat() {
232
313
  this.heartbeatTimer = setInterval(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/realtime.ts"],"names":[],"mappings":"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"}
package/dist/esm/sdk.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as gen from './_generated/index.js';
2
2
  import { NodeRealtimeClient } from './realtime.js';
3
+ import { AerostackClient } from '@aerostack/core';
3
4
  export interface SDKOptions {
4
5
  /**
5
6
  * Aerostack API Key.
@@ -12,6 +13,7 @@ export interface SDKOptions {
12
13
  /** Alias for serverUrl for backward compatibility */
13
14
  serverURL?: string;
14
15
  maxReconnectAttempts?: number;
16
+ projectId?: string;
15
17
  }
16
18
  /**
17
19
  * Compatibility wrapper for Database API
@@ -32,6 +34,11 @@ declare class DatabaseFacade {
32
34
  /**
33
35
  * Aerostack SDK Facade for Node.js.
34
36
  * Provides a clean, ergonomic API for all Aerostack services.
37
+ *
38
+ * Use `sdk.rpc` for the full enterprise API surface (cache bulk ops,
39
+ * storage CRUD, db batch, queue job tracking, vector enhancements).
40
+ * The top-level properties (cache, storage, etc.) use OpenAPI-generated
41
+ * classes and are kept for backward compatibility.
35
42
  */
36
43
  export declare class SDK {
37
44
  readonly database: DatabaseFacade;
@@ -43,6 +50,14 @@ export declare class SDK {
43
50
  readonly services: gen.ServicesApi;
44
51
  readonly gateway: gen.GatewayApi;
45
52
  readonly realtime: NodeRealtimeClient;
53
+ /**
54
+ * Full enterprise RPC client — exposes all new methods:
55
+ * cache.list/keys/getMany/setMany/deleteMany/flush/expire/increment
56
+ * storage.get/getUrl/list/delete/exists/getMetadata/copy/move
57
+ * db.batch, queue.getJob/listJobs/cancelJob
58
+ * ai.search.update/get/count
59
+ */
60
+ readonly rpc: AerostackClient;
46
61
  private config;
47
62
  constructor(options?: SDKOptions);
48
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,cAAM,cAAc;IACJ,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,GAAG,CAAC,WAAW;IAExC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE;QAClB,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACpC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACtB;CAOJ;AAED;;;GAGG;AACH,qBAAa,GAAG;IACZ,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC5C,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC;IAC9B,SAAgB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;IAC1C,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAE7C,OAAO,CAAC,MAAM,CAAoB;gBAEtB,OAAO,GAAE,UAAe;IA0BpC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAelC;AAED,kCAAkC;AAClC,eAAO,MAAM,SAAS,YAAM,CAAC;AAG7B,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,QAAqB,CAAC"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,cAAM,cAAc;IACJ,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,GAAG,CAAC,WAAW;IAExC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE;QAClB,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACpC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACtB;CAOJ;AAED;;;;;;;;GAQG;AACH,qBAAa,GAAG;IACZ,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC5C,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpC,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC;IAC9B,SAAgB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;IAC1C,SAAgB,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;IACxC,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C;;;;;;OAMG;IACH,SAAgB,GAAG,EAAE,eAAe,CAAC;IAErC,OAAO,CAAC,MAAM,CAAoB;gBAEtB,OAAO,GAAE,UAAe;IAkCpC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAmBlC;AAED,kCAAkC;AAClC,eAAO,MAAM,SAAS,YAAM,CAAC;AAG7B,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,QAAqB,CAAC"}
package/dist/esm/sdk.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as gen from './_generated/index.js';
2
2
  import { NodeRealtimeClient } from './realtime.js';
3
+ import { AerostackClient } from '@aerostack/core';
3
4
  /**
4
5
  * Compatibility wrapper for Database API
5
6
  */
@@ -21,6 +22,11 @@ class DatabaseFacade {
21
22
  /**
22
23
  * Aerostack SDK Facade for Node.js.
23
24
  * Provides a clean, ergonomic API for all Aerostack services.
25
+ *
26
+ * Use `sdk.rpc` for the full enterprise API surface (cache bulk ops,
27
+ * storage CRUD, db batch, queue job tracking, vector enhancements).
28
+ * The top-level properties (cache, storage, etc.) use OpenAPI-generated
29
+ * classes and are kept for backward compatibility.
24
30
  */
25
31
  export class SDK {
26
32
  constructor(options = {}) {
@@ -39,9 +45,16 @@ export class SDK {
39
45
  this.ai = new gen.AIApi(this.config);
40
46
  this.services = new gen.ServicesApi(this.config);
41
47
  this.gateway = new gen.GatewayApi(this.config);
48
+ // Enterprise client — full API surface
49
+ this.rpc = new AerostackClient({
50
+ baseUrl: serverUrl,
51
+ apiKey,
52
+ projectId: options.projectId,
53
+ });
42
54
  this.realtime = new NodeRealtimeClient({
43
55
  serverUrl,
44
56
  apiKey: apiKey,
57
+ projectId: options.projectId,
45
58
  maxReconnectAttempts: options.maxReconnectAttempts
46
59
  });
47
60
  }
@@ -62,6 +75,10 @@ export class SDK {
62
75
  this.ai = new gen.AIApi(this.config);
63
76
  this.services = new gen.ServicesApi(this.config);
64
77
  this.gateway = new gen.GatewayApi(this.config);
78
+ this.rpc = new AerostackClient({
79
+ baseUrl: this.config.basePath,
80
+ apiKey,
81
+ });
65
82
  }
66
83
  }
67
84
  /** @deprecated Use SDK instead */
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAgBnD;;GAEG;AACH,MAAM,cAAc;IAChB,YAAoB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;IAAI,CAAC;IAE7C;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAKb;QACG,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACpB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,WAAY;YAC5D,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC,CAAC;IACP,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,GAAG;IAaZ,YAAY,UAAsB,EAAE;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,4BAA4B,CAAC;QACzF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;YAChC,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC;YACnC,SAAS;YACT,MAAM,EAAE,MAAM;YACd,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACrD,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;YAChC,GAAG,IAAI,CAAC,MAAM;YACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE;YAC9D,MAAM;SACT,CAAC,CAAC;QACF,IAAY,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,IAAY,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAY,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAY,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAY,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAY,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAY,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACJ;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAmB,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aerostack/sdk-node",
3
- "version": "0.7.5",
3
+ "version": "0.7.7",
4
4
  "author": "Aerostack",
5
5
  "type": "module",
6
6
  "tshy": {
@@ -31,7 +31,7 @@
31
31
  "ws": "^8.19.0"
32
32
  },
33
33
  "dependencies": {
34
- "@aerostack/core": "^0.7.5",
34
+ "@aerostack/core": "^0.7.7",
35
35
  "zod": "^3.25.0 || ^4.0.0"
36
36
  },
37
37
  "exports": {
package/src/realtime.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Aerostack Realtime Client for Node.js SDK
3
3
  */
4
4
 
5
- export type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*';
5
+ export type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*' | string;
6
6
 
7
7
  export interface RealtimeMessage {
8
8
  type: string;
@@ -17,16 +17,29 @@ export interface RealtimeSubscriptionOptions {
17
17
 
18
18
  export type RealtimeCallback<T = any> = (payload: RealtimePayload<T>) => void;
19
19
 
20
+ /** Typed payload for realtime events */
20
21
  export interface RealtimePayload<T = any> {
21
- type: 'db_change' | 'chat_message';
22
+ type: 'db_change' | 'chat_message' | 'event';
22
23
  topic: string;
23
- operation: RealtimeEvent;
24
+ operation?: RealtimeEvent;
25
+ event?: string;
24
26
  data: T;
25
27
  old?: T;
26
- timestamp?: string;
28
+ userId?: string;
29
+ timestamp?: number | string;
27
30
  [key: string]: any;
28
31
  }
29
32
 
33
+ /** Chat history message returned from REST API */
34
+ export interface HistoryMessage {
35
+ id: string;
36
+ room_id: string;
37
+ user_id: string;
38
+ event: string;
39
+ data: any;
40
+ created_at: number;
41
+ }
42
+
30
43
  export interface NodeRealtimeOptions {
31
44
  serverUrl: string;
32
45
  apiKey?: string;
@@ -41,9 +54,9 @@ const JITTER_FACTOR = 0.3;
41
54
 
42
55
  export class RealtimeSubscription<T = any> {
43
56
  private client: NodeRealtimeClient;
44
- private topic: string;
57
+ topic: string;
45
58
  private options: RealtimeSubscriptionOptions;
46
- private callbacks: Map<RealtimeEvent, Set<RealtimeCallback<T>>> = new Map();
59
+ private callbacks: Map<string, Set<RealtimeCallback<T>>> = new Map();
47
60
  private _isSubscribed: boolean = false;
48
61
 
49
62
  constructor(client: NodeRealtimeClient, topic: string, options: RealtimeSubscriptionOptions = {}) {
@@ -52,7 +65,8 @@ export class RealtimeSubscription<T = any> {
52
65
  this.options = options;
53
66
  }
54
67
 
55
- on(event: RealtimeEvent, callback: RealtimeCallback<T>): this {
68
+ /** Listen for DB change events (INSERT/UPDATE/DELETE/*) or custom named events */
69
+ on(event: RealtimeEvent | string, callback: RealtimeCallback<T>): this {
56
70
  if (!this.callbacks.has(event)) {
57
71
  this.callbacks.set(event, new Set());
58
72
  }
@@ -60,6 +74,12 @@ export class RealtimeSubscription<T = any> {
60
74
  return this;
61
75
  }
62
76
 
77
+ /** Remove a specific callback for an event */
78
+ off(event: RealtimeEvent | string, callback: RealtimeCallback<T>): this {
79
+ this.callbacks.get(event)?.delete(callback);
80
+ return this;
81
+ }
82
+
63
83
  subscribe(): this {
64
84
  if (this._isSubscribed) return this;
65
85
  this.client._send({
@@ -83,12 +103,55 @@ export class RealtimeSubscription<T = any> {
83
103
 
84
104
  get isSubscribed() { return this._isSubscribed; }
85
105
 
106
+ // ─── Phase 1: Pub/Sub — Publish custom events ─────────────────────────
107
+ /** Publish a custom event to all subscribers on this channel */
108
+ publish(event: string, data: any, options?: { persist?: boolean }): void {
109
+ this.client._send({
110
+ type: 'publish',
111
+ topic: this.topic,
112
+ event,
113
+ data,
114
+ persist: options?.persist,
115
+ id: this.client._generateId(),
116
+ });
117
+ }
118
+
119
+ // ─── Phase 2: Chat History ────────────────────────────────────────────
120
+ /** Fetch persisted message history for this channel (requires persist: true on publish) */
121
+ async getHistory(limit: number = 50, before?: number): Promise<HistoryMessage[]> {
122
+ return this.client._fetchHistory(this.topic, limit, before);
123
+ }
124
+
125
+ // ─── Phase 3: Presence ────────────────────────────────────────────────
126
+ /** Track this user's presence state on this channel (auto-synced to subscribers) */
127
+ track(state: Record<string, any>): void {
128
+ this.client._send({
129
+ type: 'track',
130
+ topic: this.topic,
131
+ state,
132
+ });
133
+ }
134
+
135
+ /** Stop tracking presence on this channel */
136
+ untrack(): void {
137
+ this.client._send({
138
+ type: 'untrack',
139
+ topic: this.topic,
140
+ });
141
+ }
142
+
86
143
  /** @internal */
87
144
  _emit(payload: RealtimePayload<T>): void {
88
- const event = payload.operation as RealtimeEvent;
89
- this.callbacks.get(event)?.forEach(cb => {
90
- try { cb(payload); } catch (e) { console.error('Realtime callback error:', e); }
91
- });
145
+ // DB change events (INSERT/UPDATE/DELETE)
146
+ if (payload.operation) {
147
+ const event = payload.operation as string;
148
+ this.callbacks.get(event)?.forEach(cb => cb(payload));
149
+ }
150
+ // Custom named events ('player-moved', 'presence:join', etc.)
151
+ if (payload.event) {
152
+ this.callbacks.get(payload.event)?.forEach(cb => cb(payload));
153
+ }
154
+ // Catch-all
92
155
  this.callbacks.get('*')?.forEach(cb => {
93
156
  try { cb(payload); } catch (e) { console.error('Realtime callback error:', e); }
94
157
  });
@@ -111,6 +174,8 @@ export class NodeRealtimeClient {
111
174
  private _connectingPromise: Promise<void> | null = null;
112
175
  private _status: RealtimeStatus = 'idle';
113
176
  private _statusListeners: Set<(s: RealtimeStatus) => void> = new Set();
177
+ // HTTP base URL for REST endpoints (history, etc.)
178
+ private _httpBaseUrl: string;
114
179
  private _lastPong: number = 0;
115
180
  private _maxReconnectAttempts: number;
116
181
  private _maxRetriesListeners: Set<() => void> = new Set();
@@ -120,6 +185,7 @@ export class NodeRealtimeClient {
120
185
  uri.protocol = uri.protocol === 'https:' ? 'wss:' : 'ws:';
121
186
  uri.pathname = uri.pathname.replace(/\/v1\/?$/, '') + '/api/realtime';
122
187
  this.wsUrl = uri.toString();
188
+ this._httpBaseUrl = options.serverUrl.replace(/\/v1\/?$/, '');
123
189
  this.apiKey = options.apiKey;
124
190
  this.token = options.token;
125
191
  this.projectId = options.projectId;
@@ -252,8 +318,14 @@ export class NodeRealtimeClient {
252
318
  return sub as RealtimeSubscription<T>;
253
319
  }
254
320
 
255
- sendChat(roomId: string, text: string): void {
256
- this._send({ type: 'chat', roomId, text });
321
+ /** Legacy: send a chat message (now persisted to DB) */
322
+ sendChat(roomId: string, text: string, metadata?: Record<string, any>): void {
323
+ this._send({ type: 'chat', roomId, text, metadata });
324
+ }
325
+
326
+ /** @internal — Generate unique message ID for ack tracking */
327
+ _generateId(): string {
328
+ return Math.random().toString(36).slice(2) + Date.now().toString(36);
257
329
  }
258
330
 
259
331
  /** @internal */
@@ -265,13 +337,51 @@ export class NodeRealtimeClient {
265
337
  }
266
338
  }
267
339
 
340
+ /** @internal — Fetch chat/event history via REST API */
341
+ async _fetchHistory(room: string, limit: number = 50, before?: number): Promise<HistoryMessage[]> {
342
+ const url = new URL(`${this._httpBaseUrl}/api/v1/public/realtime/history`);
343
+ url.searchParams.set('room', room);
344
+ url.searchParams.set('limit', String(limit));
345
+ if (before) url.searchParams.set('before', String(before));
346
+
347
+ const headers: Record<string, string> = {};
348
+ if (this.apiKey) headers['X-Aerostack-Key'] = this.apiKey;
349
+ if (this.token) headers['Authorization'] = `Bearer ${this.token}`;
350
+
351
+ const res = await fetch(url.toString(), { headers });
352
+ const json = await res.json() as any;
353
+ return json.messages || [];
354
+ }
355
+
268
356
  private handleMessage(data: RealtimeMessage): void {
357
+ // Track pong for liveness
269
358
  if (data.type === 'pong') {
270
359
  this._lastPong = Date.now();
271
360
  return;
272
361
  }
273
- const sub = this.subscriptions.get(data.topic);
274
- if (sub) sub._emit(data as any);
362
+
363
+ // Ack (fire-and-forget acknowledgment from server)
364
+ if (data.type === 'ack') {
365
+ return;
366
+ }
367
+
368
+ // Route to subscription: db_change, chat_message, event, presence:*
369
+ if (data.type === 'db_change' || data.type === 'chat_message' || data.type === 'event') {
370
+ const sub = this.subscriptions.get(data.topic);
371
+ if (sub) sub._emit(data as any);
372
+ }
373
+
374
+ // Re-key subscription on server-confirmed topic (for non-TS SDKs compatibility)
375
+ if (data.type === 'subscribed' && data.topic) {
376
+ for (const [origTopic, sub] of this.subscriptions.entries()) {
377
+ if (data.topic !== origTopic && data.topic.startsWith(origTopic)) {
378
+ this.subscriptions.delete(origTopic);
379
+ sub.topic = data.topic;
380
+ this.subscriptions.set(data.topic, sub);
381
+ break;
382
+ }
383
+ }
384
+ }
275
385
  }
276
386
 
277
387
  private startHeartbeat(): void {
package/src/sdk.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as gen from './_generated/index.js';
2
2
  import { NodeRealtimeClient } from './realtime.js';
3
+ import { AerostackClient } from '@aerostack/core';
3
4
 
4
5
  export interface SDKOptions {
5
6
  /**
@@ -13,6 +14,7 @@ export interface SDKOptions {
13
14
  /** Alias for serverUrl for backward compatibility */
14
15
  serverURL?: string;
15
16
  maxReconnectAttempts?: number;
17
+ projectId?: string;
16
18
  }
17
19
 
18
20
  /**
@@ -41,6 +43,11 @@ class DatabaseFacade {
41
43
  /**
42
44
  * Aerostack SDK Facade for Node.js.
43
45
  * Provides a clean, ergonomic API for all Aerostack services.
46
+ *
47
+ * Use `sdk.rpc` for the full enterprise API surface (cache bulk ops,
48
+ * storage CRUD, db batch, queue job tracking, vector enhancements).
49
+ * The top-level properties (cache, storage, etc.) use OpenAPI-generated
50
+ * classes and are kept for backward compatibility.
44
51
  */
45
52
  export class SDK {
46
53
  public readonly database: DatabaseFacade;
@@ -52,6 +59,14 @@ export class SDK {
52
59
  public readonly services: gen.ServicesApi;
53
60
  public readonly gateway: gen.GatewayApi;
54
61
  public readonly realtime: NodeRealtimeClient;
62
+ /**
63
+ * Full enterprise RPC client — exposes all new methods:
64
+ * cache.list/keys/getMany/setMany/deleteMany/flush/expire/increment
65
+ * storage.get/getUrl/list/delete/exists/getMetadata/copy/move
66
+ * db.batch, queue.getJob/listJobs/cancelJob
67
+ * ai.search.update/get/count
68
+ */
69
+ public readonly rpc: AerostackClient;
55
70
 
56
71
  private config: gen.Configuration;
57
72
 
@@ -74,9 +89,17 @@ export class SDK {
74
89
  this.services = new gen.ServicesApi(this.config);
75
90
  this.gateway = new gen.GatewayApi(this.config);
76
91
 
92
+ // Enterprise client — full API surface
93
+ this.rpc = new AerostackClient({
94
+ baseUrl: serverUrl,
95
+ apiKey,
96
+ projectId: options.projectId,
97
+ });
98
+
77
99
  this.realtime = new NodeRealtimeClient({
78
100
  serverUrl,
79
101
  apiKey: apiKey,
102
+ projectId: options.projectId,
80
103
  maxReconnectAttempts: options.maxReconnectAttempts
81
104
  });
82
105
  }
@@ -98,6 +121,10 @@ export class SDK {
98
121
  (this as any).ai = new gen.AIApi(this.config);
99
122
  (this as any).services = new gen.ServicesApi(this.config);
100
123
  (this as any).gateway = new gen.GatewayApi(this.config);
124
+ (this as any).rpc = new AerostackClient({
125
+ baseUrl: this.config.basePath,
126
+ apiKey,
127
+ });
101
128
  }
102
129
  }
103
130