@ggakila/agentx-framework 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.
- package/CHANGELOG.md +107 -0
- package/LICENSE +21 -0
- package/README.md +335 -0
- package/dist/agent/Agent.d.ts +110 -0
- package/dist/agent/Agent.d.ts.map +1 -0
- package/dist/agent/Agent.js +291 -0
- package/dist/agent/Agent.js.map +1 -0
- package/dist/agent/index.d.ts +5 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +11 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/cli/CLI.d.ts +74 -0
- package/dist/cli/CLI.d.ts.map +1 -0
- package/dist/cli/CLI.js +255 -0
- package/dist/cli/CLI.js.map +1 -0
- package/dist/cli/InteractiveSetup.d.ts +104 -0
- package/dist/cli/InteractiveSetup.d.ts.map +1 -0
- package/dist/cli/InteractiveSetup.js +2225 -0
- package/dist/cli/InteractiveSetup.js.map +1 -0
- package/dist/cli/bin.d.ts +7 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +35 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/ProjectCommands.d.ts +23 -0
- package/dist/cli/commands/ProjectCommands.d.ts.map +1 -0
- package/dist/cli/commands/ProjectCommands.js +504 -0
- package/dist/cli/commands/ProjectCommands.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +21 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/credential/CredentialManager.d.ts +112 -0
- package/dist/credential/CredentialManager.d.ts.map +1 -0
- package/dist/credential/CredentialManager.js +343 -0
- package/dist/credential/CredentialManager.js.map +1 -0
- package/dist/credential/OAuth2Manager.d.ts +206 -0
- package/dist/credential/OAuth2Manager.d.ts.map +1 -0
- package/dist/credential/OAuth2Manager.js +463 -0
- package/dist/credential/OAuth2Manager.js.map +1 -0
- package/dist/credential/index.d.ts +6 -0
- package/dist/credential/index.d.ts.map +1 -0
- package/dist/credential/index.js +16 -0
- package/dist/credential/index.js.map +1 -0
- package/dist/error/ErrorHandler.d.ts +74 -0
- package/dist/error/ErrorHandler.d.ts.map +1 -0
- package/dist/error/ErrorHandler.js +279 -0
- package/dist/error/ErrorHandler.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/DatabaseTool.d.ts +149 -0
- package/dist/integrations/DatabaseTool.d.ts.map +1 -0
- package/dist/integrations/DatabaseTool.js +900 -0
- package/dist/integrations/DatabaseTool.js.map +1 -0
- package/dist/integrations/EmailTool.d.ts +142 -0
- package/dist/integrations/EmailTool.d.ts.map +1 -0
- package/dist/integrations/EmailTool.js +259 -0
- package/dist/integrations/EmailTool.js.map +1 -0
- package/dist/integrations/FileSystemTool.d.ts +153 -0
- package/dist/integrations/FileSystemTool.d.ts.map +1 -0
- package/dist/integrations/FileSystemTool.js +835 -0
- package/dist/integrations/FileSystemTool.js.map +1 -0
- package/dist/integrations/GoogleWorkspaceTool.d.ts +125 -0
- package/dist/integrations/GoogleWorkspaceTool.d.ts.map +1 -0
- package/dist/integrations/GoogleWorkspaceTool.js +765 -0
- package/dist/integrations/GoogleWorkspaceTool.js.map +1 -0
- package/dist/integrations/HttpTool.d.ts +55 -0
- package/dist/integrations/HttpTool.d.ts.map +1 -0
- package/dist/integrations/HttpTool.js +209 -0
- package/dist/integrations/HttpTool.js.map +1 -0
- package/dist/integrations/MessagingTool.d.ts +136 -0
- package/dist/integrations/MessagingTool.d.ts.map +1 -0
- package/dist/integrations/MessagingTool.js +503 -0
- package/dist/integrations/MessagingTool.js.map +1 -0
- package/dist/integrations/SchedulerTool.d.ts +147 -0
- package/dist/integrations/SchedulerTool.d.ts.map +1 -0
- package/dist/integrations/SchedulerTool.js +471 -0
- package/dist/integrations/SchedulerTool.js.map +1 -0
- package/dist/integrations/WebhookTool.d.ts +97 -0
- package/dist/integrations/WebhookTool.d.ts.map +1 -0
- package/dist/integrations/WebhookTool.js +351 -0
- package/dist/integrations/WebhookTool.js.map +1 -0
- package/dist/integrations/index.d.ts +13 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +60 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/llm/LLMProvider.d.ts +83 -0
- package/dist/llm/LLMProvider.d.ts.map +1 -0
- package/dist/llm/LLMProvider.js +370 -0
- package/dist/llm/LLMProvider.js.map +1 -0
- package/dist/llm/index.d.ts +5 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +14 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/payment/PaymentProvider.d.ts +157 -0
- package/dist/payment/PaymentProvider.d.ts.map +1 -0
- package/dist/payment/PaymentProvider.js +525 -0
- package/dist/payment/PaymentProvider.js.map +1 -0
- package/dist/payment/index.d.ts +5 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +16 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/plugin/PluginManager.d.ts +156 -0
- package/dist/plugin/PluginManager.d.ts.map +1 -0
- package/dist/plugin/PluginManager.js +288 -0
- package/dist/plugin/PluginManager.js.map +1 -0
- package/dist/plugin/index.d.ts +5 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +10 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/runtime/AgentXRuntime.d.ts +90 -0
- package/dist/runtime/AgentXRuntime.d.ts.map +1 -0
- package/dist/runtime/AgentXRuntime.js +469 -0
- package/dist/runtime/AgentXRuntime.js.map +1 -0
- package/dist/security/SecurityManager.d.ts +245 -0
- package/dist/security/SecurityManager.d.ts.map +1 -0
- package/dist/security/SecurityManager.js +512 -0
- package/dist/security/SecurityManager.js.map +1 -0
- package/dist/security/index.d.ts +5 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +14 -0
- package/dist/security/index.js.map +1 -0
- package/dist/tool/ToolRegistry.d.ts +58 -0
- package/dist/tool/ToolRegistry.d.ts.map +1 -0
- package/dist/tool/ToolRegistry.js +173 -0
- package/dist/tool/ToolRegistry.js.map +1 -0
- package/dist/tool/ToolValidator.d.ts +41 -0
- package/dist/tool/ToolValidator.d.ts.map +1 -0
- package/dist/tool/ToolValidator.js +158 -0
- package/dist/tool/ToolValidator.js.map +1 -0
- package/dist/tool/index.d.ts +6 -0
- package/dist/tool/index.d.ts.map +1 -0
- package/dist/tool/index.js +11 -0
- package/dist/tool/index.js.map +1 -0
- package/dist/transport/BaseTransport.d.ts +66 -0
- package/dist/transport/BaseTransport.d.ts.map +1 -0
- package/dist/transport/BaseTransport.js +103 -0
- package/dist/transport/BaseTransport.js.map +1 -0
- package/dist/transport/HttpTransport.d.ts +41 -0
- package/dist/transport/HttpTransport.d.ts.map +1 -0
- package/dist/transport/HttpTransport.js +160 -0
- package/dist/transport/HttpTransport.js.map +1 -0
- package/dist/transport/LocalTransport.d.ts +40 -0
- package/dist/transport/LocalTransport.d.ts.map +1 -0
- package/dist/transport/LocalTransport.js +157 -0
- package/dist/transport/LocalTransport.js.map +1 -0
- package/dist/transport/QueueTransport.d.ts +63 -0
- package/dist/transport/QueueTransport.d.ts.map +1 -0
- package/dist/transport/QueueTransport.js +194 -0
- package/dist/transport/QueueTransport.js.map +1 -0
- package/dist/transport/StdioTransport.d.ts +51 -0
- package/dist/transport/StdioTransport.d.ts.map +1 -0
- package/dist/transport/StdioTransport.js +216 -0
- package/dist/transport/StdioTransport.js.map +1 -0
- package/dist/transport/TransportFactory.d.ts +35 -0
- package/dist/transport/TransportFactory.d.ts.map +1 -0
- package/dist/transport/TransportFactory.js +100 -0
- package/dist/transport/TransportFactory.js.map +1 -0
- package/dist/transport/index.d.ts +10 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +19 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/types/agent.d.ts +66 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +60 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/credential.d.ts +38 -0
- package/dist/types/credential.d.ts.map +1 -0
- package/dist/types/credential.js +3 -0
- package/dist/types/credential.js.map +1 -0
- package/dist/types/error.d.ts +136 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +223 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/llm.d.ts +43 -0
- package/dist/types/llm.d.ts.map +1 -0
- package/dist/types/llm.js +3 -0
- package/dist/types/llm.js.map +1 -0
- package/dist/types/payment.d.ts +129 -0
- package/dist/types/payment.d.ts.map +1 -0
- package/dist/types/payment.js +6 -0
- package/dist/types/payment.js.map +1 -0
- package/dist/types/runtime.d.ts +31 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/runtime.js +3 -0
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/tool.d.ts +72 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +3 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/types/transport.d.ts +53 -0
- package/dist/types/transport.d.ts.map +1 -0
- package/dist/types/transport.js +3 -0
- package/dist/types/transport.js.map +1 -0
- package/dist/types/workflow.d.ts +72 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +6 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/factory.d.ts +14 -0
- package/dist/utils/factory.d.ts.map +1 -0
- package/dist/utils/factory.js +146 -0
- package/dist/utils/factory.js.map +1 -0
- package/dist/workflow/StateManager.d.ts +93 -0
- package/dist/workflow/StateManager.d.ts.map +1 -0
- package/dist/workflow/StateManager.js +223 -0
- package/dist/workflow/StateManager.js.map +1 -0
- package/dist/workflow/WorkflowDefinition.d.ts +49 -0
- package/dist/workflow/WorkflowDefinition.d.ts.map +1 -0
- package/dist/workflow/WorkflowDefinition.js +264 -0
- package/dist/workflow/WorkflowDefinition.js.map +1 -0
- package/dist/workflow/WorkflowExecutor.d.ts +42 -0
- package/dist/workflow/WorkflowExecutor.d.ts.map +1 -0
- package/dist/workflow/WorkflowExecutor.js +372 -0
- package/dist/workflow/WorkflowExecutor.js.map +1 -0
- package/dist/workflow/index.d.ts +7 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +17 -0
- package/dist/workflow/index.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OAuth2 Flow and Token Management
|
|
4
|
+
* Provides OAuth2 authorization flow handling and automatic token refresh
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.OAuth2AutoRefresher = exports.OAuth2Providers = exports.OAuth2Manager = exports.DefaultOAuth2HttpClient = void 0;
|
|
8
|
+
const error_1 = require("../types/error");
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
/**
|
|
11
|
+
* Default HTTP client using fetch
|
|
12
|
+
*/
|
|
13
|
+
class DefaultOAuth2HttpClient {
|
|
14
|
+
async post(url, data, headers) {
|
|
15
|
+
const body = new URLSearchParams(data).toString();
|
|
16
|
+
const response = await fetch(url, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: {
|
|
19
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
20
|
+
...headers,
|
|
21
|
+
},
|
|
22
|
+
body,
|
|
23
|
+
});
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
const errorText = await response.text();
|
|
26
|
+
throw new error_1.SecurityError(`OAuth2 token request failed: ${response.status} ${errorText}`, error_1.ErrorCodes.OAUTH2_ERROR);
|
|
27
|
+
}
|
|
28
|
+
return response.json();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.DefaultOAuth2HttpClient = DefaultOAuth2HttpClient;
|
|
32
|
+
/**
|
|
33
|
+
* OAuth2 Manager
|
|
34
|
+
* Handles OAuth2 authorization flows and token management
|
|
35
|
+
*/
|
|
36
|
+
class OAuth2Manager {
|
|
37
|
+
providers = new Map();
|
|
38
|
+
pendingStates = new Map();
|
|
39
|
+
logger;
|
|
40
|
+
httpClient;
|
|
41
|
+
stateExpirationMinutes;
|
|
42
|
+
constructor(config) {
|
|
43
|
+
this.logger = config.logger;
|
|
44
|
+
this.httpClient = config.httpClient || new DefaultOAuth2HttpClient();
|
|
45
|
+
this.stateExpirationMinutes = config.stateExpirationMinutes || 10;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Register an OAuth2 provider
|
|
49
|
+
*/
|
|
50
|
+
registerProvider(config) {
|
|
51
|
+
this.validateProviderConfig(config);
|
|
52
|
+
this.providers.set(config.name, config);
|
|
53
|
+
this.logger.info(`OAuth2 provider registered: ${config.name}`);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Unregister an OAuth2 provider
|
|
57
|
+
*/
|
|
58
|
+
unregisterProvider(name) {
|
|
59
|
+
this.providers.delete(name);
|
|
60
|
+
this.logger.info(`OAuth2 provider unregistered: ${name}`);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get a registered provider
|
|
64
|
+
*/
|
|
65
|
+
getProvider(name) {
|
|
66
|
+
return this.providers.get(name);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* List all registered providers
|
|
70
|
+
*/
|
|
71
|
+
listProviders() {
|
|
72
|
+
return Array.from(this.providers.keys());
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Initiate OAuth2 authorization flow
|
|
76
|
+
* Returns the authorization URL to redirect the user to
|
|
77
|
+
*/
|
|
78
|
+
initiateFlow(providerName, scopes) {
|
|
79
|
+
const provider = this.providers.get(providerName);
|
|
80
|
+
if (!provider) {
|
|
81
|
+
throw new error_1.ValidationError(`OAuth2 provider not found: ${providerName}`, error_1.ErrorCodes.PROVIDER_NOT_FOUND);
|
|
82
|
+
}
|
|
83
|
+
// Generate state token
|
|
84
|
+
const state = this.generateState();
|
|
85
|
+
// Generate PKCE code verifier and challenge if supported
|
|
86
|
+
let codeVerifier;
|
|
87
|
+
let codeChallenge;
|
|
88
|
+
if (provider.usesPKCE) {
|
|
89
|
+
codeVerifier = this.generateCodeVerifier();
|
|
90
|
+
codeChallenge = this.generateCodeChallenge(codeVerifier);
|
|
91
|
+
}
|
|
92
|
+
// Store state for verification
|
|
93
|
+
const flowScopes = scopes || provider.scopes || [];
|
|
94
|
+
const stateData = {
|
|
95
|
+
provider: providerName,
|
|
96
|
+
scopes: flowScopes,
|
|
97
|
+
redirectUri: provider.redirectUri,
|
|
98
|
+
codeVerifier,
|
|
99
|
+
createdAt: new Date(),
|
|
100
|
+
expiresAt: new Date(Date.now() + this.stateExpirationMinutes * 60 * 1000),
|
|
101
|
+
};
|
|
102
|
+
this.pendingStates.set(state, stateData);
|
|
103
|
+
// Build authorization URL
|
|
104
|
+
const params = new URLSearchParams({
|
|
105
|
+
client_id: provider.clientId,
|
|
106
|
+
redirect_uri: provider.redirectUri,
|
|
107
|
+
response_type: 'code',
|
|
108
|
+
state,
|
|
109
|
+
scope: flowScopes.join(' '),
|
|
110
|
+
...provider.additionalParams,
|
|
111
|
+
});
|
|
112
|
+
if (codeChallenge) {
|
|
113
|
+
params.set('code_challenge', codeChallenge);
|
|
114
|
+
params.set('code_challenge_method', 'S256');
|
|
115
|
+
}
|
|
116
|
+
const authUrl = `${provider.authorizationUrl}?${params.toString()}`;
|
|
117
|
+
this.logger.debug(`OAuth2 flow initiated for provider: ${providerName}`, { state });
|
|
118
|
+
return authUrl;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Complete OAuth2 authorization flow
|
|
122
|
+
* Exchange authorization code for tokens
|
|
123
|
+
*/
|
|
124
|
+
async completeFlow(code, state) {
|
|
125
|
+
// Validate state
|
|
126
|
+
const stateData = this.pendingStates.get(state);
|
|
127
|
+
if (!stateData) {
|
|
128
|
+
throw new error_1.SecurityError('Invalid or expired OAuth2 state', error_1.ErrorCodes.INVALID_STATE);
|
|
129
|
+
}
|
|
130
|
+
// Check expiration
|
|
131
|
+
if (new Date() > stateData.expiresAt) {
|
|
132
|
+
this.pendingStates.delete(state);
|
|
133
|
+
throw new error_1.SecurityError('OAuth2 state has expired', error_1.ErrorCodes.STATE_EXPIRED);
|
|
134
|
+
}
|
|
135
|
+
// Get provider config
|
|
136
|
+
const provider = this.providers.get(stateData.provider);
|
|
137
|
+
if (!provider) {
|
|
138
|
+
this.pendingStates.delete(state);
|
|
139
|
+
throw new error_1.ValidationError(`OAuth2 provider not found: ${stateData.provider}`, error_1.ErrorCodes.PROVIDER_NOT_FOUND);
|
|
140
|
+
}
|
|
141
|
+
// Exchange code for tokens
|
|
142
|
+
const tokenData = {
|
|
143
|
+
grant_type: 'authorization_code',
|
|
144
|
+
code,
|
|
145
|
+
redirect_uri: stateData.redirectUri,
|
|
146
|
+
client_id: provider.clientId,
|
|
147
|
+
client_secret: provider.clientSecret,
|
|
148
|
+
};
|
|
149
|
+
// Add PKCE code verifier if present
|
|
150
|
+
if (stateData.codeVerifier) {
|
|
151
|
+
tokenData.code_verifier = stateData.codeVerifier;
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
const response = await this.httpClient.post(provider.tokenUrl, tokenData);
|
|
155
|
+
// Clean up state
|
|
156
|
+
this.pendingStates.delete(state);
|
|
157
|
+
// Build credential
|
|
158
|
+
const credential = this.buildCredential(response, stateData.scopes);
|
|
159
|
+
this.logger.info(`OAuth2 flow completed for provider: ${stateData.provider}`);
|
|
160
|
+
return credential;
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
this.pendingStates.delete(state);
|
|
164
|
+
this.logger.error(`OAuth2 token exchange failed for provider: ${stateData.provider}`, error);
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Refresh an OAuth2 token
|
|
170
|
+
*/
|
|
171
|
+
async refreshToken(providerName, credential) {
|
|
172
|
+
const provider = this.providers.get(providerName);
|
|
173
|
+
if (!provider) {
|
|
174
|
+
throw new error_1.ValidationError(`OAuth2 provider not found: ${providerName}`, error_1.ErrorCodes.PROVIDER_NOT_FOUND);
|
|
175
|
+
}
|
|
176
|
+
if (!credential.data.refreshToken) {
|
|
177
|
+
throw new error_1.SecurityError('No refresh token available', error_1.ErrorCodes.NO_REFRESH_TOKEN);
|
|
178
|
+
}
|
|
179
|
+
const tokenData = {
|
|
180
|
+
grant_type: 'refresh_token',
|
|
181
|
+
refresh_token: credential.data.refreshToken,
|
|
182
|
+
client_id: provider.clientId,
|
|
183
|
+
client_secret: provider.clientSecret,
|
|
184
|
+
};
|
|
185
|
+
try {
|
|
186
|
+
const response = await this.httpClient.post(provider.tokenUrl, tokenData);
|
|
187
|
+
// Build new credential, preserving refresh token if not returned
|
|
188
|
+
const newCredential = this.buildCredential(response, credential.scopes || [], credential.data.refreshToken);
|
|
189
|
+
this.logger.info(`OAuth2 token refreshed for provider: ${providerName}`);
|
|
190
|
+
return newCredential;
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
this.logger.error(`OAuth2 token refresh failed for provider: ${providerName}`, error);
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Check if a token needs refresh
|
|
199
|
+
*/
|
|
200
|
+
needsRefresh(credential, thresholdSeconds) {
|
|
201
|
+
if (!credential.expiresAt) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
const threshold = thresholdSeconds || 300; // Default 5 minutes
|
|
205
|
+
const expiresAt = new Date(credential.expiresAt);
|
|
206
|
+
const refreshTime = new Date(expiresAt.getTime() - threshold * 1000);
|
|
207
|
+
return new Date() >= refreshTime;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Check if a token is expired
|
|
211
|
+
*/
|
|
212
|
+
isExpired(credential) {
|
|
213
|
+
if (!credential.expiresAt) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
return new Date() >= new Date(credential.expiresAt);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get pending state data (for testing/debugging)
|
|
220
|
+
*/
|
|
221
|
+
getPendingState(state) {
|
|
222
|
+
return this.pendingStates.get(state);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Clean up expired states
|
|
226
|
+
*/
|
|
227
|
+
cleanupExpiredStates() {
|
|
228
|
+
const now = new Date();
|
|
229
|
+
let cleaned = 0;
|
|
230
|
+
for (const [state, data] of this.pendingStates.entries()) {
|
|
231
|
+
if (now > data.expiresAt) {
|
|
232
|
+
this.pendingStates.delete(state);
|
|
233
|
+
cleaned++;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (cleaned > 0) {
|
|
237
|
+
this.logger.debug(`Cleaned up ${cleaned} expired OAuth2 states`);
|
|
238
|
+
}
|
|
239
|
+
return cleaned;
|
|
240
|
+
}
|
|
241
|
+
// Private methods
|
|
242
|
+
validateProviderConfig(config) {
|
|
243
|
+
if (!config.name) {
|
|
244
|
+
throw new error_1.ValidationError('Provider name is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
245
|
+
}
|
|
246
|
+
if (!config.authorizationUrl) {
|
|
247
|
+
throw new error_1.ValidationError('Authorization URL is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
248
|
+
}
|
|
249
|
+
if (!config.tokenUrl) {
|
|
250
|
+
throw new error_1.ValidationError('Token URL is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
251
|
+
}
|
|
252
|
+
if (!config.clientId) {
|
|
253
|
+
throw new error_1.ValidationError('Client ID is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
254
|
+
}
|
|
255
|
+
if (!config.clientSecret) {
|
|
256
|
+
throw new error_1.ValidationError('Client secret is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
257
|
+
}
|
|
258
|
+
if (!config.redirectUri) {
|
|
259
|
+
throw new error_1.ValidationError('Redirect URI is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
260
|
+
}
|
|
261
|
+
// Validate URLs
|
|
262
|
+
try {
|
|
263
|
+
new URL(config.authorizationUrl);
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
throw new error_1.ValidationError('Invalid authorization URL', error_1.ErrorCodes.INVALID_FORMAT);
|
|
267
|
+
}
|
|
268
|
+
try {
|
|
269
|
+
new URL(config.tokenUrl);
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
throw new error_1.ValidationError('Invalid token URL', error_1.ErrorCodes.INVALID_FORMAT);
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
new URL(config.redirectUri);
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
throw new error_1.ValidationError('Invalid redirect URI', error_1.ErrorCodes.INVALID_FORMAT);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
generateState() {
|
|
282
|
+
return (0, crypto_1.randomBytes)(32).toString('base64url');
|
|
283
|
+
}
|
|
284
|
+
generateCodeVerifier() {
|
|
285
|
+
return (0, crypto_1.randomBytes)(32).toString('base64url');
|
|
286
|
+
}
|
|
287
|
+
generateCodeChallenge(verifier) {
|
|
288
|
+
return (0, crypto_1.createHash)('sha256')
|
|
289
|
+
.update(verifier)
|
|
290
|
+
.digest('base64url');
|
|
291
|
+
}
|
|
292
|
+
buildCredential(response, scopes, fallbackRefreshToken) {
|
|
293
|
+
const expiresAt = response.expires_in
|
|
294
|
+
? new Date(Date.now() + response.expires_in * 1000)
|
|
295
|
+
: undefined;
|
|
296
|
+
return {
|
|
297
|
+
type: 'oauth2',
|
|
298
|
+
data: {
|
|
299
|
+
accessToken: response.access_token,
|
|
300
|
+
refreshToken: response.refresh_token || fallbackRefreshToken,
|
|
301
|
+
tokenType: response.token_type || 'Bearer',
|
|
302
|
+
expiresIn: response.expires_in,
|
|
303
|
+
},
|
|
304
|
+
expiresAt,
|
|
305
|
+
scopes: response.scope ? response.scope.split(' ') : scopes,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
exports.OAuth2Manager = OAuth2Manager;
|
|
310
|
+
/**
|
|
311
|
+
* Common OAuth2 Provider Presets
|
|
312
|
+
* Pre-configured settings for popular OAuth2 providers
|
|
313
|
+
*/
|
|
314
|
+
exports.OAuth2Providers = {
|
|
315
|
+
/**
|
|
316
|
+
* Google OAuth2 configuration
|
|
317
|
+
*/
|
|
318
|
+
google: (config) => ({
|
|
319
|
+
name: 'google',
|
|
320
|
+
authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
|
|
321
|
+
tokenUrl: 'https://oauth2.googleapis.com/token',
|
|
322
|
+
clientId: config.clientId,
|
|
323
|
+
clientSecret: config.clientSecret,
|
|
324
|
+
redirectUri: config.redirectUri,
|
|
325
|
+
scopes: config.scopes || ['openid', 'email', 'profile'],
|
|
326
|
+
additionalParams: {
|
|
327
|
+
access_type: 'offline',
|
|
328
|
+
prompt: 'consent',
|
|
329
|
+
},
|
|
330
|
+
}),
|
|
331
|
+
/**
|
|
332
|
+
* GitHub OAuth2 configuration
|
|
333
|
+
*/
|
|
334
|
+
github: (config) => ({
|
|
335
|
+
name: 'github',
|
|
336
|
+
authorizationUrl: 'https://github.com/login/oauth/authorize',
|
|
337
|
+
tokenUrl: 'https://github.com/login/oauth/access_token',
|
|
338
|
+
clientId: config.clientId,
|
|
339
|
+
clientSecret: config.clientSecret,
|
|
340
|
+
redirectUri: config.redirectUri,
|
|
341
|
+
scopes: config.scopes || ['read:user', 'user:email'],
|
|
342
|
+
}),
|
|
343
|
+
/**
|
|
344
|
+
* Microsoft/Azure AD OAuth2 configuration
|
|
345
|
+
*/
|
|
346
|
+
microsoft: (config) => {
|
|
347
|
+
const tenant = config.tenantId || 'common';
|
|
348
|
+
return {
|
|
349
|
+
name: 'microsoft',
|
|
350
|
+
authorizationUrl: `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/authorize`,
|
|
351
|
+
tokenUrl: `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/token`,
|
|
352
|
+
clientId: config.clientId,
|
|
353
|
+
clientSecret: config.clientSecret,
|
|
354
|
+
redirectUri: config.redirectUri,
|
|
355
|
+
scopes: config.scopes || ['openid', 'email', 'profile', 'offline_access'],
|
|
356
|
+
};
|
|
357
|
+
},
|
|
358
|
+
/**
|
|
359
|
+
* Slack OAuth2 configuration
|
|
360
|
+
*/
|
|
361
|
+
slack: (config) => ({
|
|
362
|
+
name: 'slack',
|
|
363
|
+
authorizationUrl: 'https://slack.com/oauth/v2/authorize',
|
|
364
|
+
tokenUrl: 'https://slack.com/api/oauth.v2.access',
|
|
365
|
+
clientId: config.clientId,
|
|
366
|
+
clientSecret: config.clientSecret,
|
|
367
|
+
redirectUri: config.redirectUri,
|
|
368
|
+
scopes: config.scopes || ['channels:read', 'chat:write'],
|
|
369
|
+
}),
|
|
370
|
+
/**
|
|
371
|
+
* Salesforce OAuth2 configuration
|
|
372
|
+
*/
|
|
373
|
+
salesforce: (config) => {
|
|
374
|
+
const baseUrl = config.instanceUrl || 'https://login.salesforce.com';
|
|
375
|
+
return {
|
|
376
|
+
name: 'salesforce',
|
|
377
|
+
authorizationUrl: `${baseUrl}/services/oauth2/authorize`,
|
|
378
|
+
tokenUrl: `${baseUrl}/services/oauth2/token`,
|
|
379
|
+
clientId: config.clientId,
|
|
380
|
+
clientSecret: config.clientSecret,
|
|
381
|
+
redirectUri: config.redirectUri,
|
|
382
|
+
scopes: config.scopes || ['api', 'refresh_token'],
|
|
383
|
+
};
|
|
384
|
+
},
|
|
385
|
+
/**
|
|
386
|
+
* Custom OAuth2 provider configuration
|
|
387
|
+
*/
|
|
388
|
+
custom: (config) => config,
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* Auto-refresh wrapper for OAuth2 credentials
|
|
392
|
+
* Automatically refreshes tokens before they expire
|
|
393
|
+
*/
|
|
394
|
+
class OAuth2AutoRefresher {
|
|
395
|
+
oauth2Manager;
|
|
396
|
+
refreshCallbacks = new Map();
|
|
397
|
+
refreshTimers = new Map();
|
|
398
|
+
logger;
|
|
399
|
+
constructor(oauth2Manager, logger) {
|
|
400
|
+
this.oauth2Manager = oauth2Manager;
|
|
401
|
+
this.logger = logger;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Start auto-refresh for a credential
|
|
405
|
+
*/
|
|
406
|
+
startAutoRefresh(key, providerName, credential, onRefresh, thresholdSeconds = 300) {
|
|
407
|
+
// Clear any existing timer
|
|
408
|
+
this.stopAutoRefresh(key);
|
|
409
|
+
if (!credential.data.refreshToken) {
|
|
410
|
+
this.logger.warn(`Cannot auto-refresh credential ${key}: no refresh token`);
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (!credential.expiresAt) {
|
|
414
|
+
this.logger.warn(`Cannot auto-refresh credential ${key}: no expiration time`);
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
this.refreshCallbacks.set(key, onRefresh);
|
|
418
|
+
// Calculate when to refresh
|
|
419
|
+
const expiresAt = new Date(credential.expiresAt);
|
|
420
|
+
const refreshAt = new Date(expiresAt.getTime() - thresholdSeconds * 1000);
|
|
421
|
+
const delay = Math.max(0, refreshAt.getTime() - Date.now());
|
|
422
|
+
this.logger.debug(`Scheduling auto-refresh for ${key} in ${Math.round(delay / 1000)}s`);
|
|
423
|
+
const timer = setTimeout(async () => {
|
|
424
|
+
try {
|
|
425
|
+
const newCredential = await this.oauth2Manager.refreshToken(providerName, credential);
|
|
426
|
+
const callback = this.refreshCallbacks.get(key);
|
|
427
|
+
if (callback) {
|
|
428
|
+
await callback(newCredential);
|
|
429
|
+
}
|
|
430
|
+
// Schedule next refresh
|
|
431
|
+
this.startAutoRefresh(key, providerName, newCredential, onRefresh, thresholdSeconds);
|
|
432
|
+
}
|
|
433
|
+
catch (error) {
|
|
434
|
+
this.logger.error(`Auto-refresh failed for ${key}`, error);
|
|
435
|
+
this.stopAutoRefresh(key);
|
|
436
|
+
}
|
|
437
|
+
}, delay);
|
|
438
|
+
this.refreshTimers.set(key, timer);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Stop auto-refresh for a credential
|
|
442
|
+
*/
|
|
443
|
+
stopAutoRefresh(key) {
|
|
444
|
+
const timer = this.refreshTimers.get(key);
|
|
445
|
+
if (timer) {
|
|
446
|
+
clearTimeout(timer);
|
|
447
|
+
this.refreshTimers.delete(key);
|
|
448
|
+
}
|
|
449
|
+
this.refreshCallbacks.delete(key);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Stop all auto-refresh timers
|
|
453
|
+
*/
|
|
454
|
+
stopAll() {
|
|
455
|
+
for (const timer of this.refreshTimers.values()) {
|
|
456
|
+
clearTimeout(timer);
|
|
457
|
+
}
|
|
458
|
+
this.refreshTimers.clear();
|
|
459
|
+
this.refreshCallbacks.clear();
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
exports.OAuth2AutoRefresher = OAuth2AutoRefresher;
|
|
463
|
+
//# sourceMappingURL=OAuth2Manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuth2Manager.js","sourceRoot":"","sources":["../../src/credential/OAuth2Manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential Module Exports
|
|
3
|
+
*/
|
|
4
|
+
export { CredentialManager, CredentialStore, InMemoryCredentialStore, CredentialManagerConfig, CredentialScopeResolver } from './CredentialManager';
|
|
5
|
+
export { OAuth2Manager, OAuth2ManagerConfig, OAuth2ProviderConfig, OAuth2TokenResponse, OAuth2State, OAuth2HttpClient, DefaultOAuth2HttpClient, OAuth2Providers, OAuth2AutoRefresher, } from './OAuth2Manager';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Credential Module Exports
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OAuth2AutoRefresher = exports.OAuth2Providers = exports.DefaultOAuth2HttpClient = exports.OAuth2Manager = exports.CredentialScopeResolver = exports.InMemoryCredentialStore = exports.CredentialManager = void 0;
|
|
7
|
+
var CredentialManager_1 = require("./CredentialManager");
|
|
8
|
+
Object.defineProperty(exports, "CredentialManager", { enumerable: true, get: function () { return CredentialManager_1.CredentialManager; } });
|
|
9
|
+
Object.defineProperty(exports, "InMemoryCredentialStore", { enumerable: true, get: function () { return CredentialManager_1.InMemoryCredentialStore; } });
|
|
10
|
+
Object.defineProperty(exports, "CredentialScopeResolver", { enumerable: true, get: function () { return CredentialManager_1.CredentialScopeResolver; } });
|
|
11
|
+
var OAuth2Manager_1 = require("./OAuth2Manager");
|
|
12
|
+
Object.defineProperty(exports, "OAuth2Manager", { enumerable: true, get: function () { return OAuth2Manager_1.OAuth2Manager; } });
|
|
13
|
+
Object.defineProperty(exports, "DefaultOAuth2HttpClient", { enumerable: true, get: function () { return OAuth2Manager_1.DefaultOAuth2HttpClient; } });
|
|
14
|
+
Object.defineProperty(exports, "OAuth2Providers", { enumerable: true, get: function () { return OAuth2Manager_1.OAuth2Providers; } });
|
|
15
|
+
Object.defineProperty(exports, "OAuth2AutoRefresher", { enumerable: true, get: function () { return OAuth2Manager_1.OAuth2AutoRefresher; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credential/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAM6B;AAL3B,sHAAA,iBAAiB,OAAA;AAEjB,4HAAA,uBAAuB,OAAA;AAEvB,4HAAA,uBAAuB,OAAA;AAGzB,iDAUyB;AATvB,8GAAA,aAAa,OAAA;AAMb,wHAAA,uBAAuB,OAAA;AACvB,gHAAA,eAAe,OAAA;AACf,oHAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handling and Recovery System
|
|
3
|
+
*/
|
|
4
|
+
import { AgentXError, ErrorContext } from '../types/error';
|
|
5
|
+
import { Logger, MetricsCollector } from '../types/tool';
|
|
6
|
+
import { RetryPolicy } from '../types/config';
|
|
7
|
+
/**
|
|
8
|
+
* Central error handler for the AgentX framework
|
|
9
|
+
*/
|
|
10
|
+
export declare class ErrorHandler {
|
|
11
|
+
private readonly logger;
|
|
12
|
+
private readonly metrics;
|
|
13
|
+
private readonly retryPolicy;
|
|
14
|
+
constructor(logger: Logger, metrics: MetricsCollector, retryPolicy: RetryPolicy);
|
|
15
|
+
/**
|
|
16
|
+
* Handle an error with appropriate recovery strategy
|
|
17
|
+
*/
|
|
18
|
+
handleError(error: Error | AgentXError, context: ErrorContext, operation?: () => Promise<any>): Promise<{
|
|
19
|
+
success: boolean;
|
|
20
|
+
result?: any;
|
|
21
|
+
error?: Error;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Normalize any error to AgentXError
|
|
25
|
+
*/
|
|
26
|
+
private normalizeError;
|
|
27
|
+
/**
|
|
28
|
+
* Determine the appropriate recovery strategy for an error
|
|
29
|
+
*/
|
|
30
|
+
private getRecoveryStrategy;
|
|
31
|
+
/**
|
|
32
|
+
* Retry an operation with exponential backoff
|
|
33
|
+
*/
|
|
34
|
+
private retryOperation;
|
|
35
|
+
/**
|
|
36
|
+
* Handle graceful degradation
|
|
37
|
+
*/
|
|
38
|
+
private handleGracefulDegradation;
|
|
39
|
+
/**
|
|
40
|
+
* Calculate retry delay with exponential backoff
|
|
41
|
+
*/
|
|
42
|
+
private calculateDelay;
|
|
43
|
+
/**
|
|
44
|
+
* Log error with appropriate level and context
|
|
45
|
+
*/
|
|
46
|
+
private logError;
|
|
47
|
+
/**
|
|
48
|
+
* Update error metrics
|
|
49
|
+
*/
|
|
50
|
+
private updateErrorMetrics;
|
|
51
|
+
/**
|
|
52
|
+
* Sleep for specified milliseconds
|
|
53
|
+
*/
|
|
54
|
+
private sleep;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Circuit breaker for preventing cascading failures
|
|
58
|
+
*/
|
|
59
|
+
export declare class CircuitBreaker {
|
|
60
|
+
private readonly threshold;
|
|
61
|
+
private readonly timeout;
|
|
62
|
+
private readonly logger;
|
|
63
|
+
private readonly metrics;
|
|
64
|
+
private failures;
|
|
65
|
+
private lastFailureTime;
|
|
66
|
+
private state;
|
|
67
|
+
constructor(threshold: number | undefined, timeout: number | undefined, // 1 minute
|
|
68
|
+
logger: Logger, metrics: MetricsCollector);
|
|
69
|
+
execute<T>(operation: () => Promise<T>, operationName: string): Promise<T>;
|
|
70
|
+
private recordFailure;
|
|
71
|
+
private reset;
|
|
72
|
+
getState(): 'closed' | 'open' | 'half-open';
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=ErrorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorHandler.d.ts","sourceRoot":"","sources":["../../src/error/ErrorHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EAEX,YAAY,EAMb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW;IAM/E;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,KAAK,GAAG,WAAW,EAC1B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;IA8B7D;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;YACW,cAAc;IA2D5B;;OAEG;YACW,yBAAyB;IAqBvC;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA6BhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,KAAK,CAA6C;gBAGvC,SAAS,EAAE,MAAM,YAAI,EACrB,OAAO,EAAE,MAAM,YAAQ,EAAE,WAAW;IACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB;IAGtC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BhF,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,KAAK;IAKb,QAAQ,IAAI,QAAQ,GAAG,MAAM,GAAG,WAAW;CAG5C"}
|