@allternit/ix 0.1.0

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 (170) hide show
  1. package/README.md +320 -0
  2. package/dist/adapters/json-render.d.ts +211 -0
  3. package/dist/adapters/json-render.d.ts.bak +211 -0
  4. package/dist/adapters/json-render.d.ts.map +1 -0
  5. package/dist/adapters/json-render.js +576 -0
  6. package/dist/adapters/json-render.js.bak +576 -0
  7. package/dist/adapters/json-render.js.map +1 -0
  8. package/dist/catalog/registry.d.ts +65 -0
  9. package/dist/catalog/registry.d.ts.bak +65 -0
  10. package/dist/catalog/registry.d.ts.map +1 -0
  11. package/dist/catalog/registry.js +388 -0
  12. package/dist/catalog/registry.js.bak +388 -0
  13. package/dist/catalog/registry.js.map +1 -0
  14. package/dist/collab/capsule-registry.d.ts +114 -0
  15. package/dist/collab/capsule-registry.d.ts.bak +114 -0
  16. package/dist/collab/capsule-registry.d.ts.map +1 -0
  17. package/dist/collab/capsule-registry.js +271 -0
  18. package/dist/collab/capsule-registry.js.bak +271 -0
  19. package/dist/collab/capsule-registry.js.map +1 -0
  20. package/dist/collab/index.d.ts +21 -0
  21. package/dist/collab/index.d.ts.bak +21 -0
  22. package/dist/collab/index.d.ts.map +1 -0
  23. package/dist/collab/index.js +32 -0
  24. package/dist/collab/index.js.bak +32 -0
  25. package/dist/collab/index.js.map +1 -0
  26. package/dist/collab/visual-editor.d.ts +199 -0
  27. package/dist/collab/visual-editor.d.ts.bak +199 -0
  28. package/dist/collab/visual-editor.d.ts.map +1 -0
  29. package/dist/collab/visual-editor.js +259 -0
  30. package/dist/collab/visual-editor.js.bak +259 -0
  31. package/dist/collab/visual-editor.js.map +1 -0
  32. package/dist/collab/yjs-adapter.d.ts +95 -0
  33. package/dist/collab/yjs-adapter.d.ts.bak +95 -0
  34. package/dist/collab/yjs-adapter.d.ts.map +1 -0
  35. package/dist/collab/yjs-adapter.js +282 -0
  36. package/dist/collab/yjs-adapter.js.bak +282 -0
  37. package/dist/collab/yjs-adapter.js.map +1 -0
  38. package/dist/collab/yjs-client.d.ts +101 -0
  39. package/dist/collab/yjs-client.d.ts.bak +101 -0
  40. package/dist/collab/yjs-client.d.ts.map +1 -0
  41. package/dist/collab/yjs-client.js +193 -0
  42. package/dist/collab/yjs-client.js.bak +193 -0
  43. package/dist/collab/yjs-client.js.map +1 -0
  44. package/dist/collab/yjs-protocols.d.ts +128 -0
  45. package/dist/collab/yjs-protocols.d.ts.bak +128 -0
  46. package/dist/collab/yjs-protocols.d.ts.map +1 -0
  47. package/dist/collab/yjs-protocols.js +245 -0
  48. package/dist/collab/yjs-protocols.js.bak +245 -0
  49. package/dist/collab/yjs-protocols.js.map +1 -0
  50. package/dist/collab/yjs-types.d.ts +201 -0
  51. package/dist/collab/yjs-types.d.ts.bak +201 -0
  52. package/dist/collab/yjs-types.d.ts.map +1 -0
  53. package/dist/collab/yjs-types.js +45 -0
  54. package/dist/collab/yjs-types.js.bak +45 -0
  55. package/dist/collab/yjs-types.js.map +1 -0
  56. package/dist/index.d.ts +38 -0
  57. package/dist/index.d.ts.bak +38 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +48 -0
  60. package/dist/index.js.bak +48 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/pipeline/llm-to-ix.d.ts +249 -0
  63. package/dist/pipeline/llm-to-ix.d.ts.bak +249 -0
  64. package/dist/pipeline/llm-to-ix.d.ts.map +1 -0
  65. package/dist/pipeline/llm-to-ix.js +992 -0
  66. package/dist/pipeline/llm-to-ix.js.bak +992 -0
  67. package/dist/pipeline/llm-to-ix.js.map +1 -0
  68. package/dist/react/index.d.ts +18 -0
  69. package/dist/react/index.d.ts.bak +18 -0
  70. package/dist/react/index.d.ts.map +1 -0
  71. package/dist/react/index.js +18 -0
  72. package/dist/react/index.js.bak +18 -0
  73. package/dist/react/index.js.map +1 -0
  74. package/dist/react/renderer.d.ts +47 -0
  75. package/dist/react/renderer.d.ts.bak +47 -0
  76. package/dist/react/renderer.d.ts.map +1 -0
  77. package/dist/react/renderer.js +420 -0
  78. package/dist/react/renderer.js.bak +420 -0
  79. package/dist/react/renderer.js.map +1 -0
  80. package/dist/renderer/renderer.d.ts +55 -0
  81. package/dist/renderer/renderer.d.ts.bak +55 -0
  82. package/dist/renderer/renderer.d.ts.map +1 -0
  83. package/dist/renderer/renderer.js +232 -0
  84. package/dist/renderer/renderer.js.bak +232 -0
  85. package/dist/renderer/renderer.js.map +1 -0
  86. package/dist/runtime/capsule-runtime.d.ts +227 -0
  87. package/dist/runtime/capsule-runtime.d.ts.bak +227 -0
  88. package/dist/runtime/capsule-runtime.d.ts.map +1 -0
  89. package/dist/runtime/capsule-runtime.js +563 -0
  90. package/dist/runtime/capsule-runtime.js.bak +563 -0
  91. package/dist/runtime/capsule-runtime.js.map +1 -0
  92. package/dist/runtime/policy-gates.d.ts +116 -0
  93. package/dist/runtime/policy-gates.d.ts.bak +116 -0
  94. package/dist/runtime/policy-gates.d.ts.map +1 -0
  95. package/dist/runtime/policy-gates.js +317 -0
  96. package/dist/runtime/policy-gates.js.bak +317 -0
  97. package/dist/runtime/policy-gates.js.map +1 -0
  98. package/dist/schema/ui-ir.d.ts +26 -0
  99. package/dist/schema/ui-ir.d.ts.bak +26 -0
  100. package/dist/schema/ui-ir.d.ts.map +1 -0
  101. package/dist/schema/ui-ir.js +51 -0
  102. package/dist/schema/ui-ir.js.bak +51 -0
  103. package/dist/schema/ui-ir.js.map +1 -0
  104. package/dist/sdk/api.d.ts +101 -0
  105. package/dist/sdk/api.d.ts.bak +101 -0
  106. package/dist/sdk/api.d.ts.map +1 -0
  107. package/dist/sdk/api.js +177 -0
  108. package/dist/sdk/api.js.bak +177 -0
  109. package/dist/sdk/api.js.map +1 -0
  110. package/dist/sdk/index.d.ts +9 -0
  111. package/dist/sdk/index.d.ts.bak +9 -0
  112. package/dist/sdk/index.d.ts.map +1 -0
  113. package/dist/sdk/index.js +10 -0
  114. package/dist/sdk/index.js.bak +10 -0
  115. package/dist/sdk/index.js.map +1 -0
  116. package/dist/sdk/react.d.ts +63 -0
  117. package/dist/sdk/react.d.ts.bak +63 -0
  118. package/dist/sdk/react.d.ts.map +1 -0
  119. package/dist/sdk/react.js +161 -0
  120. package/dist/sdk/react.js.bak +161 -0
  121. package/dist/sdk/react.js.map +1 -0
  122. package/dist/state/index.d.ts +8 -0
  123. package/dist/state/index.d.ts.bak +8 -0
  124. package/dist/state/index.d.ts.map +1 -0
  125. package/dist/state/index.js +8 -0
  126. package/dist/state/index.js.bak +8 -0
  127. package/dist/state/index.js.map +1 -0
  128. package/dist/state/patch.d.ts +73 -0
  129. package/dist/state/patch.d.ts.bak +73 -0
  130. package/dist/state/patch.d.ts.map +1 -0
  131. package/dist/state/patch.js +437 -0
  132. package/dist/state/patch.js.bak +437 -0
  133. package/dist/state/patch.js.map +1 -0
  134. package/dist/state/store.d.ts +50 -0
  135. package/dist/state/store.d.ts.bak +50 -0
  136. package/dist/state/store.d.ts.map +1 -0
  137. package/dist/state/store.js +246 -0
  138. package/dist/state/store.js.bak +246 -0
  139. package/dist/state/store.js.map +1 -0
  140. package/dist/svelte/index.d.ts +15 -0
  141. package/dist/svelte/index.d.ts.bak +15 -0
  142. package/dist/svelte/index.d.ts.map +1 -0
  143. package/dist/svelte/index.js +15 -0
  144. package/dist/svelte/index.js.bak +15 -0
  145. package/dist/svelte/index.js.map +1 -0
  146. package/dist/svelte/renderer.d.ts +35 -0
  147. package/dist/svelte/renderer.d.ts.bak +35 -0
  148. package/dist/svelte/renderer.d.ts.map +1 -0
  149. package/dist/svelte/renderer.js +317 -0
  150. package/dist/svelte/renderer.js.bak +317 -0
  151. package/dist/svelte/renderer.js.map +1 -0
  152. package/dist/types/index.d.ts +349 -0
  153. package/dist/types/index.d.ts.bak +349 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/index.js +152 -0
  156. package/dist/types/index.js.bak +152 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/vue/index.d.ts +18 -0
  159. package/dist/vue/index.d.ts.bak +18 -0
  160. package/dist/vue/index.d.ts.map +1 -0
  161. package/dist/vue/index.js +18 -0
  162. package/dist/vue/index.js.bak +18 -0
  163. package/dist/vue/index.js.map +1 -0
  164. package/dist/vue/renderer.d.ts +46 -0
  165. package/dist/vue/renderer.d.ts.bak +46 -0
  166. package/dist/vue/renderer.d.ts.map +1 -0
  167. package/dist/vue/renderer.js +302 -0
  168. package/dist/vue/renderer.js.bak +302 -0
  169. package/dist/vue/renderer.js.map +1 -0
  170. package/package.json +72 -0
