@principal-ai/control-tower-core 0.1.6 → 0.1.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.
- package/README.md +63 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -19
- package/dist/index.js.map +7 -5
- package/dist/index.mjs +178 -2
- package/dist/index.mjs.map +7 -5
- package/dist/server/BaseServer.d.ts +13 -1
- package/dist/server/BaseServer.d.ts.map +1 -1
- package/dist/server/BaseServer.js +15 -0
- package/dist/server/ExperimentalAPI.d.ts +137 -0
- package/dist/server/ExperimentalAPI.d.ts.map +1 -0
- package/dist/server/ExperimentalAPI.js +239 -0
- package/dist/server/ServerBuilder.d.ts +11 -1
- package/dist/server/ServerBuilder.d.ts.map +1 -1
- package/dist/server/ServerBuilder.js +18 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -1
- package/dist/types/experimental.d.ts +136 -0
- package/dist/types/experimental.d.ts.map +1 -0
- package/dist/types/experimental.js +32 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ console.log('Server started on port 8080');
|
|
|
36
36
|
- **Real-time Events**: Event broadcasting and history
|
|
37
37
|
- **Extensible**: Abstract interfaces for custom implementations
|
|
38
38
|
- **TypeScript**: Full type safety with generated declarations
|
|
39
|
+
- **Experimental APIs**: Opt-in broadcast features for rapid prototyping (see [Experimental Features](#experimental-features))
|
|
39
40
|
|
|
40
41
|
## API Reference
|
|
41
42
|
|
|
@@ -79,6 +80,68 @@ class CustomRoomManager extends RoomManager {
|
|
|
79
80
|
}
|
|
80
81
|
```
|
|
81
82
|
|
|
83
|
+
## Experimental Features
|
|
84
|
+
|
|
85
|
+
⚠️ **For Development Use Only**
|
|
86
|
+
|
|
87
|
+
Control Tower Core provides experimental broadcast APIs for rapid prototyping and internal tooling. These APIs allow broadcasting messages beyond room boundaries.
|
|
88
|
+
|
|
89
|
+
### Enabling Experimental Features
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { ServerBuilder } from '@principal-ai/control-tower-core';
|
|
93
|
+
|
|
94
|
+
const server = new ServerBuilder()
|
|
95
|
+
.withTransport(transportAdapter)
|
|
96
|
+
.withRoomManager(roomManager)
|
|
97
|
+
.withLockManager(lockManager)
|
|
98
|
+
.withExperimentalFeatures({
|
|
99
|
+
enableBroadcast: true // Enable experimental broadcast APIs
|
|
100
|
+
})
|
|
101
|
+
.build();
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Using Experimental Broadcast
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// Broadcast to all connected clients
|
|
108
|
+
await server.experimental.broadcast({
|
|
109
|
+
type: 'system:announcement',
|
|
110
|
+
data: { message: 'Server maintenance in 5 minutes' }
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Broadcast to authenticated users only
|
|
114
|
+
await server.experimental.broadcastAuthenticated({
|
|
115
|
+
type: 'presence:user_online',
|
|
116
|
+
data: { userId: 'alice' }
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Broadcast with custom filtering
|
|
120
|
+
await server.experimental.broadcastWhere(
|
|
121
|
+
(client) => client.userId.startsWith('admin_'),
|
|
122
|
+
{ type: 'admin:alert', data: { ... } }
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
// Send to specific users
|
|
126
|
+
await server.experimental.sendToUsers(
|
|
127
|
+
['user1', 'user2'],
|
|
128
|
+
{ type: 'notification:mention', data: { ... } }
|
|
129
|
+
);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Important Notes
|
|
133
|
+
|
|
134
|
+
- **Experimental APIs may change or be removed** without major version bumps
|
|
135
|
+
- **Not recommended for production** applications
|
|
136
|
+
- Use for prototyping, then submit a [feature request](docs/FEATURE_REQUEST_TEMPLATE.md) to graduate to stable API
|
|
137
|
+
- See [full documentation](docs/EXPERIMENTAL_BROADCAST.md) for details
|
|
138
|
+
|
|
139
|
+
## Documentation
|
|
140
|
+
|
|
141
|
+
- [Experimental Broadcast APIs](docs/EXPERIMENTAL_BROADCAST.md)
|
|
142
|
+
- [Feature Request Template](docs/FEATURE_REQUEST_TEMPLATE.md)
|
|
143
|
+
- [Architecture Design](DESIGN.md)
|
|
144
|
+
|
|
82
145
|
## License
|
|
83
146
|
|
|
84
147
|
MIT
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { EventType, BaseEvent, FileAction, FileChangeEvent, GitStatusEvent, CommitEvent, BranchChangeEvent, CursorPositionEvent, Event, TokenPayload, AuthResult, CredentialType, OAuthProvider, Credentials, JWTConfig, OAuthConfig, AuthProvider, RoomPermission, Room, RoomUser, UserStatus, RoomState, RoomConfig, LockType, LockPriority, Lock, LockRequest, LockQueueItem, LockState, ConnectionState, ConnectionOptions, Message, MessageHandler, ErrorHandler, CloseHandler } from './types/index.js';
|
|
1
|
+
export { EventType, BaseEvent, FileAction, FileChangeEvent, GitStatusEvent, CommitEvent, BranchChangeEvent, CursorPositionEvent, Event, TokenPayload, AuthResult, CredentialType, OAuthProvider, Credentials, JWTConfig, OAuthConfig, AuthProvider, RoomPermission, Room, RoomUser, UserStatus, RoomState, RoomConfig, LockType, LockPriority, Lock, LockRequest, LockQueueItem, LockState, ConnectionState, ConnectionOptions, Message, MessageHandler, ErrorHandler, CloseHandler, ExperimentalFeatureConfig, ClientPredicate, BroadcastResult, BroadcastOptions, ExperimentalUsageEvent, ExperimentalFeatureError } from './types/index.js';
|
|
2
2
|
export { ITransportAdapter, IStorageAdapter, StorageOperation, IAuthAdapter, TypedEventEmitter, EventListener, UnsubscribeFn, RoomManager, LockManager, DefaultRoomManager, DefaultLockManager } from './abstractions/index.js';
|
|
3
3
|
export { MockTransportAdapter, MockStorageAdapter, MockAuthAdapter } from './adapters/mock/index.js';
|
|
4
4
|
export { WebSocketTransportAdapter, type WebSocketTransportConfig } from './adapters/websocket/index.js';
|
|
5
5
|
export { BaseClient, ClientBuilder, type ClientConfig, type ClientEvents } from './client/index.js';
|
|
6
|
-
export { BaseServer, ServerBuilder, type ServerConfig, type ServerEvents, type ConnectedClient } from './server/index.js';
|
|
6
|
+
export { BaseServer, ServerBuilder, ExperimentalAPI, type ServerConfig, type ServerEvents, type ConnectedClient } from './server/index.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,EAEL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EAEV,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,aAAa,EACb,SAAS,EAET,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,YAAY,EACZ,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,EAEL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EAEV,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,aAAa,EACb,SAAS,EAET,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,YAAY,EACZ,YAAY,EAEZ,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,yBAAyB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,UAAU,EACV,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServerBuilder = exports.BaseServer = exports.ClientBuilder = exports.BaseClient = exports.WebSocketTransportAdapter = exports.MockAuthAdapter = exports.MockStorageAdapter = exports.MockTransportAdapter = exports.DefaultLockManager = exports.DefaultRoomManager = exports.LockManager = exports.RoomManager = exports.TypedEventEmitter = void 0;
|
|
3
|
+
exports.ExperimentalAPI = exports.ServerBuilder = exports.BaseServer = exports.ClientBuilder = exports.BaseClient = exports.WebSocketTransportAdapter = exports.MockAuthAdapter = exports.MockStorageAdapter = exports.MockTransportAdapter = exports.DefaultLockManager = exports.DefaultRoomManager = exports.LockManager = exports.RoomManager = exports.TypedEventEmitter = exports.ExperimentalFeatureError = void 0;
|
|
4
|
+
// Types
|
|
5
|
+
var index_js_1 = require("./types/index.js");
|
|
6
|
+
Object.defineProperty(exports, "ExperimentalFeatureError", { enumerable: true, get: function () { return index_js_1.ExperimentalFeatureError; } });
|
|
4
7
|
// Abstractions
|
|
5
|
-
var
|
|
6
|
-
Object.defineProperty(exports, "TypedEventEmitter", { enumerable: true, get: function () { return
|
|
7
|
-
Object.defineProperty(exports, "RoomManager", { enumerable: true, get: function () { return
|
|
8
|
-
Object.defineProperty(exports, "LockManager", { enumerable: true, get: function () { return
|
|
9
|
-
Object.defineProperty(exports, "DefaultRoomManager", { enumerable: true, get: function () { return
|
|
10
|
-
Object.defineProperty(exports, "DefaultLockManager", { enumerable: true, get: function () { return
|
|
8
|
+
var index_js_2 = require("./abstractions/index.js");
|
|
9
|
+
Object.defineProperty(exports, "TypedEventEmitter", { enumerable: true, get: function () { return index_js_2.TypedEventEmitter; } });
|
|
10
|
+
Object.defineProperty(exports, "RoomManager", { enumerable: true, get: function () { return index_js_2.RoomManager; } });
|
|
11
|
+
Object.defineProperty(exports, "LockManager", { enumerable: true, get: function () { return index_js_2.LockManager; } });
|
|
12
|
+
Object.defineProperty(exports, "DefaultRoomManager", { enumerable: true, get: function () { return index_js_2.DefaultRoomManager; } });
|
|
13
|
+
Object.defineProperty(exports, "DefaultLockManager", { enumerable: true, get: function () { return index_js_2.DefaultLockManager; } });
|
|
11
14
|
// Adapters
|
|
12
|
-
var
|
|
13
|
-
Object.defineProperty(exports, "MockTransportAdapter", { enumerable: true, get: function () { return
|
|
14
|
-
Object.defineProperty(exports, "MockStorageAdapter", { enumerable: true, get: function () { return
|
|
15
|
-
Object.defineProperty(exports, "MockAuthAdapter", { enumerable: true, get: function () { return
|
|
16
|
-
var
|
|
17
|
-
Object.defineProperty(exports, "WebSocketTransportAdapter", { enumerable: true, get: function () { return
|
|
15
|
+
var index_js_3 = require("./adapters/mock/index.js");
|
|
16
|
+
Object.defineProperty(exports, "MockTransportAdapter", { enumerable: true, get: function () { return index_js_3.MockTransportAdapter; } });
|
|
17
|
+
Object.defineProperty(exports, "MockStorageAdapter", { enumerable: true, get: function () { return index_js_3.MockStorageAdapter; } });
|
|
18
|
+
Object.defineProperty(exports, "MockAuthAdapter", { enumerable: true, get: function () { return index_js_3.MockAuthAdapter; } });
|
|
19
|
+
var index_js_4 = require("./adapters/websocket/index.js");
|
|
20
|
+
Object.defineProperty(exports, "WebSocketTransportAdapter", { enumerable: true, get: function () { return index_js_4.WebSocketTransportAdapter; } });
|
|
18
21
|
// Client
|
|
19
|
-
var
|
|
20
|
-
Object.defineProperty(exports, "BaseClient", { enumerable: true, get: function () { return
|
|
21
|
-
Object.defineProperty(exports, "ClientBuilder", { enumerable: true, get: function () { return
|
|
22
|
+
var index_js_5 = require("./client/index.js");
|
|
23
|
+
Object.defineProperty(exports, "BaseClient", { enumerable: true, get: function () { return index_js_5.BaseClient; } });
|
|
24
|
+
Object.defineProperty(exports, "ClientBuilder", { enumerable: true, get: function () { return index_js_5.ClientBuilder; } });
|
|
22
25
|
// Server
|
|
23
|
-
var
|
|
24
|
-
Object.defineProperty(exports, "BaseServer", { enumerable: true, get: function () { return
|
|
25
|
-
Object.defineProperty(exports, "ServerBuilder", { enumerable: true, get: function () { return
|
|
26
|
+
var index_js_6 = require("./server/index.js");
|
|
27
|
+
Object.defineProperty(exports, "BaseServer", { enumerable: true, get: function () { return index_js_6.BaseServer; } });
|
|
28
|
+
Object.defineProperty(exports, "ServerBuilder", { enumerable: true, get: function () { return index_js_6.ServerBuilder; } });
|
|
29
|
+
Object.defineProperty(exports, "ExperimentalAPI", { enumerable: true, get: function () { return index_js_6.ExperimentalAPI; } });
|