@auto-engineer/cli 0.19.1 → 0.21.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 (138) hide show
  1. package/CHANGELOG.md +24 -4
  2. package/dist/src/__fixtures__/auto.config.d.ts +7 -0
  3. package/dist/src/__fixtures__/auto.config.d.ts.map +1 -0
  4. package/dist/src/__fixtures__/auto.config.js +7 -0
  5. package/dist/src/__fixtures__/auto.config.js.map +1 -0
  6. package/dist/src/dsl/index.d.ts +71 -0
  7. package/dist/src/dsl/index.d.ts.map +1 -0
  8. package/dist/src/dsl/index.js +504 -0
  9. package/dist/src/dsl/index.js.map +1 -0
  10. package/dist/src/dsl/types.d.ts +39 -0
  11. package/dist/src/dsl/types.d.ts.map +1 -0
  12. package/dist/src/dsl/types.js +2 -0
  13. package/dist/src/dsl/types.js.map +1 -0
  14. package/dist/src/dsl-exports.d.ts +5 -0
  15. package/dist/src/dsl-exports.d.ts.map +1 -0
  16. package/dist/src/dsl-exports.js +4 -0
  17. package/dist/src/dsl-exports.js.map +1 -0
  18. package/dist/src/index.js +16 -201
  19. package/dist/src/index.js.map +1 -1
  20. package/dist/src/plugin-loader.d.ts +84 -0
  21. package/dist/src/plugin-loader.d.ts.map +1 -0
  22. package/dist/src/plugin-loader.js +788 -0
  23. package/dist/src/plugin-loader.js.map +1 -0
  24. package/dist/src/server/command-metadata-service.d.ts +27 -0
  25. package/dist/src/server/command-metadata-service.d.ts.map +1 -0
  26. package/dist/src/server/command-metadata-service.js +69 -0
  27. package/dist/src/server/command-metadata-service.js.map +1 -0
  28. package/dist/src/server/command-registry.d.ts +21 -0
  29. package/dist/src/server/command-registry.d.ts.map +1 -0
  30. package/dist/src/server/command-registry.js +58 -0
  31. package/dist/src/server/command-registry.js.map +1 -0
  32. package/dist/src/server/config-loader.d.ts +16 -0
  33. package/dist/src/server/config-loader.d.ts.map +1 -0
  34. package/dist/src/server/config-loader.js +106 -0
  35. package/dist/src/server/config-loader.js.map +1 -0
  36. package/dist/src/server/event-processor.d.ts +45 -0
  37. package/dist/src/server/event-processor.d.ts.map +1 -0
  38. package/dist/src/server/event-processor.js +287 -0
  39. package/dist/src/server/event-processor.js.map +1 -0
  40. package/dist/src/server/file-syncer/crypto/jwe-encryptor.d.ts +15 -0
  41. package/dist/src/server/file-syncer/crypto/jwe-encryptor.d.ts.map +1 -0
  42. package/dist/src/server/file-syncer/crypto/jwe-encryptor.js +72 -0
  43. package/dist/src/server/file-syncer/crypto/jwe-encryptor.js.map +1 -0
  44. package/dist/src/server/file-syncer/crypto/provider-resolver.d.ts +24 -0
  45. package/dist/src/server/file-syncer/crypto/provider-resolver.d.ts.map +1 -0
  46. package/dist/src/server/file-syncer/crypto/provider-resolver.js +71 -0
  47. package/dist/src/server/file-syncer/crypto/provider-resolver.js.map +1 -0
  48. package/dist/src/server/file-syncer/discovery/bareImports.d.ts +3 -0
  49. package/dist/src/server/file-syncer/discovery/bareImports.d.ts.map +1 -0
  50. package/dist/src/server/file-syncer/discovery/bareImports.js +36 -0
  51. package/dist/src/server/file-syncer/discovery/bareImports.js.map +1 -0
  52. package/dist/src/server/file-syncer/discovery/dts.d.ts +11 -0
  53. package/dist/src/server/file-syncer/discovery/dts.d.ts.map +1 -0
  54. package/dist/src/server/file-syncer/discovery/dts.js +108 -0
  55. package/dist/src/server/file-syncer/discovery/dts.js.map +1 -0
  56. package/dist/src/server/file-syncer/index.d.ts +22 -0
  57. package/dist/src/server/file-syncer/index.d.ts.map +1 -0
  58. package/dist/src/server/file-syncer/index.js +378 -0
  59. package/dist/src/server/file-syncer/index.js.map +1 -0
  60. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts +7 -0
  61. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts.map +1 -0
  62. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js +103 -0
  63. package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js.map +1 -0
  64. package/dist/src/server/file-syncer/types/wire.d.ts +14 -0
  65. package/dist/src/server/file-syncer/types/wire.d.ts.map +1 -0
  66. package/dist/src/server/file-syncer/types/wire.js +2 -0
  67. package/dist/src/server/file-syncer/types/wire.js.map +1 -0
  68. package/dist/src/server/file-syncer/utils/hash.d.ts +5 -0
  69. package/dist/src/server/file-syncer/utils/hash.d.ts.map +1 -0
  70. package/dist/src/server/file-syncer/utils/hash.js +20 -0
  71. package/dist/src/server/file-syncer/utils/hash.js.map +1 -0
  72. package/dist/src/server/file-syncer/utils/path.d.ts +15 -0
  73. package/dist/src/server/file-syncer/utils/path.d.ts.map +1 -0
  74. package/dist/src/server/file-syncer/utils/path.js +109 -0
  75. package/dist/src/server/file-syncer/utils/path.js.map +1 -0
  76. package/dist/src/server/http-routes.d.ts +30 -0
  77. package/dist/src/server/http-routes.d.ts.map +1 -0
  78. package/dist/src/server/http-routes.js +394 -0
  79. package/dist/src/server/http-routes.js.map +1 -0
  80. package/dist/src/server/sandbox-landing-page.html +367 -0
  81. package/dist/src/server/server.d.ts +106 -0
  82. package/dist/src/server/server.d.ts.map +1 -0
  83. package/dist/src/server/server.js +255 -0
  84. package/dist/src/server/server.js.map +1 -0
  85. package/dist/src/server/services/child-process-manager.d.ts +27 -0
  86. package/dist/src/server/services/child-process-manager.d.ts.map +1 -0
  87. package/dist/src/server/services/child-process-manager.js +126 -0
  88. package/dist/src/server/services/child-process-manager.js.map +1 -0
  89. package/dist/src/server/services/index.d.ts +3 -0
  90. package/dist/src/server/services/index.d.ts.map +1 -0
  91. package/dist/src/server/services/index.js +2 -0
  92. package/dist/src/server/services/index.js.map +1 -0
  93. package/dist/src/server/services/interface.d.ts +6 -0
  94. package/dist/src/server/services/interface.d.ts.map +1 -0
  95. package/dist/src/server/services/interface.js +2 -0
  96. package/dist/src/server/services/interface.js.map +1 -0
  97. package/dist/src/server/settled-tracker.d.ts +29 -0
  98. package/dist/src/server/settled-tracker.d.ts.map +1 -0
  99. package/dist/src/server/settled-tracker.js +203 -0
  100. package/dist/src/server/settled-tracker.js.map +1 -0
  101. package/dist/src/server/state-manager.d.ts +24 -0
  102. package/dist/src/server/state-manager.d.ts.map +1 -0
  103. package/dist/src/server/state-manager.js +56 -0
  104. package/dist/src/server/state-manager.js.map +1 -0
  105. package/dist/src/server/websocket-handler.d.ts +5 -0
  106. package/dist/src/server/websocket-handler.d.ts.map +1 -0
  107. package/dist/src/server/websocket-handler.js +40 -0
  108. package/dist/src/server/websocket-handler.js.map +1 -0
  109. package/dist/src/server.d.ts +20 -0
  110. package/dist/src/server.d.ts.map +1 -0
  111. package/dist/src/server.js +204 -0
  112. package/dist/src/server.js.map +1 -0
  113. package/dist/src/utils/analytics.d.ts +21 -0
  114. package/dist/src/utils/analytics.d.ts.map +1 -0
  115. package/dist/src/utils/analytics.js +41 -0
  116. package/dist/src/utils/analytics.js.map +1 -0
  117. package/dist/src/utils/config.d.ts +11 -0
  118. package/dist/src/utils/config.d.ts.map +1 -0
  119. package/dist/src/utils/config.js +50 -0
  120. package/dist/src/utils/config.js.map +1 -0
  121. package/dist/src/utils/correlation-id.d.ts +3 -0
  122. package/dist/src/utils/correlation-id.d.ts.map +1 -0
  123. package/dist/src/utils/correlation-id.js +7 -0
  124. package/dist/src/utils/correlation-id.js.map +1 -0
  125. package/dist/src/utils/errors.d.ts +22 -0
  126. package/dist/src/utils/errors.d.ts.map +1 -0
  127. package/dist/src/utils/errors.js +50 -0
  128. package/dist/src/utils/errors.js.map +1 -0
  129. package/dist/src/utils/get-package-version.d.ts +7 -0
  130. package/dist/src/utils/get-package-version.d.ts.map +1 -0
  131. package/dist/src/utils/get-package-version.js +31 -0
  132. package/dist/src/utils/get-package-version.js.map +1 -0
  133. package/dist/src/utils/terminal.d.ts +13 -0
  134. package/dist/src/utils/terminal.d.ts.map +1 -0
  135. package/dist/src/utils/terminal.js +85 -0
  136. package/dist/src/utils/terminal.js.map +1 -0
  137. package/dist/tsconfig.tsbuildinfo +1 -1
  138. package/package.json +14 -4
