@principal-ai/control-tower-core 0.1.0 → 0.1.2

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 (84) hide show
  1. package/README.md +84 -0
  2. package/dist/abstractions/AuthAdapter.d.ts +9 -0
  3. package/dist/abstractions/AuthAdapter.d.ts.map +1 -0
  4. package/dist/abstractions/AuthAdapter.js +1 -0
  5. package/dist/abstractions/DefaultLockManager.d.ts +18 -0
  6. package/dist/abstractions/DefaultLockManager.d.ts.map +1 -0
  7. package/dist/abstractions/DefaultLockManager.js +152 -0
  8. package/dist/abstractions/DefaultRoomManager.d.ts +15 -0
  9. package/dist/abstractions/DefaultRoomManager.d.ts.map +1 -0
  10. package/dist/abstractions/DefaultRoomManager.js +91 -0
  11. package/dist/abstractions/EventEmitter.d.ts +14 -0
  12. package/dist/abstractions/EventEmitter.d.ts.map +1 -0
  13. package/dist/abstractions/EventEmitter.js +56 -0
  14. package/dist/abstractions/LockManager.d.ts +16 -0
  15. package/dist/abstractions/LockManager.d.ts.map +1 -0
  16. package/dist/abstractions/LockManager.js +9 -0
  17. package/dist/abstractions/RoomManager.d.ts +15 -0
  18. package/dist/abstractions/RoomManager.d.ts.map +1 -0
  19. package/dist/abstractions/RoomManager.js +5 -0
  20. package/dist/abstractions/StorageAdapter.d.ts +25 -0
  21. package/dist/abstractions/StorageAdapter.d.ts.map +1 -0
  22. package/dist/abstractions/StorageAdapter.js +1 -0
  23. package/dist/abstractions/TransportAdapter.d.ts +17 -0
  24. package/dist/abstractions/TransportAdapter.d.ts.map +1 -0
  25. package/dist/abstractions/TransportAdapter.js +1 -0
  26. package/dist/abstractions/index.d.ts +9 -0
  27. package/dist/abstractions/index.d.ts.map +1 -0
  28. package/dist/abstractions/index.js +5 -0
  29. package/dist/adapters/mock/MockAuthAdapter.d.ts +27 -0
  30. package/dist/adapters/mock/MockAuthAdapter.d.ts.map +1 -0
  31. package/dist/adapters/mock/MockAuthAdapter.js +161 -0
  32. package/dist/adapters/mock/MockStorageAdapter.d.ts +27 -0
  33. package/dist/adapters/mock/MockStorageAdapter.d.ts.map +1 -0
  34. package/dist/adapters/mock/MockStorageAdapter.js +162 -0
  35. package/dist/adapters/mock/MockTransportAdapter.d.ts +31 -0
  36. package/dist/adapters/mock/MockTransportAdapter.d.ts.map +1 -0
  37. package/dist/adapters/mock/MockTransportAdapter.js +90 -0
  38. package/dist/adapters/mock/index.d.ts +4 -0
  39. package/dist/adapters/mock/index.d.ts.map +1 -0
  40. package/dist/adapters/mock/index.js +3 -0
  41. package/dist/adapters/websocket/WebSocketTransportAdapter.d.ts +40 -0
  42. package/dist/adapters/websocket/WebSocketTransportAdapter.d.ts.map +1 -0
  43. package/dist/adapters/websocket/WebSocketTransportAdapter.js +204 -0
  44. package/dist/adapters/websocket/index.d.ts +2 -0
  45. package/dist/adapters/websocket/index.d.ts.map +1 -0
  46. package/dist/adapters/websocket/index.js +1 -0
  47. package/dist/client/BaseClient.d.ts +103 -0
  48. package/dist/client/BaseClient.d.ts.map +1 -0
  49. package/dist/client/BaseClient.js +282 -0
  50. package/dist/client/ClientBuilder.d.ts +16 -0
  51. package/dist/client/ClientBuilder.d.ts.map +1 -0
  52. package/dist/client/ClientBuilder.js +37 -0
  53. package/dist/client/index.d.ts +3 -0
  54. package/dist/client/index.d.ts.map +1 -0
  55. package/dist/client/index.js +3 -0
  56. package/dist/index.d.ts +7 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +9 -1205
  59. package/dist/index.js.map +23 -6
  60. package/dist/server/BaseServer.d.ts +116 -0
  61. package/dist/server/BaseServer.d.ts.map +1 -0
  62. package/dist/server/BaseServer.js +422 -0
  63. package/dist/server/ServerBuilder.d.ts +32 -0
  64. package/dist/server/ServerBuilder.d.ts.map +1 -0
  65. package/dist/server/ServerBuilder.js +66 -0
  66. package/dist/server/index.d.ts +3 -0
  67. package/dist/server/index.d.ts.map +1 -0
  68. package/dist/server/index.js +3 -0
  69. package/dist/types/auth.d.ts +40 -0
  70. package/dist/types/auth.d.ts.map +1 -0
  71. package/dist/types/auth.js +1 -0
  72. package/dist/types/events.d.ts +66 -0
  73. package/dist/types/events.d.ts.map +1 -0
  74. package/dist/types/events.js +1 -0
  75. package/dist/types/index.d.ts +23 -0
  76. package/dist/types/index.d.ts.map +1 -0
  77. package/dist/types/index.js +1 -0
  78. package/dist/types/lock.d.ts +35 -0
  79. package/dist/types/lock.d.ts.map +1 -0
  80. package/dist/types/lock.js +1 -0
  81. package/dist/types/room.d.ts +40 -0
  82. package/dist/types/room.d.ts.map +1 -0
  83. package/dist/types/room.js +1 -0
  84. package/package.json +7 -3
