@vybestack/llxprt-code 0.1.19-beta → 0.1.19

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 (115) hide show
  1. package/README.md +49 -2
  2. package/dist/package.json +3 -3
  3. package/dist/src/auth/anthropic-oauth-provider.d.ts +33 -0
  4. package/dist/src/auth/anthropic-oauth-provider.js +129 -0
  5. package/dist/src/auth/anthropic-oauth-provider.js.map +1 -0
  6. package/dist/src/auth/gemini-oauth-provider.d.ts +15 -0
  7. package/dist/src/auth/gemini-oauth-provider.js +33 -0
  8. package/dist/src/auth/gemini-oauth-provider.js.map +1 -0
  9. package/dist/src/auth/oauth-manager.d.ts +110 -0
  10. package/dist/src/auth/oauth-manager.js +345 -0
  11. package/dist/src/auth/oauth-manager.js.map +1 -0
  12. package/dist/src/auth/oauth-manager.spec.d.ts +6 -0
  13. package/dist/src/auth/oauth-manager.spec.js +523 -0
  14. package/dist/src/auth/oauth-manager.spec.js.map +1 -0
  15. package/dist/src/auth/qwen-oauth-provider.d.ts +14 -0
  16. package/dist/src/auth/qwen-oauth-provider.js +75 -0
  17. package/dist/src/auth/qwen-oauth-provider.js.map +1 -0
  18. package/dist/src/auth/types.d.ts +7 -0
  19. package/dist/src/auth/types.js +7 -0
  20. package/dist/src/auth/types.js.map +1 -0
  21. package/dist/src/config/auth.js +6 -0
  22. package/dist/src/config/auth.js.map +1 -1
  23. package/dist/src/config/config.js +32 -15
  24. package/dist/src/config/config.js.map +1 -1
  25. package/dist/src/config/keyBindings.d.ts +2 -0
  26. package/dist/src/config/keyBindings.js +7 -8
  27. package/dist/src/config/keyBindings.js.map +1 -1
  28. package/dist/src/config/settings.d.ts +3 -62
  29. package/dist/src/config/settings.js.map +1 -1
  30. package/dist/src/config/settingsSchema.d.ts +587 -0
  31. package/dist/src/config/settingsSchema.js +565 -0
  32. package/dist/src/config/settingsSchema.js.map +1 -0
  33. package/dist/src/gemini.js +23 -5
  34. package/dist/src/gemini.js.map +1 -1
  35. package/dist/src/generated/git-commit.d.ts +1 -1
  36. package/dist/src/generated/git-commit.js +1 -1
  37. package/dist/src/providers/providerManagerInstance.d.ts +2 -0
  38. package/dist/src/providers/providerManagerInstance.js +45 -5
  39. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  40. package/dist/src/services/BuiltinCommandLoader.js +2 -0
  41. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  42. package/dist/src/ui/App.js +108 -17
  43. package/dist/src/ui/App.js.map +1 -1
  44. package/dist/src/ui/IdeIntegrationNudge.d.ts +7 -4
  45. package/dist/src/ui/IdeIntegrationNudge.js +26 -6
  46. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  47. package/dist/src/ui/commands/authCommand.d.ts +11 -1
  48. package/dist/src/ui/commands/authCommand.js +153 -48
  49. package/dist/src/ui/commands/authCommand.js.map +1 -1
  50. package/dist/src/ui/commands/diagnosticsCommand.js +94 -10
  51. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  52. package/dist/src/ui/commands/ideCommand.js +7 -4
  53. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  54. package/dist/src/ui/commands/keyCommand.js +32 -2
  55. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  56. package/dist/src/ui/commands/keyfileCommand.js +15 -12
  57. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  58. package/dist/src/ui/commands/modelCommand.js +21 -3
  59. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  60. package/dist/src/ui/commands/providerCommand.js +52 -14
  61. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  62. package/dist/src/ui/commands/setCommand.js +17 -1
  63. package/dist/src/ui/commands/setCommand.js.map +1 -1
  64. package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
  65. package/dist/src/ui/commands/settingsCommand.js +16 -0
  66. package/dist/src/ui/commands/settingsCommand.js.map +1 -0
  67. package/dist/src/ui/commands/toolformatCommand.js +79 -23
  68. package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
  69. package/dist/src/ui/commands/types.d.ts +1 -1
  70. package/dist/src/ui/commands/types.js.map +1 -1
  71. package/dist/src/ui/components/AuthDialog.js +55 -62
  72. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  73. package/dist/src/ui/components/Footer.d.ts +1 -0
  74. package/dist/src/ui/components/Footer.js +2 -2
  75. package/dist/src/ui/components/Footer.js.map +1 -1
  76. package/dist/src/ui/components/InputPrompt.d.ts +1 -0
  77. package/dist/src/ui/components/InputPrompt.js +59 -7
  78. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  79. package/dist/src/ui/components/OAuthCodeDialog.d.ts +13 -0
  80. package/dist/src/ui/components/OAuthCodeDialog.js +52 -0
  81. package/dist/src/ui/components/OAuthCodeDialog.js.map +1 -0
  82. package/dist/src/ui/components/SettingsDialog.d.ts +14 -0
  83. package/dist/src/ui/components/SettingsDialog.js +247 -0
  84. package/dist/src/ui/components/SettingsDialog.js.map +1 -0
  85. package/dist/src/ui/components/ThemeDialog.js +4 -15
  86. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  87. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +2 -2
  88. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  89. package/dist/src/ui/components/shared/text-buffer.d.ts +17 -4
  90. package/dist/src/ui/components/shared/text-buffer.js +224 -70
  91. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  92. package/dist/src/ui/components/shared/vim-buffer-actions.js +137 -151
  93. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  94. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  95. package/dist/src/ui/hooks/slashCommandProcessor.js +5 -1
  96. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  97. package/dist/src/ui/hooks/useAuthCommand.js +14 -20
  98. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  99. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  100. package/dist/src/ui/hooks/useGeminiStream.js +67 -25
  101. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  102. package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
  103. package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
  104. package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
  105. package/dist/src/ui/reducers/appReducer.d.ts +3 -2
  106. package/dist/src/ui/reducers/appReducer.js +1 -0
  107. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  108. package/dist/src/utils/dialogScopeUtils.d.ts +31 -0
  109. package/dist/src/utils/dialogScopeUtils.js +48 -0
  110. package/dist/src/utils/dialogScopeUtils.js.map +1 -0
  111. package/dist/src/utils/settingsUtils.d.ts +126 -0
  112. package/dist/src/utils/settingsUtils.js +327 -0
  113. package/dist/src/utils/settingsUtils.js.map +1 -0
  114. package/dist/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +3 -3
