@principal-ai/control-tower-core 0.2.0 → 0.2.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.
- package/dist/abstractions/ConnectedRoomManager.d.ts +22 -0
- package/dist/abstractions/ConnectedRoomManager.d.ts.map +1 -0
- package/dist/abstractions/ConnectedRoomManager.js +56 -0
- package/dist/abstractions/index.d.ts +1 -0
- package/dist/abstractions/index.d.ts.map +1 -1
- package/dist/abstractions/index.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +8 -7
- package/dist/index.mjs +142 -94
- package/dist/index.mjs.map +8 -7
- package/dist/server/BaseServer.d.ts +8 -0
- package/dist/server/BaseServer.d.ts.map +1 -1
- package/dist/server/BaseServer.js +14 -0
- package/dist/server/ServerBuilder.d.ts.map +1 -1
- package/dist/server/ServerBuilder.js +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Event } from "../types/index.js";
|
|
2
|
+
import { DefaultRoomManager } from "./DefaultRoomManager.js";
|
|
3
|
+
/**
|
|
4
|
+
* Room manager that broadcasts events to connected clients
|
|
5
|
+
*
|
|
6
|
+
* This extends DefaultRoomManager to add actual broadcasting functionality.
|
|
7
|
+
* It requires a sendToClient callback that is provided by the server.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ConnectedRoomManager extends DefaultRoomManager {
|
|
10
|
+
private sendToClient;
|
|
11
|
+
private getClientIdsInRoom;
|
|
12
|
+
/**
|
|
13
|
+
* @param sendToClient - Callback to send a message to a specific client
|
|
14
|
+
* @param getClientIdsInRoom - Callback to get all client IDs for a user in a room
|
|
15
|
+
*/
|
|
16
|
+
constructor(sendToClient: (clientId: string, message: Record<string, unknown>) => Promise<void>, getClientIdsInRoom: (roomId: string, userId: string) => string[]);
|
|
17
|
+
/**
|
|
18
|
+
* Broadcast an event to all users in a room (optionally excluding one user)
|
|
19
|
+
*/
|
|
20
|
+
broadcastToRoom(roomId: string, event: Event, excludeUserId?: string): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ConnectedRoomManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectedRoomManager.d.ts","sourceRoot":"","sources":["../../src/abstractions/ConnectedRoomManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,KAAK,EACL,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC3D,OAAO,CAAC,YAAY,CAAwE;IAC5F,OAAO,CAAC,kBAAkB,CAA+C;IAEzE;;;OAGG;gBAEF,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACnF,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,EAAE;IAOjE;;OAEG;IACG,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,aAAa,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;CAwChB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConnectedRoomManager = void 0;
|
|
4
|
+
const DefaultRoomManager_js_1 = require("./DefaultRoomManager.js");
|
|
5
|
+
/**
|
|
6
|
+
* Room manager that broadcasts events to connected clients
|
|
7
|
+
*
|
|
8
|
+
* This extends DefaultRoomManager to add actual broadcasting functionality.
|
|
9
|
+
* It requires a sendToClient callback that is provided by the server.
|
|
10
|
+
*/
|
|
11
|
+
class ConnectedRoomManager extends DefaultRoomManager_js_1.DefaultRoomManager {
|
|
12
|
+
/**
|
|
13
|
+
* @param sendToClient - Callback to send a message to a specific client
|
|
14
|
+
* @param getClientIdsInRoom - Callback to get all client IDs for a user in a room
|
|
15
|
+
*/
|
|
16
|
+
constructor(sendToClient, getClientIdsInRoom) {
|
|
17
|
+
super();
|
|
18
|
+
this.sendToClient = sendToClient;
|
|
19
|
+
this.getClientIdsInRoom = getClientIdsInRoom;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Broadcast an event to all users in a room (optionally excluding one user)
|
|
23
|
+
*/
|
|
24
|
+
async broadcastToRoom(roomId, event, excludeUserId) {
|
|
25
|
+
const roomState = this.rooms.get(roomId);
|
|
26
|
+
if (!roomState) {
|
|
27
|
+
throw new Error(`Room ${roomId} not found`);
|
|
28
|
+
}
|
|
29
|
+
// Store in history first
|
|
30
|
+
await this.addEventToHistory(roomId, event);
|
|
31
|
+
// Get all users in the room
|
|
32
|
+
const users = Array.from(roomState.users.values());
|
|
33
|
+
// Send to each user's clients
|
|
34
|
+
const sendPromises = [];
|
|
35
|
+
for (const user of users) {
|
|
36
|
+
// Skip excluded user
|
|
37
|
+
if (excludeUserId && user.id === excludeUserId) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
// Get all client IDs for this user in this room
|
|
41
|
+
const clientIds = this.getClientIdsInRoom(roomId, user.id);
|
|
42
|
+
// Send event to each client
|
|
43
|
+
for (const clientId of clientIds) {
|
|
44
|
+
sendPromises.push(this.sendToClient(clientId, {
|
|
45
|
+
type: 'event_received',
|
|
46
|
+
event,
|
|
47
|
+
}).catch(error => {
|
|
48
|
+
console.error(`[ConnectedRoomManager] Failed to send event to client ${clientId}:`, error);
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Wait for all sends to complete
|
|
53
|
+
await Promise.all(sendPromises);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.ConnectedRoomManager = ConnectedRoomManager;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { IAuthAdapter } from "./AuthAdapter.js";
|
|
2
|
+
export { ConnectedRoomManager } from "./ConnectedRoomManager.js";
|
|
2
3
|
export { DefaultLockManager } from "./DefaultLockManager.js";
|
|
3
4
|
export { DefaultPresenceManager } from "./DefaultPresenceManager.js";
|
|
4
5
|
export { DefaultRoomManager } from "./DefaultRoomManager.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abstractions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACN,aAAa,EACb,iBAAiB,EACjB,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abstractions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACN,aAAa,EACb,iBAAiB,EACjB,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoomManager = exports.PresenceManager = exports.LockManager = exports.TypedEventEmitter = exports.DefaultRoomManager = exports.DefaultPresenceManager = exports.DefaultLockManager = void 0;
|
|
3
|
+
exports.RoomManager = exports.PresenceManager = exports.LockManager = exports.TypedEventEmitter = exports.DefaultRoomManager = exports.DefaultPresenceManager = exports.DefaultLockManager = exports.ConnectedRoomManager = void 0;
|
|
4
|
+
var ConnectedRoomManager_js_1 = require("./ConnectedRoomManager.js");
|
|
5
|
+
Object.defineProperty(exports, "ConnectedRoomManager", { enumerable: true, get: function () { return ConnectedRoomManager_js_1.ConnectedRoomManager; } });
|
|
4
6
|
var DefaultLockManager_js_1 = require("./DefaultLockManager.js");
|
|
5
7
|
Object.defineProperty(exports, "DefaultLockManager", { enumerable: true, get: function () { return DefaultLockManager_js_1.DefaultLockManager; } });
|
|
6
8
|
var DefaultPresenceManager_js_1 = require("./DefaultPresenceManager.js");
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DefaultLockManager, DefaultPresenceManager, DefaultRoomManager, EventListener, ExtendedUserPresence, IAuthAdapter, IStorageAdapter, ITransportAdapter, LockManager, PresenceExtension, PresenceManager, RoomManager, StorageOperation, TypedEventEmitter, UnsubscribeFn, } from "./abstractions/index.js";
|
|
1
|
+
export { ConnectedRoomManager, DefaultLockManager, DefaultPresenceManager, DefaultRoomManager, EventListener, ExtendedUserPresence, IAuthAdapter, IStorageAdapter, ITransportAdapter, LockManager, PresenceExtension, PresenceManager, RoomManager, StorageOperation, TypedEventEmitter, UnsubscribeFn, } from "./abstractions/index.js";
|
|
2
2
|
export { MockAuthAdapter, type MockICECandidate, MockRTCDataChannel, type MockRTCDataChannelConfig, MockRTCPeerConnection, type MockRTCPeerConnectionConfig, type MockSessionDescription, MockStorageAdapter, MockTransportAdapter, type RTCDataChannelState, type RTCIceConnectionState, type RTCIceGatheringState, type RTCPeerConnectionState, type RTCSignalingState, } from "./adapters/mock/index.js";
|
|
3
3
|
export { type PeerConnection, type PeerConnectionState, WebRTCSignalingAdapter, type WebRTCSignalingConfig, type WebRTCSignalingEvents, } from "./adapters/webrtc/index.js";
|
|
4
4
|
export { BrowserWebSocketTransportAdapter, type BrowserWebSocketConfig, type WebSocketClientConfig, WebSocketClientTransportAdapter, WebSocketServerTransportAdapter, type WebSocketServerTransportConfig, } from "./adapters/websocket/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACN,eAAe,EACf,KAAK,gBAAgB,EAErB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACN,gCAAgC,EAChC,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,8BAA8B,GACnC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,UAAU,EACV,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACN,UAAU,EACV,KAAK,eAAe,EACpB,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,iBAAiB,EAEjB,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,KAAK,EAEL,SAAS,EAET,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EAET,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,cAAc,EAEd,cAAc,EACd,IAAI,EACJ,UAAU,EAEV,cAAc,EACd,SAAS,EACT,QAAQ,EAER,YAAY,EACZ,YAAY,EACZ,UAAU,GACV,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACN,eAAe,EACf,KAAK,gBAAgB,EAErB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACN,gCAAgC,EAChC,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,8BAA8B,GACnC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,UAAU,EACV,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACN,UAAU,EACV,KAAK,eAAe,EACpB,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,iBAAiB,EAEjB,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,KAAK,EAEL,SAAS,EAET,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EAET,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,cAAc,EAEd,cAAc,EACd,IAAI,EACJ,UAAU,EAEV,cAAc,EACd,SAAS,EACT,QAAQ,EAER,YAAY,EACZ,YAAY,EACZ,UAAU,GACV,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Types
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ExperimentalFeatureError = exports.ServerBuilder = exports.ExperimentalAPI = exports.BaseServer = exports.PresenceClient = exports.ClientBuilder = exports.BaseClient = exports.WebSocketServerTransportAdapter = exports.WebSocketClientTransportAdapter = exports.BrowserWebSocketTransportAdapter = exports.WebRTCSignalingAdapter = exports.MockTransportAdapter = exports.MockStorageAdapter = exports.MockRTCPeerConnection = exports.MockRTCDataChannel = exports.MockAuthAdapter = exports.TypedEventEmitter = exports.RoomManager = exports.PresenceManager = exports.LockManager = exports.DefaultRoomManager = exports.DefaultPresenceManager = exports.DefaultLockManager = void 0;
|
|
4
|
+
exports.ExperimentalFeatureError = exports.ServerBuilder = exports.ExperimentalAPI = exports.BaseServer = exports.PresenceClient = exports.ClientBuilder = exports.BaseClient = exports.WebSocketServerTransportAdapter = exports.WebSocketClientTransportAdapter = exports.BrowserWebSocketTransportAdapter = exports.WebRTCSignalingAdapter = exports.MockTransportAdapter = exports.MockStorageAdapter = exports.MockRTCPeerConnection = exports.MockRTCDataChannel = exports.MockAuthAdapter = exports.TypedEventEmitter = exports.RoomManager = exports.PresenceManager = exports.LockManager = exports.DefaultRoomManager = exports.DefaultPresenceManager = exports.DefaultLockManager = exports.ConnectedRoomManager = void 0;
|
|
5
5
|
// Abstractions
|
|
6
6
|
var index_js_1 = require("./abstractions/index.js");
|
|
7
|
+
Object.defineProperty(exports, "ConnectedRoomManager", { enumerable: true, get: function () { return index_js_1.ConnectedRoomManager; } });
|
|
7
8
|
Object.defineProperty(exports, "DefaultLockManager", { enumerable: true, get: function () { return index_js_1.DefaultLockManager; } });
|
|
8
9
|
Object.defineProperty(exports, "DefaultPresenceManager", { enumerable: true, get: function () { return index_js_1.DefaultPresenceManager; } });
|
|
9
10
|
Object.defineProperty(exports, "DefaultRoomManager", { enumerable: true, get: function () { return index_js_1.DefaultRoomManager; } });
|