@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,271 @@
1
+ // OWNER: T2-A5
2
+ /**
3
+ * Capsule Registry - GAP-69, 70, 71
4
+ *
5
+ * Track subscribers and broadcast capsule events
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ /**
9
+ * Capsule Registry - GAP-69, 70, 71
10
+ *
11
+ * Track subscribers and broadcast events
12
+ */
13
+ export class CapsuleRegistry extends EventEmitter {
14
+ subscribers;
15
+ subscriberById;
16
+ capsuleSubscribers;
17
+ constructor() {
18
+ super();
19
+ this.subscribers = new Map();
20
+ this.subscriberById = new Map();
21
+ this.capsuleSubscribers = new Map();
22
+ }
23
+ /**
24
+ * Subscribe to a capsule
25
+ */
26
+ subscribe(capsuleId, ws, subscriberId) {
27
+ const id = subscriberId || this.generateSubscriberId();
28
+ const subscriber = {
29
+ id,
30
+ ws,
31
+ capsuleIds: new Set([capsuleId]),
32
+ connectedAt: new Date(),
33
+ lastActivity: new Date(),
34
+ };
35
+ // Add to subscriber map
36
+ this.subscriberById.set(id, subscriber);
37
+ // Add to capsule subscribers
38
+ if (!this.subscribers.has(capsuleId)) {
39
+ this.subscribers.set(capsuleId, new Set());
40
+ }
41
+ this.subscribers.get(capsuleId).add(subscriber);
42
+ // Track capsule subscription
43
+ if (!this.capsuleSubscribers.has(capsuleId)) {
44
+ this.capsuleSubscribers.set(capsuleId, new Set());
45
+ }
46
+ this.capsuleSubscribers.get(capsuleId).add(id);
47
+ // Setup WebSocket message handler
48
+ ws.addEventListener('message', (event) => {
49
+ this.handleSubscriberMessage(id, event);
50
+ });
51
+ // Setup close handler
52
+ ws.addEventListener('close', () => {
53
+ this.unsubscribe(id);
54
+ });
55
+ this.emit('subscribe', { subscriberId: id, capsuleId });
56
+ return id;
57
+ }
58
+ /**
59
+ * Unsubscribe from a capsule
60
+ */
61
+ unsubscribe(subscriberId, capsuleId) {
62
+ const subscriber = this.subscriberById.get(subscriberId);
63
+ if (!subscriber)
64
+ return;
65
+ const capsules = capsuleId ? [capsuleId] : Array.from(subscriber.capsuleIds);
66
+ for (const capsule of capsules) {
67
+ const capsuleSubs = this.subscribers.get(capsule);
68
+ if (capsuleSubs) {
69
+ capsuleSubs.delete(subscriber);
70
+ if (capsuleSubs.size === 0) {
71
+ this.subscribers.delete(capsule);
72
+ }
73
+ }
74
+ const capSubs = this.capsuleSubscribers.get(capsule);
75
+ if (capSubs) {
76
+ capSubs.delete(subscriberId);
77
+ if (capSubs.size === 0) {
78
+ this.capsuleSubscribers.delete(capsule);
79
+ }
80
+ }
81
+ }
82
+ if (!capsuleId) {
83
+ this.subscriberById.delete(subscriberId);
84
+ }
85
+ else {
86
+ subscriber.capsuleIds.delete(capsuleId);
87
+ if (subscriber.capsuleIds.size === 0) {
88
+ this.subscriberById.delete(subscriberId);
89
+ }
90
+ }
91
+ this.emit('unsubscribe', { subscriberId, capsuleId });
92
+ }
93
+ /**
94
+ * Broadcast event to all capsule subscribers
95
+ */
96
+ broadcast(capsuleId, event) {
97
+ const capsuleSubs = this.subscribers.get(capsuleId);
98
+ if (!capsuleSubs || capsuleSubs.size === 0)
99
+ return;
100
+ const message = JSON.stringify({
101
+ type: 'capsule-event',
102
+ event,
103
+ });
104
+ const failed = [];
105
+ capsuleSubs.forEach(subscriber => {
106
+ try {
107
+ if (subscriber.ws.readyState === WebSocket.OPEN) {
108
+ subscriber.ws.send(message);
109
+ subscriber.lastActivity = new Date();
110
+ }
111
+ else {
112
+ failed.push(subscriber.id);
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.error('Failed to send to subscriber:', error);
117
+ failed.push(subscriber.id);
118
+ }
119
+ });
120
+ // Remove failed subscribers
121
+ failed.forEach(id => this.unsubscribe(id, capsuleId));
122
+ this.emit('broadcast', { capsuleId, event, subscriberCount: capsuleSubs.size - failed.length });
123
+ }
124
+ /**
125
+ * Broadcast to all capsules
126
+ */
127
+ broadcastAll(event) {
128
+ const capsuleIds = Array.from(this.subscribers.keys());
129
+ for (const capsuleId of capsuleIds) {
130
+ this.broadcast(capsuleId, {
131
+ ...event,
132
+ capsuleId,
133
+ });
134
+ }
135
+ }
136
+ /**
137
+ * Send event to specific subscriber
138
+ */
139
+ sendToSubscriber(subscriberId, event) {
140
+ const subscriber = this.subscriberById.get(subscriberId);
141
+ if (!subscriber)
142
+ return false;
143
+ try {
144
+ if (subscriber.ws.readyState === WebSocket.OPEN) {
145
+ subscriber.ws.send(JSON.stringify({
146
+ type: 'capsule-event',
147
+ event,
148
+ }));
149
+ subscriber.lastActivity = new Date();
150
+ return true;
151
+ }
152
+ }
153
+ catch (error) {
154
+ console.error('Failed to send to subscriber:', error);
155
+ }
156
+ return false;
157
+ }
158
+ /**
159
+ * Get subscribers for a capsule
160
+ */
161
+ getCapsuleSubscribers(capsuleId) {
162
+ const subs = this.subscribers.get(capsuleId);
163
+ return subs ? Array.from(subs) : [];
164
+ }
165
+ /**
166
+ * Get subscriber count for a capsule
167
+ */
168
+ getSubscriberCount(capsuleId) {
169
+ return this.subscribers.get(capsuleId)?.size || 0;
170
+ }
171
+ /**
172
+ * Get all capsules
173
+ */
174
+ getAllCapsules() {
175
+ return Array.from(this.subscribers.keys());
176
+ }
177
+ /**
178
+ * Get subscriber by ID
179
+ */
180
+ getSubscriber(subscriberId) {
181
+ return this.subscriberById.get(subscriberId);
182
+ }
183
+ /**
184
+ * Get all subscribers
185
+ */
186
+ getAllSubscribers() {
187
+ return Array.from(this.subscriberById.values());
188
+ }
189
+ /**
190
+ * Get capsules for a subscriber
191
+ */
192
+ getSubscriberCapsules(subscriberId) {
193
+ const subscriber = this.subscriberById.get(subscriberId);
194
+ return subscriber ? Array.from(subscriber.capsuleIds) : [];
195
+ }
196
+ /**
197
+ * Handle message from subscriber
198
+ */
199
+ handleSubscriberMessage(subscriberId, event) {
200
+ const subscriber = this.subscriberById.get(subscriberId);
201
+ if (!subscriber)
202
+ return;
203
+ subscriber.lastActivity = new Date();
204
+ try {
205
+ const data = JSON.parse(event.data);
206
+ this.emit('message', {
207
+ subscriberId,
208
+ data,
209
+ });
210
+ }
211
+ catch (error) {
212
+ console.error('Failed to parse subscriber message:', error);
213
+ }
214
+ }
215
+ /**
216
+ * Generate unique subscriber ID
217
+ */
218
+ generateSubscriberId() {
219
+ return `sub_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
220
+ }
221
+ /**
222
+ * Get registry statistics
223
+ */
224
+ getStats() {
225
+ const capsules = new Map();
226
+ this.subscribers.forEach((subs, id) => {
227
+ capsules.set(id, subs.size);
228
+ });
229
+ return {
230
+ totalSubscribers: this.subscriberById.size,
231
+ totalCapsules: this.subscribers.size,
232
+ capsules,
233
+ };
234
+ }
235
+ /**
236
+ * Clean up inactive subscribers
237
+ */
238
+ cleanupInactive(timeoutMs = 60000) {
239
+ const now = Date.now();
240
+ let cleaned = 0;
241
+ this.subscriberById.forEach((subscriber, id) => {
242
+ const inactiveTime = now - subscriber.lastActivity.getTime();
243
+ if (inactiveTime > timeoutMs) {
244
+ this.unsubscribe(id);
245
+ cleaned++;
246
+ }
247
+ });
248
+ return cleaned;
249
+ }
250
+ /**
251
+ * Destroy registry
252
+ */
253
+ destroy() {
254
+ this.subscribers.forEach((subs) => {
255
+ subs.forEach(sub => {
256
+ sub.ws.close();
257
+ });
258
+ });
259
+ this.subscribers.clear();
260
+ this.subscriberById.clear();
261
+ this.capsuleSubscribers.clear();
262
+ this.removeAllListeners();
263
+ }
264
+ }
265
+ /**
266
+ * Create capsule registry
267
+ */
268
+ export function createCapsuleRegistry() {
269
+ return new CapsuleRegistry();
270
+ }
271
+ //# sourceMappingURL=capsule-registry.js.map
@@ -0,0 +1,271 @@
1
+ // OWNER: T2-A5
2
+ /**
3
+ * Capsule Registry - GAP-69, 70, 71
4
+ *
5
+ * Track subscribers and broadcast capsule events
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ /**
9
+ * Capsule Registry - GAP-69, 70, 71
10
+ *
11
+ * Track subscribers and broadcast events
12
+ */
13
+ export class CapsuleRegistry extends EventEmitter {
14
+ subscribers;
15
+ subscriberById;
16
+ capsuleSubscribers;
17
+ constructor() {
18
+ super();
19
+ this.subscribers = new Map();
20
+ this.subscriberById = new Map();
21
+ this.capsuleSubscribers = new Map();
22
+ }
23
+ /**
24
+ * Subscribe to a capsule
25
+ */
26
+ subscribe(capsuleId, ws, subscriberId) {
27
+ const id = subscriberId || this.generateSubscriberId();
28
+ const subscriber = {
29
+ id,
30
+ ws,
31
+ capsuleIds: new Set([capsuleId]),
32
+ connectedAt: new Date(),
33
+ lastActivity: new Date(),
34
+ };
35
+ // Add to subscriber map
36
+ this.subscriberById.set(id, subscriber);
37
+ // Add to capsule subscribers
38
+ if (!this.subscribers.has(capsuleId)) {
39
+ this.subscribers.set(capsuleId, new Set());
40
+ }
41
+ this.subscribers.get(capsuleId).add(subscriber);
42
+ // Track capsule subscription
43
+ if (!this.capsuleSubscribers.has(capsuleId)) {
44
+ this.capsuleSubscribers.set(capsuleId, new Set());
45
+ }
46
+ this.capsuleSubscribers.get(capsuleId).add(id);
47
+ // Setup WebSocket message handler
48
+ ws.addEventListener('message', (event) => {
49
+ this.handleSubscriberMessage(id, event);
50
+ });
51
+ // Setup close handler
52
+ ws.addEventListener('close', () => {
53
+ this.unsubscribe(id);
54
+ });
55
+ this.emit('subscribe', { subscriberId: id, capsuleId });
56
+ return id;
57
+ }
58
+ /**
59
+ * Unsubscribe from a capsule
60
+ */
61
+ unsubscribe(subscriberId, capsuleId) {
62
+ const subscriber = this.subscriberById.get(subscriberId);
63
+ if (!subscriber)
64
+ return;
65
+ const capsules = capsuleId ? [capsuleId] : Array.from(subscriber.capsuleIds);
66
+ for (const capsule of capsules) {
67
+ const capsuleSubs = this.subscribers.get(capsule);
68
+ if (capsuleSubs) {
69
+ capsuleSubs.delete(subscriber);
70
+ if (capsuleSubs.size === 0) {
71
+ this.subscribers.delete(capsule);
72
+ }
73
+ }
74
+ const capSubs = this.capsuleSubscribers.get(capsule);
75
+ if (capSubs) {
76
+ capSubs.delete(subscriberId);
77
+ if (capSubs.size === 0) {
78
+ this.capsuleSubscribers.delete(capsule);
79
+ }
80
+ }
81
+ }
82
+ if (!capsuleId) {
83
+ this.subscriberById.delete(subscriberId);
84
+ }
85
+ else {
86
+ subscriber.capsuleIds.delete(capsuleId);
87
+ if (subscriber.capsuleIds.size === 0) {
88
+ this.subscriberById.delete(subscriberId);
89
+ }
90
+ }
91
+ this.emit('unsubscribe', { subscriberId, capsuleId });
92
+ }
93
+ /**
94
+ * Broadcast event to all capsule subscribers
95
+ */
96
+ broadcast(capsuleId, event) {
97
+ const capsuleSubs = this.subscribers.get(capsuleId);
98
+ if (!capsuleSubs || capsuleSubs.size === 0)
99
+ return;
100
+ const message = JSON.stringify({
101
+ type: 'capsule-event',
102
+ event,
103
+ });
104
+ const failed = [];
105
+ capsuleSubs.forEach(subscriber => {
106
+ try {
107
+ if (subscriber.ws.readyState === WebSocket.OPEN) {
108
+ subscriber.ws.send(message);
109
+ subscriber.lastActivity = new Date();
110
+ }
111
+ else {
112
+ failed.push(subscriber.id);
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.error('Failed to send to subscriber:', error);
117
+ failed.push(subscriber.id);
118
+ }
119
+ });
120
+ // Remove failed subscribers
121
+ failed.forEach(id => this.unsubscribe(id, capsuleId));
122
+ this.emit('broadcast', { capsuleId, event, subscriberCount: capsuleSubs.size - failed.length });
123
+ }
124
+ /**
125
+ * Broadcast to all capsules
126
+ */
127
+ broadcastAll(event) {
128
+ const capsuleIds = Array.from(this.subscribers.keys());
129
+ for (const capsuleId of capsuleIds) {
130
+ this.broadcast(capsuleId, {
131
+ ...event,
132
+ capsuleId,
133
+ });
134
+ }
135
+ }
136
+ /**
137
+ * Send event to specific subscriber
138
+ */
139
+ sendToSubscriber(subscriberId, event) {
140
+ const subscriber = this.subscriberById.get(subscriberId);
141
+ if (!subscriber)
142
+ return false;
143
+ try {
144
+ if (subscriber.ws.readyState === WebSocket.OPEN) {
145
+ subscriber.ws.send(JSON.stringify({
146
+ type: 'capsule-event',
147
+ event,
148
+ }));
149
+ subscriber.lastActivity = new Date();
150
+ return true;
151
+ }
152
+ }
153
+ catch (error) {
154
+ console.error('Failed to send to subscriber:', error);
155
+ }
156
+ return false;
157
+ }
158
+ /**
159
+ * Get subscribers for a capsule
160
+ */
161
+ getCapsuleSubscribers(capsuleId) {
162
+ const subs = this.subscribers.get(capsuleId);
163
+ return subs ? Array.from(subs) : [];
164
+ }
165
+ /**
166
+ * Get subscriber count for a capsule
167
+ */
168
+ getSubscriberCount(capsuleId) {
169
+ return this.subscribers.get(capsuleId)?.size || 0;
170
+ }
171
+ /**
172
+ * Get all capsules
173
+ */
174
+ getAllCapsules() {
175
+ return Array.from(this.subscribers.keys());
176
+ }
177
+ /**
178
+ * Get subscriber by ID
179
+ */
180
+ getSubscriber(subscriberId) {
181
+ return this.subscriberById.get(subscriberId);
182
+ }
183
+ /**
184
+ * Get all subscribers
185
+ */
186
+ getAllSubscribers() {
187
+ return Array.from(this.subscriberById.values());
188
+ }
189
+ /**
190
+ * Get capsules for a subscriber
191
+ */
192
+ getSubscriberCapsules(subscriberId) {
193
+ const subscriber = this.subscriberById.get(subscriberId);
194
+ return subscriber ? Array.from(subscriber.capsuleIds) : [];
195
+ }
196
+ /**
197
+ * Handle message from subscriber
198
+ */
199
+ handleSubscriberMessage(subscriberId, event) {
200
+ const subscriber = this.subscriberById.get(subscriberId);
201
+ if (!subscriber)
202
+ return;
203
+ subscriber.lastActivity = new Date();
204
+ try {
205
+ const data = JSON.parse(event.data);
206
+ this.emit('message', {
207
+ subscriberId,
208
+ data,
209
+ });
210
+ }
211
+ catch (error) {
212
+ console.error('Failed to parse subscriber message:', error);
213
+ }
214
+ }
215
+ /**
216
+ * Generate unique subscriber ID
217
+ */
218
+ generateSubscriberId() {
219
+ return `sub_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
220
+ }
221
+ /**
222
+ * Get registry statistics
223
+ */
224
+ getStats() {
225
+ const capsules = new Map();
226
+ this.subscribers.forEach((subs, id) => {
227
+ capsules.set(id, subs.size);
228
+ });
229
+ return {
230
+ totalSubscribers: this.subscriberById.size,
231
+ totalCapsules: this.subscribers.size,
232
+ capsules,
233
+ };
234
+ }
235
+ /**
236
+ * Clean up inactive subscribers
237
+ */
238
+ cleanupInactive(timeoutMs = 60000) {
239
+ const now = Date.now();
240
+ let cleaned = 0;
241
+ this.subscriberById.forEach((subscriber, id) => {
242
+ const inactiveTime = now - subscriber.lastActivity.getTime();
243
+ if (inactiveTime > timeoutMs) {
244
+ this.unsubscribe(id);
245
+ cleaned++;
246
+ }
247
+ });
248
+ return cleaned;
249
+ }
250
+ /**
251
+ * Destroy registry
252
+ */
253
+ destroy() {
254
+ this.subscribers.forEach((subs) => {
255
+ subs.forEach(sub => {
256
+ sub.ws.close();
257
+ });
258
+ });
259
+ this.subscribers.clear();
260
+ this.subscriberById.clear();
261
+ this.capsuleSubscribers.clear();
262
+ this.removeAllListeners();
263
+ }
264
+ }
265
+ /**
266
+ * Create capsule registry
267
+ */
268
+ export function createCapsuleRegistry() {
269
+ return new CapsuleRegistry();
270
+ }
271
+ //# sourceMappingURL=capsule-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capsule-registry.js","sourceRoot":"","sources":["../../src/collab/capsule-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Real-time Collaboration
3
+ *
4
+ * Yjs/CRDT integration for collaborative UI editing.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { YjsClient, AwarenessManager, CapsuleRegistry } from '@allternit/ix/collab';
9
+ *
10
+ * const client = new YjsClient('room-123', config);
11
+ * const text = client.getText('document');
12
+ * text.insert(0, 'Hello collaborative world!');
13
+ * ```
14
+ */
15
+ export { type YjsConfig, type CollaborationSession, type Participant, type CursorPosition, type Range, type UserState, type AwarenessChanges, type DocType, type OperationType, type DocChangeEvent, type SyncState, type CursorStyle, type CollabConfig, defaultCollabConfig, } from './yjs-types';
16
+ export { YjsClient, createYjsClient, defaultConfig, } from './yjs-client';
17
+ export { BroadcastProtocol, SyncProtocol, AwarenessManager, createAwarenessManager, } from './yjs-protocols';
18
+ export { CapsuleRegistry, createCapsuleRegistry, type CapsuleEvent, type CapsuleSubscriber, } from './capsule-registry';
19
+ export { createYjsAdapter, createCollaborativeStore, type YjsAdapter, type YjsAdapterConfig, type AwarenessState, } from './yjs-adapter';
20
+ export { createVisualEditor, ui, type VisualEditor, type UIRootBuilder, type UIComponentBuilder, } from './visual-editor';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Real-time Collaboration
3
+ *
4
+ * Yjs/CRDT integration for collaborative UI editing.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { YjsClient, AwarenessManager, CapsuleRegistry } from '@allternit/ix/collab';
9
+ *
10
+ * const client = new YjsClient('room-123', config);
11
+ * const text = client.getText('document');
12
+ * text.insert(0, 'Hello collaborative world!');
13
+ * ```
14
+ */
15
+ export { type YjsConfig, type CollaborationSession, type Participant, type CursorPosition, type Range, type UserState, type AwarenessChanges, type DocType, type OperationType, type DocChangeEvent, type SyncState, type CursorStyle, type CollabConfig, defaultCollabConfig, } from './yjs-types';
16
+ export { YjsClient, createYjsClient, defaultConfig, } from './yjs-client';
17
+ export { BroadcastProtocol, SyncProtocol, AwarenessManager, createAwarenessManager, } from './yjs-protocols';
18
+ export { CapsuleRegistry, createCapsuleRegistry, type CapsuleEvent, type CapsuleSubscriber, } from './capsule-registry';
19
+ export { createYjsAdapter, createCollaborativeStore, type YjsAdapter, type YjsAdapterConfig, type AwarenessState, } from './yjs-adapter';
20
+ export { createVisualEditor, ui, type VisualEditor, type UIRootBuilder, type UIComponentBuilder, } from './visual-editor';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collab/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,SAAS,EACT,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,eAAe,EACf,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEL,kBAAkB,EAClB,EAAE,EACF,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,32 @@
1
+ // OWNER: T2-A4
2
+ /**
3
+ * Real-time Collaboration
4
+ *
5
+ * Yjs/CRDT integration for collaborative UI editing.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { YjsClient, AwarenessManager, CapsuleRegistry } from '@allternit/ix/collab';
10
+ *
11
+ * const client = new YjsClient('room-123', config);
12
+ * const text = client.getText('document');
13
+ * text.insert(0, 'Hello collaborative world!');
14
+ * ```
15
+ */
16
+ export { defaultCollabConfig, } from './yjs-types';
17
+ export {
18
+ // YJS Client
19
+ YjsClient, createYjsClient, defaultConfig, } from './yjs-client';
20
+ export {
21
+ // YJS Protocols
22
+ BroadcastProtocol, SyncProtocol, AwarenessManager, createAwarenessManager, } from './yjs-protocols';
23
+ export {
24
+ // Capsule Registry
25
+ CapsuleRegistry, createCapsuleRegistry, } from './capsule-registry';
26
+ export {
27
+ // YJS Adapter
28
+ createYjsAdapter, createCollaborativeStore, } from './yjs-adapter';
29
+ export {
30
+ // Visual Editor
31
+ createVisualEditor, ui, } from './visual-editor';
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,32 @@
1
+ // OWNER: T2-A4
2
+ /**
3
+ * Real-time Collaboration
4
+ *
5
+ * Yjs/CRDT integration for collaborative UI editing.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { YjsClient, AwarenessManager, CapsuleRegistry } from '@allternit/ix/collab';
10
+ *
11
+ * const client = new YjsClient('room-123', config);
12
+ * const text = client.getText('document');
13
+ * text.insert(0, 'Hello collaborative world!');
14
+ * ```
15
+ */
16
+ export { defaultCollabConfig, } from './yjs-types';
17
+ export {
18
+ // YJS Client
19
+ YjsClient, createYjsClient, defaultConfig, } from './yjs-client';
20
+ export {
21
+ // YJS Protocols
22
+ BroadcastProtocol, SyncProtocol, AwarenessManager, createAwarenessManager, } from './yjs-protocols';
23
+ export {
24
+ // Capsule Registry
25
+ CapsuleRegistry, createCapsuleRegistry, } from './capsule-registry';
26
+ export {
27
+ // YJS Adapter
28
+ createYjsAdapter, createCollaborativeStore, } from './yjs-adapter';
29
+ export {
30
+ // Visual Editor
31
+ createVisualEditor, ui, } from './visual-editor';
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/collab/index.ts"],"names":[],"mappings":"AAAA,eAAe;AAEf;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAeL,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO;AACL,aAAa;AACb,SAAS,EACT,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO;AACL,gBAAgB;AAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO;AACL,mBAAmB;AACnB,eAAe,EACf,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO;AACL,cAAc;AACd,gBAAgB,EAChB,wBAAwB,GAIzB,MAAM,eAAe,CAAC;AAEvB,OAAO;AACL,gBAAgB;AAChB,kBAAkB,EAClB,EAAE,GAIH,MAAM,iBAAiB,CAAC"}