@@ -0,0 +1,287 @@
1
+ import { nanoid } from 'nanoid';
2
+ import { generateChildCorrelationId, generateCorrelationId } from '../utils/correlation-id.js';
3
+ import createDebug from 'debug';
4
+ const debugBus = createDebug('auto-engineer:server:bus');
5
+ export class EventProcessor {
6
+ constructor(messageBus, messageStore, stateManager, onEventBroadcast, settledTracker) {
7
+ this.messageBus = messageBus;
8
+ this.messageStore = messageStore;
9
+ this.stateManager = stateManager;
10
+ this.onEventBroadcast = onEventBroadcast;
11
+ this.settledTracker = settledTracker;
12
+ this.eventHandlers = new Map();
13
+ this.correlationContext = new Map(); // requestId -> correlationId mapping
14
+ }
15
+ setupGlobalEventListener() {
16
+ this.messageBus.subscribeAll({
17
+ name: 'ServerStateManager',
18
+ handle: async (event) => {
19
+ debugBus('Received event:', event.type, JSON.stringify(event));
20
+ await this.storeEvent(event);
21
+ this.stateManager.applyEvent(event);
22
+ this.notifySettledTrackerOfEvent(event);
23
+ this.attachChildCorrelationIdToEvent(event);
24
+ this.triggerEventHandlers(event);
25
+ this.onEventBroadcast(event);
26
+ debugBus('Broadcasted event to clients:', event.type);
27
+ },
28
+ });
29
+ }
30
+ async storeEvent(event) {
31
+ try {
32
+ await this.messageStore.saveMessages('$all', [event], undefined, 'event');
33
+ debugBus('Event stored in message store:', event.type);
34
+ }
35
+ catch (error) {
36
+ debugBus('Error storing event:', error);
37
+ }
38
+ }
39
+ notifySettledTrackerOfEvent(event) {
40
+ if (this.settledTracker) {
41
+ this.settledTracker.onEventReceived(event);
42
+ }
43
+ }
44
+ attachChildCorrelationIdToEvent(event) {
45
+ const handlers = this.eventHandlers.get(event.type) || [];
46
+ if (handlers.length > 0 &&
47
+ event.correlationId !== undefined &&
48
+ event.correlationId !== null &&
49
+ event.correlationId !== '') {
50
+ const childCorrelationId = generateChildCorrelationId(event.correlationId);
51
+ event._frameworkChildCorrelationId = childCorrelationId;
52
+ debugBus('Generated child correlationId for event:', childCorrelationId);
53
+ }
54
+ }
55
+ triggerEventHandlers(event) {
56
+ const handlers = this.eventHandlers.get(event.type) || [];
57
+ for (const handler of handlers) {
58
+ try {
59
+ handler(event);
60
+ }
61
+ catch (error) {
62
+ const isTest = process.env.NODE_ENV === 'test' || process.env.VITEST === 'true';
63
+ if (!isTest) {
64
+ console.error(`Error in event handler for ${event.type}:`, error);
65
+ }
66
+ debugBus('Event handler error (suppressed in tests):', error);
67
+ }
68
+ }
69
+ }
70
+ registerEventHandler(registration) {
71
+ debugBus('Registering event handler for:', registration.eventType);
72
+ const handler = (event) => {
73
+ (async () => {
74
+ try {
75
+ const result = registration.handler(event);
76
+ const eventWithChild = event;
77
+ const correlationId = eventWithChild._frameworkChildCorrelationId !== undefined &&
78
+ eventWithChild._frameworkChildCorrelationId !== null &&
79
+ eventWithChild._frameworkChildCorrelationId !== ''
80
+ ? eventWithChild._frameworkChildCorrelationId
81
+ : event.correlationId;
82
+ await this.processHandlerResult(result, correlationId);
83
+ }
84
+ catch (error) {
85
+ const isTest = process.env.NODE_ENV === 'test' || process.env.VITEST === 'true';
86
+ if (!isTest) {
87
+ console.error('Error in event handler:', error);
88
+ }
89
+ debugBus('Event handler error (suppressed in tests):', error);
90
+ }
91
+ })().catch((error) => {
92
+ const isTest = process.env.NODE_ENV === 'test' || process.env.VITEST === 'true';
93
+ if (!isTest) {
94
+ console.error('Unhandled error in event handler:', error);
95
+ }
96
+ debugBus('Unhandled event handler error (suppressed in tests):', error);
97
+ });
98
+ };
99
+ // Store handler for later execution
100
+ if (!this.eventHandlers.has(registration.eventType)) {
101
+ this.eventHandlers.set(registration.eventType, []);
102
+ }
103
+ this.eventHandlers.get(registration.eventType).push(handler);
104
+ }
105
+ async processHandlerResult(result, parentCorrelationId) {
106
+ if (result === null || result === undefined)
107
+ return;
108
+ if (Array.isArray(result)) {
109
+ await this.processCommandArray(result, parentCorrelationId);
110
+ }
111
+ else if (typeof result === 'object' && result !== null && 'type' in result) {
112
+ await this.processActionOrCommand(result, parentCorrelationId);
113
+ }
114
+ }
115
+ async processCommandArray(commands, parentCorrelationId) {
116
+ debugBus('Dispatching multiple commands from event handler');
117
+ for (const command of commands) {
118
+ if (command !== null &&
119
+ command !== undefined &&
120
+ typeof command === 'object' &&
121
+ 'type' in command &&
122
+ 'data' in command) {
123
+ const cmd = command;
124
+ const cmdWithCorrelation = this.maybeInheritCorrelationId(cmd, parentCorrelationId);
125
+ const enhancedCommand = this.enhanceCommandWithIds(cmdWithCorrelation, parentCorrelationId);
126
+ debugBus('Dispatching command:', enhancedCommand.type);
127
+ await this.storeCommand(enhancedCommand);
128
+ await this.messageBus.sendCommand(enhancedCommand);
129
+ }
130
+ }
131
+ }
132
+ async processActionOrCommand(action, parentCorrelationId) {
133
+ const actionObj = action;
134
+ if (actionObj !== null && typeof actionObj === 'object' && 'data' in actionObj) {
135
+ const cmd = action;
136
+ const cmdWithCorrelation = this.maybeInheritCorrelationId(cmd, parentCorrelationId);
137
+ const enhancedCommand = this.enhanceCommandWithIds(cmdWithCorrelation, parentCorrelationId);
138
+ debugBus('Dispatching command from event handler:', enhancedCommand.type);
139
+ await this.storeCommand(enhancedCommand);
140
+ await this.messageBus.sendCommand(enhancedCommand);
141
+ }
142
+ else {
143
+ await this.processDispatchAction(action, parentCorrelationId);
144
+ }
145
+ }
146
+ maybeInheritCorrelationId(cmd, parentCorrelationId) {
147
+ const shouldInherit = parentCorrelationId !== undefined &&
148
+ parentCorrelationId !== null &&
149
+ parentCorrelationId !== '' &&
150
+ (cmd.correlationId === undefined || cmd.correlationId === null || cmd.correlationId === '');
151
+ return shouldInherit ? { ...cmd, correlationId: parentCorrelationId } : cmd;
152
+ }
153
+ async processDispatchAction(action, parentCorrelationId) {
154
+ switch (action.type) {
155
+ case 'dispatch':
156
+ await this.handleSingleDispatch(action, parentCorrelationId);
157
+ break;
158
+ case 'dispatch-parallel':
159
+ await this.handleParallelDispatch(action, parentCorrelationId);
160
+ break;
161
+ case 'dispatch-sequence':
162
+ await this.handleSequentialDispatch(action, parentCorrelationId);
163
+ break;
164
+ case 'dispatch-custom':
165
+ await this.handleCustomDispatch(action, parentCorrelationId);
166
+ break;
167
+ }
168
+ }
169
+ async handleSingleDispatch(action, parentCorrelationId) {
170
+ if (action.command) {
171
+ const enhancedCommand = this.enhanceCommandWithIds(action.command, parentCorrelationId);
172
+ debugBus('Dispatching command from dispatch action:', enhancedCommand.type);
173
+ await this.storeCommand(enhancedCommand);
174
+ await this.messageBus.sendCommand(enhancedCommand);
175
+ }
176
+ }
177
+ async handleParallelDispatch(action, parentCorrelationId) {
178
+ if (action.commands) {
179
+ debugBus('Dispatching parallel commands from event handler');
180
+ const enhancedCommands = action.commands.map((cmd) => this.enhanceCommandWithIds(cmd, parentCorrelationId));
181
+ await Promise.all(enhancedCommands.map(async (cmd) => {
182
+ await this.storeCommand(cmd);
183
+ await this.messageBus.sendCommand(cmd);
184
+ }));
185
+ }
186
+ }
187
+ async handleSequentialDispatch(action, parentCorrelationId) {
188
+ if (action.commands) {
189
+ debugBus('Dispatching sequential commands from event handler');
190
+ for (const cmd of action.commands) {
191
+ const enhancedCommand = this.enhanceCommandWithIds(cmd, parentCorrelationId);
192
+ await this.storeCommand(enhancedCommand);
193
+ await this.messageBus.sendCommand(enhancedCommand);
194
+ }
195
+ }
196
+ }
197
+ async handleCustomDispatch(action, parentCorrelationId) {
198
+ if (action.commandFactory) {
199
+ const cmds = action.commandFactory();
200
+ const commands = Array.isArray(cmds) ? cmds : [cmds];
201
+ for (const cmd of commands) {
202
+ const enhancedCommand = this.enhanceCommandWithIds(cmd, parentCorrelationId);
203
+ await this.storeCommand(enhancedCommand);
204
+ await this.messageBus.sendCommand(enhancedCommand);
205
+ }
206
+ }
207
+ }
208
+ getEventHandlers() {
209
+ return this.eventHandlers;
210
+ }
211
+ /**
212
+ * Store a command in the message store
213
+ */
214
+ async storeCommand(command) {
215
+ try {
216
+ const enhancedCommand = this.enhanceCommandWithIds(command, undefined);
217
+ await this.messageStore.saveMessages('$all', [enhancedCommand], undefined, 'command');
218
+ // Notify settled tracker that command started
219
+ if (this.settledTracker) {
220
+ this.settledTracker.onCommandStarted(enhancedCommand);
221
+ }
222
+ // Store correlation context for this command's potential events
223
+ if (enhancedCommand.requestId !== undefined &&
224
+ enhancedCommand.requestId !== null &&
225
+ enhancedCommand.requestId !== '' &&
226
+ enhancedCommand.correlationId !== undefined &&
227
+ enhancedCommand.correlationId !== null &&
228
+ enhancedCommand.correlationId !== '') {
229
+ this.correlationContext.set(enhancedCommand.requestId, enhancedCommand.correlationId);
230
+ this.cleanupCorrelationContext();
231
+ }
232
+ debugBus('Command stored in message store:', enhancedCommand.type);
233
+ }
234
+ catch (error) {
235
+ debugBus('Error storing command:', error);
236
+ }
237
+ }
238
+ enhanceCommandWithIds(command, parentCorrelationId) {
239
+ const now = new Date();
240
+ const requestId = command.requestId ?? `req-${Date.now()}-${nanoid(8)}`;
241
+ let correlationId = command.correlationId;
242
+ if (correlationId === undefined || correlationId === null || correlationId === '') {
243
+ if (parentCorrelationId !== undefined && parentCorrelationId !== null && parentCorrelationId !== '') {
244
+ correlationId = generateChildCorrelationId(parentCorrelationId);
245
+ }
246
+ else {
247
+ const inheritedCorrelationId = this.findInheritedCorrelationId(command);
248
+ correlationId = inheritedCorrelationId ?? generateCorrelationId();
249
+ }
250
+ }
251
+ return {
252
+ ...command,
253
+ requestId,
254
+ correlationId,
255
+ timestamp: command.timestamp || now,
256
+ };
257
+ }
258
+ /**
259
+ * Try to find a correlation ID to inherit from the current context
260
+ */
261
+ findInheritedCorrelationId(_command) {
262
+ // This is a simplified implementation - in a more sophisticated system,
263
+ // you might use async context tracking or other mechanisms
264
+ // For now, try to find the most recent correlation ID from the context map
265
+ const contextEntries = Array.from(this.correlationContext.entries());
266
+ if (contextEntries.length > 0) {
267
+ // Return the most recently stored correlation ID
268
+ return contextEntries[contextEntries.length - 1][1];
269
+ }
270
+ return undefined;
271
+ }
272
+ /**
273
+ * Clear correlation context periodically to prevent memory leaks
274
+ */
275
+ cleanupCorrelationContext() {
276
+ // Keep only the last 1000 entries
277
+ if (this.correlationContext.size > 1000) {
278
+ const entries = Array.from(this.correlationContext.entries());
279
+ this.correlationContext.clear();
280
+ // Keep the last 500 entries
281
+ entries.slice(-500).forEach(([requestId, correlationId]) => {
282
+ this.correlationContext.set(requestId, correlationId);
283
+ });
284
+ }
285
+ }
286
+ }
287
+ //# sourceMappingURL=event-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-processor.js","sourceRoot":"","sources":["../../../src/server/event-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface TokenPayload {
2
+ apiKey: string;
3
+ provider: 'openai' | 'anthropic' | 'google' | 'xai' | 'custom';
4
+ model?: string;
5
+ custom?: {
6
+ name: string;
7
+ baseUrl: string;
8
+ defaultModel: string;
9
+ };
10
+ }
11
+ export declare function createJWE(payload: TokenPayload & {
12
+ roomId: string;
13
+ }): Promise<string>;
14
+ export declare function clearPublicKeyCache(): void;
15
+ //# sourceMappingURL=jwe-encryptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwe-encryptor.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/crypto/jwe-encryptor.ts"],"names":[],"mappings":"AAyDA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB3F;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,72 @@
1
+ import { EncryptJWT, importJWK } from 'jose';
2
+ import fetch from 'node-fetch';
3
+ import createDebug from 'debug';
4
+ const debug = createDebug('auto:cli:jwe-encryptor');
5
+ const PUBLIC_JWKS_URL = 'https://sync-sandbox.rami-632.workers.dev/.well-known/jwks.json';
6
+ const PUBLIC_KEY_CACHE_TTL_MS = 60 * 60 * 300; // 1h
7
+ const JWE_TTL_SECONDS = 1800;
8
+ const AUDIENCE = 'cf-worker-ai';
9
+ let cached = null;
10
+ async function fetchJWKS() {
11
+ debug('Fetching JWKS: %s', PUBLIC_JWKS_URL);
12
+ const res = await fetch(PUBLIC_JWKS_URL, { headers: { accept: 'application/json' } });
13
+ if (!res.ok)
14
+ throw new Error(`Failed JWKS fetch: ${res.status} ${res.statusText}`);
15
+ return (await res.json());
16
+ }
17
+ function pickEncryptionKey(jwks) {
18
+ const candidate = jwks.keys.find((k) => k.kty === 'RSA' &&
19
+ (k.use === 'enc' || k.use === undefined) &&
20
+ (k.alg === undefined || k.alg === 'RSA-OAEP' || k.alg === 'RSA-OAEP-256') &&
21
+ k.n !== undefined &&
22
+ k.e !== undefined &&
23
+ k.kid !== undefined);
24
+ if (candidate === undefined)
25
+ throw new Error('No suitable RSA encryption key in JWKS');
26
+ return candidate;
27
+ }
28
+ async function getCachedPublicKey() {
29
+ const now = Date.now();
30
+ if (cached !== null && now - cached.fetchedAt < PUBLIC_KEY_CACHE_TTL_MS) {
31
+ debug('Using cached JWKS key (kid=%s)', cached.jwk.kid);
32
+ return cached;
33
+ }
34
+ const jwks = await fetchJWKS();
35
+ const jwk = pickEncryptionKey(jwks);
36
+ const alg = jwk.alg ?? 'RSA-OAEP-256';
37
+ const imported = await importJWK(jwk, alg);
38
+ const keyLike = imported instanceof Uint8Array ? imported : imported;
39
+ if (!keyLike.type) {
40
+ throw new Error('importJWK did not return a valid KeyLike');
41
+ }
42
+ const newCached = { keyLike: keyLike, jwk, fetchedAt: now };
43
+ cached = newCached;
44
+ debug('Cached new JWKS key (kid=%s, alg=%s)', jwk.kid, alg);
45
+ return newCached;
46
+ }
47
+ export async function createJWE(payload) {
48
+ const { keyLike, jwk } = await getCachedPublicKey();
49
+ const now = Math.floor(Date.now() / 1000);
50
+ const jwt = new EncryptJWT({
51
+ apiKey: payload.apiKey,
52
+ provider: payload.provider,
53
+ roomId: payload.roomId,
54
+ model: payload.model,
55
+ custom: payload.custom,
56
+ })
57
+ .setProtectedHeader({
58
+ alg: jwk.alg ?? 'RSA-OAEP-256',
59
+ enc: 'A256GCM',
60
+ kid: jwk.kid,
61
+ })
62
+ .setIssuedAt(now)
63
+ .setExpirationTime(now + JWE_TTL_SECONDS)
64
+ .setAudience(AUDIENCE);
65
+ const jwe = await jwt.encrypt(keyLike);
66
+ debug('Created JWE (kid=%s, exp in %ss)', jwk.kid, JWE_TTL_SECONDS);
67
+ return jwe;
68
+ }
69
+ export function clearPublicKeyCache() {
70
+ cached = null;
71
+ }
72
+ //# sourceMappingURL=jwe-encryptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwe-encryptor.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/crypto/jwe-encryptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAqB,MAAM,MAAM,CAAC;AAChE,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,WAAW,MAAM,OAAO,CAAC;AAEhC,MAAM,KAAK,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAEpD,MAAM,eAAe,GAAG,iEAAiE,CAAC;AAC1F,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK;AACpD,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC;AAKhC,IAAI,MAAM,GAAqB,IAAI,CAAC;AAEpC,KAAK,UAAU,SAAS;IACtB,KAAK,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAS,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAU;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,GAAG,KAAK,KAAK;QACf,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;QACxC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC;QACzE,CAAC,CAAC,CAAC,KAAK,SAAS;QACjB,CAAC,CAAC,CAAC,KAAK,SAAS;QACjB,CAAC,CAAC,GAAG,KAAK,SAAS,CACtB,CAAC;IACF,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACvF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,uBAAuB,EAAE,CAAC;QACxE,KAAK,CAAC,gCAAgC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAI,GAAG,CAAC,GAAc,IAAI,cAAc,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,YAAY,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,IAAI,CAAE,OAAmB,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,SAAS,GAAc,EAAE,OAAO,EAAE,OAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAClF,MAAM,GAAG,SAAS,CAAC;IACnB,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA0C;IACxE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC;QACzB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;SACC,kBAAkB,CAAC;QAClB,GAAG,EAAG,GAAG,CAAC,GAAc,IAAI,cAAc;QAC1C,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,GAAG,CAAC,GAAa;KACvB,CAAC;SACD,WAAW,CAAC,GAAG,CAAC;SAChB,iBAAiB,CAAC,GAAG,GAAG,eAAe,CAAC;SACxC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare enum AIProvider {
2
+ OpenAI = "openai",
3
+ Anthropic = "anthropic",
4
+ Google = "google",
5
+ XAI = "xai",
6
+ Custom = "custom"
7
+ }
8
+ export type ActiveProvider = {
9
+ provider: Exclude<AIProvider, AIProvider.Custom>;
10
+ apiKey: string;
11
+ model?: string;
12
+ } | {
13
+ provider: AIProvider.Custom;
14
+ apiKey: string;
15
+ model?: string;
16
+ custom: {
17
+ name: string;
18
+ baseUrl: string;
19
+ defaultModel: string;
20
+ };
21
+ };
22
+ export declare function getActiveProvider(): ActiveProvider | null;
23
+ export declare function getProviderEnvHash(): string;
24
+ //# sourceMappingURL=provider-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/crypto/provider-resolver.ts"],"names":[],"mappings":"AAIA,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IACE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE,CAAC;AA6BN,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAoBzD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAe3C"}
@@ -0,0 +1,71 @@
1
+ import dotenv from 'dotenv';
2
+ import { resolve } from 'path';
3
+ import crypto from 'node:crypto';
4
+ export var AIProvider;
5
+ (function (AIProvider) {
6
+ AIProvider["OpenAI"] = "openai";
7
+ AIProvider["Anthropic"] = "anthropic";
8
+ AIProvider["Google"] = "google";
9
+ AIProvider["XAI"] = "xai";
10
+ AIProvider["Custom"] = "custom";
11
+ })(AIProvider || (AIProvider = {}));
12
+ let envLoaded = false;
13
+ function ensureEnv() {
14
+ if (envLoaded)
15
+ return;
16
+ dotenv.config({ path: resolve(process.cwd(), '.env') });
17
+ envLoaded = true;
18
+ }
19
+ function resolveCustom() {
20
+ const name = process.env.CUSTOM_PROVIDER_NAME;
21
+ const baseUrl = process.env.CUSTOM_PROVIDER_BASE_URL;
22
+ const apiKey = process.env.CUSTOM_PROVIDER_API_KEY;
23
+ const defaultModel = process.env.CUSTOM_PROVIDER_DEFAULT_MODEL;
24
+ if (name !== undefined &&
25
+ name.length > 0 &&
26
+ baseUrl !== undefined &&
27
+ baseUrl.length > 0 &&
28
+ apiKey !== undefined &&
29
+ apiKey.length > 0 &&
30
+ defaultModel !== undefined &&
31
+ defaultModel.length > 0) {
32
+ return { provider: AIProvider.Custom, apiKey, custom: { name, baseUrl, defaultModel } };
33
+ }
34
+ return null;
35
+ }
36
+ export function getActiveProvider() {
37
+ ensureEnv();
38
+ const model = process.env.DEFAULT_AI_MODEL ?? undefined;
39
+ const probes = [
40
+ [AIProvider.Anthropic, 'ANTHROPIC_API_KEY'],
41
+ [AIProvider.OpenAI, 'OPENAI_API_KEY'],
42
+ [AIProvider.Google, 'GEMINI_API_KEY'],
43
+ [AIProvider.XAI, 'XAI_API_KEY'],
44
+ ];
45
+ for (const [provider, envVar] of probes) {
46
+ const apiKey = process.env[envVar];
47
+ if (apiKey !== undefined)
48
+ return { provider, apiKey, model };
49
+ }
50
+ const custom = resolveCustom();
51
+ if (custom !== null)
52
+ return { ...custom, model };
53
+ return null;
54
+ }
55
+ export function getProviderEnvHash() {
56
+ ensureEnv();
57
+ const keys = [
58
+ 'ANTHROPIC_API_KEY',
59
+ 'OPENAI_API_KEY',
60
+ 'GEMINI_API_KEY',
61
+ 'XAI_API_KEY',
62
+ 'CUSTOM_PROVIDER_NAME',
63
+ 'CUSTOM_PROVIDER_BASE_URL',
64
+ 'CUSTOM_PROVIDER_API_KEY',
65
+ 'CUSTOM_PROVIDER_DEFAULT_MODEL',
66
+ 'DEFAULT_AI_MODEL',
67
+ ];
68
+ const joined = keys.map((k) => process.env[k] ?? '').join('|');
69
+ return crypto.createHash('md5').update(joined).digest('hex');
70
+ }
71
+ //# sourceMappingURL=provider-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/crypto/provider-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { NodeFileStore } from '@auto-engineer/file-store';
2
+ export declare function collectBareImportsFromFiles(files: string[], vfs: NodeFileStore): Promise<string[]>;
3
+ //# sourceMappingURL=bareImports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bareImports.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/discovery/bareImports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAiB1D,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBxG"}
@@ -0,0 +1,36 @@
1
+ const BARE_IMPORT_RE = /\bfrom\s+['"]([^'"]+)['"]|require\(\s*['"]([^'"]+)['"]\s*\)|\bimport\(\s*['"]([^'"]+)['"]\s*\)/g;
2
+ function isBare(spec) {
3
+ return !!spec && !spec.startsWith('.') && !spec.startsWith('/') && !spec.startsWith('node:');
4
+ }
5
+ function basePackageOf(spec) {
6
+ if (spec.startsWith('@')) {
7
+ const parts = spec.split('/');
8
+ return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : spec;
9
+ }
10
+ const i = spec.indexOf('/');
11
+ return i === -1 ? spec : spec.slice(0, i);
12
+ }
13
+ export async function collectBareImportsFromFiles(files, vfs) {
14
+ const pkgs = new Set();
15
+ for (const abs of files) {
16
+ if (!/\.(m?ts|m?js|tsx|jsx)$/i.test(abs))
17
+ continue;
18
+ try {
19
+ const buf = await vfs.read(abs);
20
+ if (!buf)
21
+ continue;
22
+ const src = new TextDecoder().decode(buf);
23
+ for (const m of src.matchAll(BARE_IMPORT_RE)) {
24
+ const raw = (m[1] ?? m[2] ?? m[3] ?? '').trim();
25
+ if (!isBare(raw))
26
+ continue;
27
+ pkgs.add(basePackageOf(raw));
28
+ }
29
+ }
30
+ catch {
31
+ // ignore per-file errors
32
+ }
33
+ }
34
+ return [...pkgs];
35
+ }
36
+ //# sourceMappingURL=bareImports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bareImports.js","sourceRoot":"","sources":["../../../../../src/server/file-syncer/discovery/bareImports.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAClB,iGAAiG,CAAC;AAEpG,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/F,CAAC;AACD,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,KAAe,EAAE,GAAkB;IACnF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { NodeFileStore } from '@auto-engineer/file-store';
2
+ export declare function readJsonIfExists(vfs: NodeFileStore, p: string): Promise<Record<string, unknown> | null>;
3
+ export declare function exists(vfs: NodeFileStore, p: string): Promise<boolean>;
4
+ export declare function typesAlias(pkg: string): string;
5
+ /** From a list of “base directories”, add each ancestor’s node_modules*/
6
+ export declare function nmRootsForBases(bases: string[], maxUp?: number): string[];
7
+ /** Probe a single package for its entry .d.ts inside a given nm root. */
8
+ export declare function probeEntryDtsInRoot(vfs: NodeFileStore, nmRoot: string, pkg: string): Promise<string | null>;
9
+ /** For each external pkg, choose at most ONE entry d.ts by scanning across provided nm roots. */
10
+ export declare function probeEntryDtsForPackagesFromRoots(vfs: NodeFileStore, nmRoots: string[], pkgs: string[]): Promise<string[]>;
11
+ //# sourceMappingURL=dts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dts.d.ts","sourceRoot":"","sources":["../../../../../src/server/file-syncer/discovery/dts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM1D,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAQ7G;AAED,wBAAsB,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAYpE;AAED,yEAAyE;AACzE,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBjH;AAED,iGAAiG;AACjG,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCnB"}