@@ -0,0 +1,40 @@
1
+ export interface TokenPayload {
2
+ userId: string;
3
+ email: string;
4
+ username: string;
5
+ permissions?: string[];
6
+ roomId?: string;
7
+ expiresAt?: number;
8
+ }
9
+ export interface AuthResult {
10
+ token: string;
11
+ refreshToken?: string;
12
+ user: TokenPayload;
13
+ expiresIn: number;
14
+ }
15
+ export type CredentialType = 'password' | 'oauth' | 'token';
16
+ export type OAuthProvider = 'github' | 'gitlab' | 'bitbucket';
17
+ export interface Credentials {
18
+ type: CredentialType;
19
+ username?: string;
20
+ password?: string;
21
+ token?: string;
22
+ provider?: OAuthProvider;
23
+ code?: string;
24
+ redirectUri?: string;
25
+ }
26
+ export interface JWTConfig {
27
+ secret: string;
28
+ issuer?: string;
29
+ audience?: string;
30
+ expiresIn?: string | number;
31
+ }
32
+ export interface OAuthConfig {
33
+ clientId: string;
34
+ clientSecret?: string;
35
+ redirectUri?: string;
36
+ scope?: string[];
37
+ provider: OAuthProvider;
38
+ }
39
+ export type AuthProvider = 'jwt' | 'oauth' | 'basic';
40
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,66 @@
1
+ import type { Lock } from './lock';
2
+ export type EventType = 'file_change' | 'commit' | 'branch_change' | 'cursor_position' | 'git_status' | 'lock_acquired' | 'lock_released' | 'lock_status' | 'user_joined' | 'user_left' | 'heartbeat';
3
+ export interface BaseEvent {
4
+ id: string;
5
+ type: EventType;
6
+ timestamp: number;
7
+ userId: string;
8
+ roomId: string;
9
+ metadata?: Record<string, unknown>;
10
+ }
11
+ export type FileAction = 'create' | 'update' | 'delete' | 'rename';
12
+ export interface FileChangeEvent extends BaseEvent {
13
+ type: 'file_change';
14
+ data: {
15
+ path: string;
16
+ action: FileAction;
17
+ content?: string;
18
+ oldPath?: string;
19
+ };
20
+ }
21
+ export interface GitStatusEvent extends BaseEvent {
22
+ type: 'git_status';
23
+ data: {
24
+ branch: string;
25
+ ahead: number;
26
+ behind: number;
27
+ files: Array<{
28
+ path: string;
29
+ status: string;
30
+ }>;
31
+ };
32
+ }
33
+ export interface CommitEvent extends BaseEvent {
34
+ type: 'commit';
35
+ data: {
36
+ hash: string;
37
+ message: string;
38
+ author: string;
39
+ branch: string;
40
+ };
41
+ }
42
+ export interface BranchChangeEvent extends BaseEvent {
43
+ type: 'branch_change';
44
+ data: {
45
+ from: string;
46
+ to: string;
47
+ };
48
+ }
49
+ export interface CursorPositionEvent extends BaseEvent {
50
+ type: 'cursor_position';
51
+ data: {
52
+ file: string;
53
+ line: number;
54
+ column: number;
55
+ };
56
+ }
57
+ export interface LockStatusEvent extends BaseEvent {
58
+ type: 'lock_status';
59
+ data: {
60
+ lockId?: string;
61
+ lock?: Lock;
62
+ action: 'acquired' | 'released' | 'expired';
63
+ };
64
+ }
65
+ export type Event = FileChangeEvent | GitStatusEvent | CommitEvent | BranchChangeEvent | CursorPositionEvent | LockStatusEvent;
66
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,QAAQ,GACR,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,aAAa,GACb,aAAa,GACb,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;KAC7C,CAAC;CACH;AAED,MAAM,MAAM,KAAK,GACb,eAAe,GACf,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ export { EventType, BaseEvent, FileAction, FileChangeEvent, GitStatusEvent, CommitEvent, BranchChangeEvent, CursorPositionEvent, Event } from './events';
2
+ export { TokenPayload, AuthResult, CredentialType, OAuthProvider, Credentials, JWTConfig, OAuthConfig, AuthProvider } from './auth';
3
+ export { RoomPermission, Room, RoomUser, UserStatus, RoomState, RoomConfig } from './room';
4
+ export { LockType, LockPriority, Lock, LockRequest, LockQueueItem, LockState } from './lock';
5
+ export type ConnectionState = 'connecting' | 'connected' | 'disconnecting' | 'disconnected';
6
+ export interface ConnectionOptions {
7
+ url?: string;
8
+ reconnect?: boolean;
9
+ reconnectDelay?: number;
10
+ maxReconnectAttempts?: number;
11
+ pingInterval?: number;
12
+ timeout?: number;
13
+ }
14
+ export interface Message {
15
+ id: string;
16
+ type: string;
17
+ payload: unknown;
18
+ timestamp: number;
19
+ }
20
+ export type MessageHandler = (message: Message) => void | Promise<void>;
21
+ export type ErrorHandler = (error: Error) => void;
22
+ export type CloseHandler = (code: number, reason: string) => void;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,EACN,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,aAAa,EACb,SAAS,EACV,MAAM,QAAQ,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC;AAE5F,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ export type LockType = 'file' | 'directory' | 'branch';
2
+ export type LockPriority = 'low' | 'normal' | 'high';
3
+ export interface Lock {
4
+ id: string;
5
+ type: LockType;
6
+ path: string;
7
+ userId: string;
8
+ username: string;
9
+ acquiredAt: number;
10
+ expiresAt?: number;
11
+ priority: LockPriority;
12
+ branch?: string;
13
+ metadata?: Record<string, unknown>;
14
+ }
15
+ export interface LockRequest {
16
+ path: string;
17
+ type?: LockType;
18
+ priority?: LockPriority;
19
+ ttl?: number;
20
+ branch?: string;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ export interface LockQueueItem extends LockRequest {
24
+ userId: string;
25
+ username: string;
26
+ requestedAt: number;
27
+ resolve: (lock: Lock) => void;
28
+ reject: (error: Error) => void;
29
+ }
30
+ export interface LockState {
31
+ locks: Map<string, Lock>;
32
+ queue: Map<string, LockQueueItem[]>;
33
+ userLocks: Map<string, Set<string>>;
34
+ }
35
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/types/lock.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACrC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ import type { Event } from './events';
2
+ import type { Lock } from './lock';
3
+ export type RoomPermission = 'read' | 'write' | 'admin';
4
+ export interface Room {
5
+ id: string;
6
+ name: string;
7
+ createdAt: number;
8
+ maxUsers?: number;
9
+ maxHistory?: number;
10
+ permissions?: RoomPermission[];
11
+ metadata?: Record<string, unknown>;
12
+ }
13
+ export interface RoomUser {
14
+ id: string;
15
+ username: string;
16
+ email?: string;
17
+ joinedAt: number;
18
+ lastActivity: number;
19
+ permissions: RoomPermission[];
20
+ status: UserStatus;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ export type UserStatus = 'online' | 'away' | 'offline';
24
+ export interface RoomState {
25
+ room: Room;
26
+ users: Map<string, RoomUser>;
27
+ eventHistory: Array<Event>;
28
+ locks: Map<string, Lock>;
29
+ }
30
+ export interface RoomConfig {
31
+ name?: string;
32
+ maxUsers?: number;
33
+ maxHistory?: number;
34
+ permissions?: RoomPermission[];
35
+ requireAuth?: boolean;
36
+ allowAnonymous?: boolean;
37
+ persistHistory?: boolean;
38
+ metadata?: Record<string, unknown>;
39
+ }
40
+ //# sourceMappingURL=room.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/types/room.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@principal-ai/control-tower-core",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Centralized, runtime-agnostic library for real-time collaboration and synchronization",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
8
+ "private": false,
8
9
  "scripts": {
9
10
  "build": "bun build.ts",
10
11
  "dev": "bun --watch src/index.ts",
@@ -37,13 +38,16 @@
37
38
  "devDependencies": {
38
39
  "@eslint/js": "^9.36.0",
39
40
  "@types/bun": "latest",
41
+ "@types/ws": "^8.18.1",
40
42
  "@typescript-eslint/eslint-plugin": "^8.44.0",
41
43
  "@typescript-eslint/parser": "^8.44.0",
42
44
  "eslint": "^9.36.0",
43
45
  "typescript": "^5.3.3"
44
46
  },
45
- "dependencies": {},
47
+ "dependencies": {
48
+ "ws": "^8.18.3"
49
+ },
46
50
  "engines": {
47
51
  "bun": ">=1.0.0"
48
52
  }
49
- }
53
+ }