@@ -0,0 +1,345 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SettingScope } from '../config/settings.js';
7
+ /**
8
+ * OAuth Manager coordinates multiple OAuth providers
9
+ * Provides unified interface for authentication across providers
10
+ */
11
+ export class OAuthManager {
12
+ providers;
13
+ tokenStore;
14
+ settings;
15
+ // In-memory OAuth enablement state for when settings aren't available
16
+ inMemoryOAuthState;
17
+ constructor(tokenStore, settings) {
18
+ this.providers = new Map();
19
+ this.tokenStore = tokenStore;
20
+ this.settings = settings;
21
+ this.inMemoryOAuthState = new Map();
22
+ }
23
+ /**
24
+ * Register an OAuth provider with the manager
25
+ * @param provider - The OAuth provider to register
26
+ */
27
+ registerProvider(provider) {
28
+ if (!provider) {
29
+ throw new Error('Provider cannot be null or undefined');
30
+ }
31
+ if (!provider.name || typeof provider.name !== 'string') {
32
+ throw new Error('Provider must have a valid name');
33
+ }
34
+ // Validate provider has required methods
35
+ if (typeof provider.initiateAuth !== 'function') {
36
+ throw new Error('Provider must implement initiateAuth method');
37
+ }
38
+ if (typeof provider.getToken !== 'function') {
39
+ throw new Error('Provider must implement getToken method');
40
+ }
41
+ if (typeof provider.refreshIfNeeded !== 'function') {
42
+ throw new Error('Provider must implement refreshIfNeeded method');
43
+ }
44
+ this.providers.set(provider.name, provider);
45
+ }
46
+ /**
47
+ * Get a registered OAuth provider
48
+ * @param name - Provider name
49
+ * @returns OAuth provider or undefined if not registered
50
+ */
51
+ getProvider(name) {
52
+ return this.providers.get(name);
53
+ }
54
+ /**
55
+ * Authenticate with a specific provider
56
+ * @param providerName - Name of the provider to authenticate with
57
+ */
58
+ async authenticate(providerName) {
59
+ if (!providerName || typeof providerName !== 'string') {
60
+ throw new Error('Provider name must be a non-empty string');
61
+ }
62
+ const provider = this.providers.get(providerName);
63
+ if (!provider) {
64
+ throw new Error(`Unknown provider: ${providerName}`);
65
+ }
66
+ try {
67
+ // 1. Initiate authentication with the provider
68
+ await provider.initiateAuth();
69
+ // 2. Get token from provider after successful auth
70
+ const providerToken = await provider.getToken();
71
+ if (!providerToken) {
72
+ throw new Error('Authentication completed but no token was returned');
73
+ }
74
+ // 3. Store token using tokenStore
75
+ await this.tokenStore.saveToken(providerName, providerToken);
76
+ }
77
+ catch (error) {
78
+ // Propagate provider authentication errors
79
+ if (error instanceof Error) {
80
+ throw error;
81
+ }
82
+ throw new Error(`Authentication failed for provider ${providerName}: ${String(error)}`);
83
+ }
84
+ }
85
+ /**
86
+ * Get authentication status for all registered providers
87
+ * @returns Array of authentication status for each provider
88
+ */
89
+ async getAuthStatus() {
90
+ const statuses = [];
91
+ // Get all registered providers and check their status
92
+ for (const [providerName, _provider] of this.providers) {
93
+ try {
94
+ const token = await this.tokenStore.getToken(providerName);
95
+ const oauthEnabled = this.isOAuthEnabled(providerName);
96
+ if (token) {
97
+ // Provider is authenticated, calculate time until expiry
98
+ const now = Date.now();
99
+ const expiresIn = Math.max(0, Math.floor((token.expiry - now) / 1000)); // seconds
100
+ statuses.push({
101
+ provider: providerName,
102
+ authenticated: true,
103
+ authType: 'oauth',
104
+ expiresIn,
105
+ oauthEnabled,
106
+ });
107
+ }
108
+ else {
109
+ // Provider is not authenticated
110
+ statuses.push({
111
+ provider: providerName,
112
+ authenticated: false,
113
+ authType: 'none',
114
+ oauthEnabled,
115
+ });
116
+ }
117
+ }
118
+ catch (_error) {
119
+ // If we can't get token status, consider it unauthenticated
120
+ const oauthEnabled = this.isOAuthEnabled(providerName);
121
+ statuses.push({
122
+ provider: providerName,
123
+ authenticated: false,
124
+ authType: 'none',
125
+ oauthEnabled,
126
+ });
127
+ }
128
+ }
129
+ return statuses;
130
+ }
131
+ /**
132
+ * Check if authenticated with a specific provider (required by precedence resolver)
133
+ * @param providerName - Name of the provider
134
+ * @returns True if authenticated, false otherwise
135
+ */
136
+ async isAuthenticated(providerName) {
137
+ // Special handling for Gemini - check if OAuth is enabled and working
138
+ if (providerName === 'gemini' && this.isOAuthEnabled('gemini')) {
139
+ // For Gemini, if OAuth is enabled, we assume it's authenticated
140
+ // since the actual auth is handled by LOGIN_WITH_GOOGLE
141
+ return true;
142
+ }
143
+ const token = await this.getOAuthToken(providerName);
144
+ return token !== null;
145
+ }
146
+ /**
147
+ * Get OAuth token for a specific provider
148
+ * Compatible with precedence resolver - returns access token string
149
+ * @param providerName - Name of the provider
150
+ * @returns Access token string if available, null otherwise
151
+ */
152
+ async getToken(providerName) {
153
+ // Check if OAuth is enabled for this provider
154
+ if (!this.isOAuthEnabled(providerName)) {
155
+ return null;
156
+ }
157
+ const token = await this.getOAuthToken(providerName);
158
+ // Special handling for different providers
159
+ if (providerName === 'gemini') {
160
+ if (token) {
161
+ return token.access_token;
162
+ }
163
+ // Return a special token that signals to use LOGIN_WITH_GOOGLE
164
+ return 'USE_LOGIN_WITH_GOOGLE';
165
+ }
166
+ // For Qwen, return the OAuth token to be used as API key
167
+ if (providerName === 'qwen' && token) {
168
+ return token.access_token;
169
+ }
170
+ if (token) {
171
+ return token.access_token;
172
+ }
173
+ // For other providers, trigger OAuth flow
174
+ try {
175
+ await this.authenticate(providerName);
176
+ const newToken = await this.getOAuthToken(providerName);
177
+ // Return the access token without any prefix - OAuth Bearer tokens should be used as-is
178
+ return newToken ? newToken.access_token : null;
179
+ }
180
+ catch (error) {
181
+ // Re-throw the error so it's not silently swallowed
182
+ console.error(`OAuth authentication failed for ${providerName}:`, error);
183
+ throw error;
184
+ }
185
+ }
186
+ /**
187
+ * Get OAuth token object for a specific provider
188
+ * @param providerName - Name of the provider
189
+ * @returns OAuth token if available, null otherwise
190
+ */
191
+ async getOAuthToken(providerName) {
192
+ if (!providerName || typeof providerName !== 'string') {
193
+ throw new Error('Provider name must be a non-empty string');
194
+ }
195
+ const provider = this.providers.get(providerName);
196
+ if (!provider) {
197
+ throw new Error(`Unknown provider: ${providerName}`);
198
+ }
199
+ try {
200
+ // 1. Try to get token from store
201
+ const token = await this.tokenStore.getToken(providerName);
202
+ if (!token) {
203
+ return null;
204
+ }
205
+ // 2. Check if token expires within 30 seconds (30000ms)
206
+ const now = Date.now();
207
+ const thirtySecondsFromNow = now + 30000;
208
+ if (token.expiry <= thirtySecondsFromNow) {
209
+ // 3. Token is expired or about to expire, try refresh
210
+ try {
211
+ const refreshedToken = await provider.refreshIfNeeded();
212
+ if (refreshedToken) {
213
+ // 4. Update stored token if refreshed
214
+ await this.tokenStore.saveToken(providerName, refreshedToken);
215
+ return refreshedToken;
216
+ }
217
+ else {
218
+ // Refresh failed, return null
219
+ return null;
220
+ }
221
+ }
222
+ catch (_error) {
223
+ // Token refresh failure: Return null, no logging
224
+ return null;
225
+ }
226
+ }
227
+ // 5. Return valid token
228
+ return token;
229
+ }
230
+ catch (error) {
231
+ // For unknown provider or other critical errors, throw
232
+ if (error instanceof Error &&
233
+ error.message.includes('Unknown provider')) {
234
+ throw error;
235
+ }
236
+ // For other errors, return null
237
+ return null;
238
+ }
239
+ }
240
+ /**
241
+ * Get list of all registered provider names
242
+ * @returns Array of provider names
243
+ */
244
+ getSupportedProviders() {
245
+ return Array.from(this.providers.keys()).sort();
246
+ }
247
+ /**
248
+ * Toggle OAuth enablement for a provider
249
+ * @param providerName - Name of the provider
250
+ * @returns New enablement state (true if enabled, false if disabled)
251
+ */
252
+ async toggleOAuthEnabled(providerName) {
253
+ if (!providerName || typeof providerName !== 'string') {
254
+ throw new Error('Provider name must be a non-empty string');
255
+ }
256
+ const provider = this.providers.get(providerName);
257
+ if (!provider) {
258
+ throw new Error(`Unknown provider: ${providerName}`);
259
+ }
260
+ const currentlyEnabled = this.isOAuthEnabled(providerName);
261
+ const newState = !currentlyEnabled;
262
+ if (this.settings) {
263
+ // If we have settings, persist the state
264
+ // Get current OAuth enabled providers or initialize empty object
265
+ const oauthEnabledProviders = this.settings.merged.oauthEnabledProviders || {};
266
+ oauthEnabledProviders[providerName] = newState;
267
+ // Save the updated configuration
268
+ this.settings.setValue(SettingScope.User, 'oauthEnabledProviders', oauthEnabledProviders);
269
+ }
270
+ else {
271
+ // No settings available, store in memory only
272
+ // This allows OAuth to work even without a settings file
273
+ this.inMemoryOAuthState.set(providerName, newState);
274
+ }
275
+ return newState;
276
+ }
277
+ /**
278
+ * Check if OAuth is enabled for a provider
279
+ * @param providerName - Name of the provider
280
+ * @returns True if OAuth is enabled, false otherwise
281
+ */
282
+ isOAuthEnabled(providerName) {
283
+ if (this.settings) {
284
+ // Check settings first if available
285
+ const oauthEnabledProviders = this.settings.merged.oauthEnabledProviders || {};
286
+ return oauthEnabledProviders[providerName] ?? false;
287
+ }
288
+ else {
289
+ // Fall back to in-memory state if no settings
290
+ return this.inMemoryOAuthState.get(providerName) ?? false;
291
+ }
292
+ }
293
+ /**
294
+ * Check for higher priority authentication methods
295
+ * @param providerName - Name of the provider to check
296
+ * @returns String describing higher priority auth method, null if none
297
+ */
298
+ async getHigherPriorityAuth(providerName) {
299
+ if (!this.settings) {
300
+ return null;
301
+ }
302
+ const merged = this.settings.merged;
303
+ // Check for API keys (highest priority)
304
+ if (merged.providerApiKeys && merged.providerApiKeys[providerName]) {
305
+ return 'API Key';
306
+ }
307
+ // Check for keyfiles (second highest priority)
308
+ if (merged.providerKeyfiles && merged.providerKeyfiles[providerName]) {
309
+ return 'Keyfile';
310
+ }
311
+ // Check for environment variables
312
+ const envKeyName = `${providerName.toUpperCase()}_API_KEY`;
313
+ if (process.env[envKeyName]) {
314
+ return 'Environment Variable';
315
+ }
316
+ // For OpenAI-based providers, check if baseURL is compatible
317
+ if (providerName === 'qwen') {
318
+ const baseUrls = merged.providerBaseUrls || {};
319
+ const openaiBaseUrl = baseUrls['openai'];
320
+ if (openaiBaseUrl && !this.isQwenCompatibleUrl(openaiBaseUrl)) {
321
+ return 'OpenAI BaseURL Mismatch';
322
+ }
323
+ }
324
+ return null;
325
+ }
326
+ /**
327
+ * Check if a URL is compatible with Qwen OAuth
328
+ * @param url - The base URL to check
329
+ * @returns True if compatible, false otherwise
330
+ */
331
+ isQwenCompatibleUrl(url) {
332
+ if (!url)
333
+ return true; // Default OpenAI endpoint is compatible
334
+ // Qwen-compatible URLs
335
+ const qwenDomains = ['dashscope.aliyuncs.com', 'qwen.com', 'api.qwen.com'];
336
+ try {
337
+ const urlObj = new URL(url);
338
+ return qwenDomains.some((domain) => urlObj.hostname.includes(domain));
339
+ }
340
+ catch {
341
+ return false; // Invalid URL format
342
+ }
343
+ }
344
+ }
345
+ //# sourceMappingURL=oauth-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-manager.js","sourceRoot":"","sources":["../../../src/auth/oauth-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAkB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA6BrE;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,SAAS,CAA6B;IACtC,UAAU,CAAa;IACvB,QAAQ,CAAkB;IAClC,sEAAsE;IAC9D,kBAAkB,CAAuB;IAEjD,YAAY,UAAsB,EAAE,QAAyB;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAuB;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,yCAAyC;QACzC,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAE9B,mDAAmD;YACnD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YAED,kCAAkC;YAClC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2CAA2C;YAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CACb,sCAAsC,YAAY,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,sDAAsD;QACtD,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBAEvD,IAAI,KAAK,EAAE,CAAC;oBACV,yDAAyD;oBACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CACxC,CAAC,CAAC,UAAU;oBAEb,QAAQ,CAAC,IAAI,CAAC;wBACZ,QAAQ,EAAE,YAAY;wBACtB,aAAa,EAAE,IAAI;wBACnB,QAAQ,EAAE,OAAO;wBACjB,SAAS;wBACT,YAAY;qBACb,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,gCAAgC;oBAChC,QAAQ,CAAC,IAAI,CAAC;wBACZ,QAAQ,EAAE,YAAY;wBACtB,aAAa,EAAE,KAAK;wBACpB,QAAQ,EAAE,MAAM;wBAChB,YAAY;qBACb,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,QAAQ,EAAE,YAAY;oBACtB,aAAa,EAAE,KAAK;oBACpB,QAAQ,EAAE,MAAM;oBAChB,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,YAAoB;QACxC,sEAAsE;QACtE,IAAI,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,gEAAgE;YAChE,wDAAwD;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrD,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,YAAoB;QACjC,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAErD,2CAA2C;QAC3C,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,YAAY,CAAC;YAC5B,CAAC;YACD,+DAA+D;YAC/D,OAAO,uBAAuB,CAAC;QACjC,CAAC;QAED,yDAAyD;QACzD,IAAI,YAAY,KAAK,MAAM,IAAI,KAAK,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,YAAY,CAAC;QAC5B,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,YAAY,CAAC;QAC5B,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACxD,wFAAwF;YACxF,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oDAAoD;YACpD,OAAO,CAAC,KAAK,CAAC,mCAAmC,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YACzE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,YAAoB;QACtC,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,wDAAwD;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,oBAAoB,GAAG,GAAG,GAAG,KAAK,CAAC;YAEzC,IAAI,KAAK,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;gBACzC,sDAAsD;gBACtD,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;oBACxD,IAAI,cAAc,EAAE,CAAC;wBACnB,sCAAsC;wBACtC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;wBAC9D,OAAO,cAAc,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,8BAA8B;wBAC9B,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,iDAAiD;oBACjD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uDAAuD;YACvD,IACE,KAAK,YAAY,KAAK;gBACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAC1C,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,gCAAgC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAAoB;QAC3C,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,CAAC,gBAAgB,CAAC;QAEnC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,yCAAyC;YACzC,iEAAiE;YACjE,MAAM,qBAAqB,GACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;YACnD,qBAAqB,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;YAE/C,iCAAiC;YACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,YAAY,CAAC,IAAI,EACjB,uBAAuB,EACvB,qBAAqB,CACtB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,yDAAyD;YACzD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,YAAoB;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,oCAAoC;YACpC,MAAM,qBAAqB,GACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;YACnD,OAAO,qBAAqB,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,YAAoB;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEpC,wCAAwC;QACxC,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+CAA+C;QAC/C,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YACrE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,kCAAkC;QAClC,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC;QAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,sBAAsB,CAAC;QAChC,CAAC;QAED,6DAA6D;QAC7D,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9D,OAAO,yBAAyB,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,GAAW;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,wCAAwC;QAE/D,uBAAuB;QACvB,MAAM,WAAW,GAAG,CAAC,wBAAwB,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,qBAAqB;QACrC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};