@@ -0,0 +1,128 @@
1
+ /**
2
+ * YJS Protocols - GAP-67, 68
3
+ *
4
+ * Broadcast and Sync protocols for YJS
5
+ */
6
+ import * as Y from 'yjs';
7
+ import { Awareness } from 'y-protocols/awareness';
8
+ import { encoding, decoding } from 'lib0';
9
+ import { AwarenessChanges, UserState, SyncState } from './yjs-types';
10
+ /**
11
+ * Broadcast Protocol - GAP-67
12
+ *
13
+ * Broadcast changes to all peers via WebRTC
14
+ */
15
+ export declare class BroadcastProtocol {
16
+ private doc;
17
+ private provider;
18
+ private isSyncing;
19
+ constructor(doc: Y.Doc, provider: any);
20
+ /**
21
+ * Broadcast update to all peers
22
+ */
23
+ broadcastUpdate(update: Uint8Array): void;
24
+ /**
25
+ * Handle incoming message
26
+ */
27
+ handleMessage(message: Uint8Array, from: number): void;
28
+ private handleSyncMessage;
29
+ private handleAwarenessMessage;
30
+ /**
31
+ * Get sync state
32
+ */
33
+ getSyncState(): SyncState;
34
+ /**
35
+ * Force sync with all peers
36
+ */
37
+ forceSync(): void;
38
+ }
39
+ /**
40
+ * Sync Protocol - GAP-67
41
+ *
42
+ * Handle document synchronization
43
+ */
44
+ export declare class SyncProtocol {
45
+ private doc;
46
+ private syncState;
47
+ constructor(doc: Y.Doc);
48
+ /**
49
+ * Sync document with remote
50
+ */
51
+ syncDocument(remoteDoc: Y.Doc): void;
52
+ /**
53
+ * Create sync message
54
+ */
55
+ createSyncMessage(): Uint8Array;
56
+ /**
57
+ * Handle sync step 1
58
+ */
59
+ handleSyncStep1(encoder: encoding.Encoder, decoder: decoding.Decoder): void;
60
+ /**
61
+ * Handle sync step 2
62
+ */
63
+ handleSyncStep2(decoder: decoding.Decoder): void;
64
+ /**
65
+ * Handle update
66
+ */
67
+ handleUpdate(decoder: decoding.Decoder): void;
68
+ /**
69
+ * Get sync status for a peer
70
+ */
71
+ getPeerSyncStatus(peerId: number): any;
72
+ }
73
+ /**
74
+ * Awareness Manager - GAP-68
75
+ *
76
+ * Manage user awareness and presence
77
+ */
78
+ export declare class AwarenessManager {
79
+ private awareness;
80
+ private onChangeCallbacks;
81
+ constructor(doc: Y.Doc);
82
+ private setupListeners;
83
+ /**
84
+ * Set local user state
85
+ */
86
+ setLocalState(state: UserState): void;
87
+ /**
88
+ * Set local state field
89
+ */
90
+ setLocalStateField<T>(key: string, value: T): void;
91
+ /**
92
+ * Get all participant states
93
+ */
94
+ getStates(): Map<number, UserState>;
95
+ /**
96
+ * Get local state
97
+ */
98
+ getLocalState(): UserState | null;
99
+ /**
100
+ * Get state for specific client
101
+ */
102
+ getState(clientId: number): UserState | null;
103
+ /**
104
+ * Listen for changes
105
+ */
106
+ onChange(callback: (changes: AwarenessChanges) => void): () => void;
107
+ /**
108
+ * Get all connected clients
109
+ */
110
+ getConnectedClients(): number[];
111
+ /**
112
+ * Remove client state
113
+ */
114
+ removeLocalState(): void;
115
+ /**
116
+ * Get awareness instance
117
+ */
118
+ getAwareness(): Awareness;
119
+ /**
120
+ * Destroy awareness manager
121
+ */
122
+ destroy(): void;
123
+ }
124
+ /**
125
+ * Create awareness manager
126
+ */
127
+ export declare function createAwarenessManager(doc: Y.Doc): AwarenessManager;
128
+ //# sourceMappingURL=yjs-protocols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yjs-protocols.d.ts","sourceRoot":"","sources":["../../src/collab/yjs-protocols.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErE;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,SAAS,CAAkB;gBAEvB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG;IAKrC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAkBzC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBtD,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACH,YAAY,IAAI,SAAS;IASzB;;OAEG;IACH,SAAS,IAAI,IAAI;CAQlB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAA+B;gBAEpC,GAAG,EAAE,CAAC,CAAC,GAAG;IAItB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI;IAcpC;;OAEG;IACH,iBAAiB,IAAI,UAAU;IAM/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAI3E;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAIhD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAI7C;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAGvC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,iBAAiB,CAAuD;gBAEpE,GAAG,EAAE,CAAC,CAAC,GAAG;IAKtB,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIrC;;OAEG;IACH,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQlD;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAInC;;OAEG;IACH,aAAa,IAAI,SAAS,GAAG,IAAI;IAIjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;IAKnE;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,gBAAgB,CAEnE"}
@@ -0,0 +1,245 @@
1
+ // OWNER: T2-A5
2
+ /**
3
+ * YJS Protocols - GAP-67, 68
4
+ *
5
+ * Broadcast and Sync protocols for YJS
6
+ */
7
+ import * as Y from 'yjs';
8
+ import { Awareness } from 'y-protocols/awareness';
9
+ import * as syncProtocol from 'y-protocols/sync';
10
+ import * as awarenessProtocol from 'y-protocols/awareness';
11
+ import { encoding, decoding } from 'lib0';
12
+ /**
13
+ * Broadcast Protocol - GAP-67
14
+ *
15
+ * Broadcast changes to all peers via WebRTC
16
+ */
17
+ export class BroadcastProtocol {
18
+ doc;
19
+ provider;
20
+ isSyncing = false;
21
+ constructor(doc, provider) {
22
+ this.doc = doc;
23
+ this.provider = provider;
24
+ }
25
+ /**
26
+ * Broadcast update to all peers
27
+ */
28
+ broadcastUpdate(update) {
29
+ if (!this.provider)
30
+ return;
31
+ try {
32
+ // 1. Encode update
33
+ const message = syncProtocol.createUpdateMessage(update);
34
+ // 2. Send via WebRTC provider
35
+ this.provider.broadcastMessage(message);
36
+ // 3. Handle sync state
37
+ this.isSyncing = false;
38
+ }
39
+ catch (error) {
40
+ console.error('Failed to broadcast update:', error);
41
+ this.isSyncing = false;
42
+ }
43
+ }
44
+ /**
45
+ * Handle incoming message
46
+ */
47
+ handleMessage(message, from) {
48
+ const decoder = decoding.createDecoder(message);
49
+ const messageType = decoding.readVarUint(decoder);
50
+ switch (messageType) {
51
+ case syncProtocol.messageYjsSyncStep1:
52
+ case syncProtocol.messageYjsSyncStep2:
53
+ case syncProtocol.messageYjsUpdate:
54
+ this.handleSyncMessage(decoder, from);
55
+ break;
56
+ case awarenessProtocol.messageAwareness:
57
+ this.handleAwarenessMessage(decoder, from);
58
+ break;
59
+ }
60
+ }
61
+ handleSyncMessage(decoder, from) {
62
+ this.isSyncing = true;
63
+ try {
64
+ syncProtocol.readSyncMessage(decoder, encoding.createEncoder(), this.doc, null, from);
65
+ }
66
+ finally {
67
+ this.isSyncing = false;
68
+ }
69
+ }
70
+ handleAwarenessMessage(decoder, from) {
71
+ if (this.provider.awareness) {
72
+ awarenessProtocol.applyAwarenessUpdate(this.provider.awareness, decoding.readVarUint8Array(decoder), from);
73
+ }
74
+ }
75
+ /**
76
+ * Get sync state
77
+ */
78
+ getSyncState() {
79
+ return {
80
+ isSyncing: this.isSyncing,
81
+ progress: this.isSyncing ? 50 : 100,
82
+ lastSync: new Date(),
83
+ errors: [],
84
+ };
85
+ }
86
+ /**
87
+ * Force sync with all peers
88
+ */
89
+ forceSync() {
90
+ if (!this.provider)
91
+ return;
92
+ // Request sync step 1 from all peers
93
+ const encoder = encoding.createEncoder();
94
+ syncProtocol.writeSyncStep1(encoder, this.doc);
95
+ this.provider.broadcastMessage(encoding.toUint8Array(encoder));
96
+ }
97
+ }
98
+ /**
99
+ * Sync Protocol - GAP-67
100
+ *
101
+ * Handle document synchronization
102
+ */
103
+ export class SyncProtocol {
104
+ doc;
105
+ syncState = new Map();
106
+ constructor(doc) {
107
+ this.doc = doc;
108
+ }
109
+ /**
110
+ * Sync document with remote
111
+ */
112
+ syncDocument(remoteDoc) {
113
+ // 1. Create sync state vector
114
+ const stateVector = Y.encodeStateVector(this.doc);
115
+ // 2. Exchange with remote
116
+ const remoteStateVector = Y.encodeStateVector(remoteDoc);
117
+ // 3. Apply missing updates
118
+ const missingUpdates = Y.encodeStateAsUpdate(this.doc, remoteStateVector);
119
+ const remoteUpdates = Y.encodeStateAsUpdate(remoteDoc, stateVector);
120
+ Y.applyUpdate(this.doc, remoteUpdates);
121
+ }
122
+ /**
123
+ * Create sync message
124
+ */
125
+ createSyncMessage() {
126
+ const encoder = encoding.createEncoder();
127
+ syncProtocol.writeSyncStep1(encoder, this.doc);
128
+ return encoding.toUint8Array(encoder);
129
+ }
130
+ /**
131
+ * Handle sync step 1
132
+ */
133
+ handleSyncStep1(encoder, decoder) {
134
+ syncProtocol.readSyncStep1(decoder, encoder, this.doc);
135
+ }
136
+ /**
137
+ * Handle sync step 2
138
+ */
139
+ handleSyncStep2(decoder) {
140
+ syncProtocol.readSyncStep2(decoder, this.doc, null);
141
+ }
142
+ /**
143
+ * Handle update
144
+ */
145
+ handleUpdate(decoder) {
146
+ syncProtocol.readUpdate(decoder, this.doc, null);
147
+ }
148
+ /**
149
+ * Get sync status for a peer
150
+ */
151
+ getPeerSyncStatus(peerId) {
152
+ return this.syncState.get(peerId) || { synced: false };
153
+ }
154
+ }
155
+ /**
156
+ * Awareness Manager - GAP-68
157
+ *
158
+ * Manage user awareness and presence
159
+ */
160
+ export class AwarenessManager {
161
+ awareness;
162
+ onChangeCallbacks = new Set();
163
+ constructor(doc) {
164
+ this.awareness = new Awareness(doc);
165
+ this.setupListeners();
166
+ }
167
+ setupListeners() {
168
+ this.awareness.on('change', (changes) => {
169
+ this.onChangeCallbacks.forEach(cb => cb(changes));
170
+ });
171
+ }
172
+ /**
173
+ * Set local user state
174
+ */
175
+ setLocalState(state) {
176
+ this.awareness.setLocalStateField('user', state);
177
+ }
178
+ /**
179
+ * Set local state field
180
+ */
181
+ setLocalStateField(key, value) {
182
+ const currentState = this.awareness.getLocalState() || {};
183
+ this.awareness.setLocalState({
184
+ ...currentState,
185
+ [key]: value,
186
+ });
187
+ }
188
+ /**
189
+ * Get all participant states
190
+ */
191
+ getStates() {
192
+ return this.awareness.getStates();
193
+ }
194
+ /**
195
+ * Get local state
196
+ */
197
+ getLocalState() {
198
+ return this.awareness.getLocalState()?.user || null;
199
+ }
200
+ /**
201
+ * Get state for specific client
202
+ */
203
+ getState(clientId) {
204
+ return this.awareness.getStates().get(clientId) || null;
205
+ }
206
+ /**
207
+ * Listen for changes
208
+ */
209
+ onChange(callback) {
210
+ this.onChangeCallbacks.add(callback);
211
+ return () => this.onChangeCallbacks.delete(callback);
212
+ }
213
+ /**
214
+ * Get all connected clients
215
+ */
216
+ getConnectedClients() {
217
+ return Array.from(this.awareness.getStates().keys());
218
+ }
219
+ /**
220
+ * Remove client state
221
+ */
222
+ removeLocalState() {
223
+ this.awareness.setLocalState(null);
224
+ }
225
+ /**
226
+ * Get awareness instance
227
+ */
228
+ getAwareness() {
229
+ return this.awareness;
230
+ }
231
+ /**
232
+ * Destroy awareness manager
233
+ */
234
+ destroy() {
235
+ this.awareness.destroy();
236
+ this.onChangeCallbacks.clear();
237
+ }
238
+ }
239
+ /**
240
+ * Create awareness manager
241
+ */
242
+ export function createAwarenessManager(doc) {
243
+ return new AwarenessManager(doc);
244
+ }
245
+ //# sourceMappingURL=yjs-protocols.js.map
@@ -0,0 +1,245 @@
1
+ // OWNER: T2-A5
2
+ /**
3
+ * YJS Protocols - GAP-67, 68
4
+ *
5
+ * Broadcast and Sync protocols for YJS
6
+ */
7
+ import * as Y from 'yjs';
8
+ import { Awareness } from 'y-protocols/awareness';
9
+ import * as syncProtocol from 'y-protocols/sync';
10
+ import * as awarenessProtocol from 'y-protocols/awareness';
11
+ import { encoding, decoding } from 'lib0';
12
+ /**
13
+ * Broadcast Protocol - GAP-67
14
+ *
15
+ * Broadcast changes to all peers via WebRTC
16
+ */
17
+ export class BroadcastProtocol {
18
+ doc;
19
+ provider;
20
+ isSyncing = false;
21
+ constructor(doc, provider) {
22
+ this.doc = doc;
23
+ this.provider = provider;
24
+ }
25
+ /**
26
+ * Broadcast update to all peers
27
+ */
28
+ broadcastUpdate(update) {
29
+ if (!this.provider)
30
+ return;
31
+ try {
32
+ // 1. Encode update
33
+ const message = syncProtocol.createUpdateMessage(update);
34
+ // 2. Send via WebRTC provider
35
+ this.provider.broadcastMessage(message);
36
+ // 3. Handle sync state
37
+ this.isSyncing = false;
38
+ }
39
+ catch (error) {
40
+ console.error('Failed to broadcast update:', error);
41
+ this.isSyncing = false;
42
+ }
43
+ }
44
+ /**
45
+ * Handle incoming message
46
+ */
47
+ handleMessage(message, from) {
48
+ const decoder = decoding.createDecoder(message);
49
+ const messageType = decoding.readVarUint(decoder);
50
+ switch (messageType) {
51
+ case syncProtocol.messageYjsSyncStep1:
52
+ case syncProtocol.messageYjsSyncStep2:
53
+ case syncProtocol.messageYjsUpdate:
54
+ this.handleSyncMessage(decoder, from);
55
+ break;
56
+ case awarenessProtocol.messageAwareness:
57
+ this.handleAwarenessMessage(decoder, from);
58
+ break;
59
+ }
60
+ }
61
+ handleSyncMessage(decoder, from) {
62
+ this.isSyncing = true;
63
+ try {
64
+ syncProtocol.readSyncMessage(decoder, encoding.createEncoder(), this.doc, null, from);
65
+ }
66
+ finally {
67
+ this.isSyncing = false;
68
+ }
69
+ }
70
+ handleAwarenessMessage(decoder, from) {
71
+ if (this.provider.awareness) {
72
+ awarenessProtocol.applyAwarenessUpdate(this.provider.awareness, decoding.readVarUint8Array(decoder), from);
73
+ }
74
+ }
75
+ /**
76
+ * Get sync state
77
+ */
78
+ getSyncState() {
79
+ return {
80
+ isSyncing: this.isSyncing,
81
+ progress: this.isSyncing ? 50 : 100,
82
+ lastSync: new Date(),
83
+ errors: [],
84
+ };
85
+ }
86
+ /**
87
+ * Force sync with all peers
88
+ */
89
+ forceSync() {
90
+ if (!this.provider)
91
+ return;
92
+ // Request sync step 1 from all peers
93
+ const encoder = encoding.createEncoder();
94
+ syncProtocol.writeSyncStep1(encoder, this.doc);
95
+ this.provider.broadcastMessage(encoding.toUint8Array(encoder));
96
+ }
97
+ }
98
+ /**
99
+ * Sync Protocol - GAP-67
100
+ *
101
+ * Handle document synchronization
102
+ */
103
+ export class SyncProtocol {
104
+ doc;
105
+ syncState = new Map();
106
+ constructor(doc) {
107
+ this.doc = doc;
108
+ }
109
+ /**
110
+ * Sync document with remote
111
+ */
112
+ syncDocument(remoteDoc) {
113
+ // 1. Create sync state vector
114
+ const stateVector = Y.encodeStateVector(this.doc);
115
+ // 2. Exchange with remote
116
+ const remoteStateVector = Y.encodeStateVector(remoteDoc);
117
+ // 3. Apply missing updates
118
+ const missingUpdates = Y.encodeStateAsUpdate(this.doc, remoteStateVector);
119
+ const remoteUpdates = Y.encodeStateAsUpdate(remoteDoc, stateVector);
120
+ Y.applyUpdate(this.doc, remoteUpdates);
121
+ }
122
+ /**
123
+ * Create sync message
124
+ */
125
+ createSyncMessage() {
126
+ const encoder = encoding.createEncoder();
127
+ syncProtocol.writeSyncStep1(encoder, this.doc);
128
+ return encoding.toUint8Array(encoder);
129
+ }
130
+ /**
131
+ * Handle sync step 1
132
+ */
133
+ handleSyncStep1(encoder, decoder) {
134
+ syncProtocol.readSyncStep1(decoder, encoder, this.doc);
135
+ }
136
+ /**
137
+ * Handle sync step 2
138
+ */
139
+ handleSyncStep2(decoder) {
140
+ syncProtocol.readSyncStep2(decoder, this.doc, null);
141
+ }
142
+ /**
143
+ * Handle update
144
+ */
145
+ handleUpdate(decoder) {
146
+ syncProtocol.readUpdate(decoder, this.doc, null);
147
+ }
148
+ /**
149
+ * Get sync status for a peer
150
+ */
151
+ getPeerSyncStatus(peerId) {
152
+ return this.syncState.get(peerId) || { synced: false };
153
+ }
154
+ }
155
+ /**
156
+ * Awareness Manager - GAP-68
157
+ *
158
+ * Manage user awareness and presence
159
+ */
160
+ export class AwarenessManager {
161
+ awareness;
162
+ onChangeCallbacks = new Set();
163
+ constructor(doc) {
164
+ this.awareness = new Awareness(doc);
165
+ this.setupListeners();
166
+ }
167
+ setupListeners() {
168
+ this.awareness.on('change', (changes) => {
169
+ this.onChangeCallbacks.forEach(cb => cb(changes));
170
+ });
171
+ }
172
+ /**
173
+ * Set local user state
174
+ */
175
+ setLocalState(state) {
176
+ this.awareness.setLocalStateField('user', state);
177
+ }
178
+ /**
179
+ * Set local state field
180
+ */
181
+ setLocalStateField(key, value) {
182
+ const currentState = this.awareness.getLocalState() || {};
183
+ this.awareness.setLocalState({
184
+ ...currentState,
185
+ [key]: value,
186
+ });
187
+ }
188
+ /**
189
+ * Get all participant states
190
+ */
191
+ getStates() {
192
+ return this.awareness.getStates();
193
+ }
194
+ /**
195
+ * Get local state
196
+ */
197
+ getLocalState() {
198
+ return this.awareness.getLocalState()?.user || null;
199
+ }
200
+ /**
201
+ * Get state for specific client
202
+ */
203
+ getState(clientId) {
204
+ return this.awareness.getStates().get(clientId) || null;
205
+ }
206
+ /**
207
+ * Listen for changes
208
+ */
209
+ onChange(callback) {
210
+ this.onChangeCallbacks.add(callback);
211
+ return () => this.onChangeCallbacks.delete(callback);
212
+ }
213
+ /**
214
+ * Get all connected clients
215
+ */
216
+ getConnectedClients() {
217
+ return Array.from(this.awareness.getStates().keys());
218
+ }
219
+ /**
220
+ * Remove client state
221
+ */
222
+ removeLocalState() {
223
+ this.awareness.setLocalState(null);
224
+ }
225
+ /**
226
+ * Get awareness instance
227
+ */
228
+ getAwareness() {
229
+ return this.awareness;
230
+ }
231
+ /**
232
+ * Destroy awareness manager
233
+ */
234
+ destroy() {
235
+ this.awareness.destroy();
236
+ this.onChangeCallbacks.clear();
237
+ }
238
+ }
239
+ /**
240
+ * Create awareness manager
241
+ */
242
+ export function createAwarenessManager(doc) {
243
+ return new AwarenessManager(doc);
244
+ }
245
+ //# sourceMappingURL=yjs-protocols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yjs-protocols.js","sourceRoot":"","sources":["../../src/collab/yjs-protocols.ts"],"names":[],"mappings":"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"}