@ratio-mcp/dev-server 1.1.2 → 1.3.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 (51) hide show
  1. package/dist/data/scope-webhook-map.d.ts +26 -0
  2. package/dist/data/scope-webhook-map.d.ts.map +1 -0
  3. package/dist/data/scope-webhook-map.js +117 -0
  4. package/dist/data/scope-webhook-map.js.map +1 -0
  5. package/dist/index.d.ts +5 -4
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +11 -13
  8. package/dist/index.js.map +1 -1
  9. package/dist/orchestrated-index.d.ts +4 -9
  10. package/dist/orchestrated-index.d.ts.map +1 -1
  11. package/dist/orchestrated-index.js +6 -14
  12. package/dist/orchestrated-index.js.map +1 -1
  13. package/dist/orchestrated-server.d.ts +14 -9
  14. package/dist/orchestrated-server.d.ts.map +1 -1
  15. package/dist/orchestrated-server.js +86 -48
  16. package/dist/orchestrated-server.js.map +1 -1
  17. package/dist/services/orchestrator.d.ts.map +1 -1
  18. package/dist/services/orchestrator.js +83 -7
  19. package/dist/services/orchestrator.js.map +1 -1
  20. package/dist/services/session-state.d.ts +36 -14
  21. package/dist/services/session-state.d.ts.map +1 -1
  22. package/dist/services/session-state.js +184 -134
  23. package/dist/services/session-state.js.map +1 -1
  24. package/dist/services/tool-guard.d.ts +29 -9
  25. package/dist/services/tool-guard.d.ts.map +1 -1
  26. package/dist/services/tool-guard.js +76 -50
  27. package/dist/services/tool-guard.js.map +1 -1
  28. package/dist/tools/agent-chat.d.ts.map +1 -1
  29. package/dist/tools/agent-chat.js +88 -2
  30. package/dist/tools/agent-chat.js.map +1 -1
  31. package/dist/tools/codegen.d.ts.map +1 -1
  32. package/dist/tools/codegen.js +206 -10
  33. package/dist/tools/codegen.js.map +1 -1
  34. package/dist/tools/get-status.d.ts +3 -0
  35. package/dist/tools/get-status.d.ts.map +1 -0
  36. package/dist/tools/get-status.js +127 -0
  37. package/dist/tools/get-status.js.map +1 -0
  38. package/dist/tools/index.d.ts.map +1 -1
  39. package/dist/tools/index.js +3 -1
  40. package/dist/tools/index.js.map +1 -1
  41. package/dist/tools/requirements.d.ts.map +1 -1
  42. package/dist/tools/requirements.js +41 -4
  43. package/dist/tools/requirements.js.map +1 -1
  44. package/dist/tools/scaffold.d.ts.map +1 -1
  45. package/dist/tools/scaffold.js +10 -5
  46. package/dist/tools/scaffold.js.map +1 -1
  47. package/dist/tools/webhooks.d.ts +25 -0
  48. package/dist/tools/webhooks.d.ts.map +1 -1
  49. package/dist/tools/webhooks.js +115 -89
  50. package/dist/tools/webhooks.js.map +1 -1
  51. package/package.json +16 -15
@@ -5,231 +5,264 @@ function createFreshSession() {
5
5
  return {
6
6
  completedTools: new Set(),
7
7
  context: {},
8
+ apps: {},
8
9
  lastActivity: Date.now(),
9
10
  };
10
11
  }
12
+ function getOrCreateAppState(appId) {
13
+ if (!session.apps[appId]) {
14
+ session.apps[appId] = {
15
+ completedTools: new Set(),
16
+ context: {},
17
+ };
18
+ logger.info(`[session-state] Created app state for: ${appId}`);
19
+ }
20
+ return session.apps[appId];
21
+ }
11
22
  // ── Public API ──────────────────────────────────────────────────────────
12
- /** Get current session state (read-only snapshot) */
23
+ /** Get current session state (read-only reference) */
13
24
  export function getSession() {
14
25
  return session;
15
26
  }
27
+ /** Get state for a specific app */
28
+ export function getAppState(appId) {
29
+ return session.apps[appId];
30
+ }
31
+ /** Get the currently active app ID */
32
+ export function getActiveAppId() {
33
+ return session.context.activeAppId || session.context.appId;
34
+ }
35
+ /** Set the active app ID */
36
+ export function setActiveAppId(appId) {
37
+ session.context.activeAppId = appId;
38
+ }
16
39
  /** Record that a tool completed successfully and extract relevant context */
17
40
  export function recordToolSuccess(toolName, result) {
18
41
  session.completedTools.add(toolName);
19
42
  session.lastActivity = Date.now();
20
- // Extract context from tool results
21
43
  const data = result;
22
- logger.info(`[session-state] recordToolSuccess called for: ${toolName}`);
23
- logger.info(`[session-state] result type: ${typeof result}, isNull: ${result === null}, isUndefined: ${result === undefined}`);
24
- if (data) {
25
- logger.info(`[session-state] result top-level keys: ${JSON.stringify(Object.keys(data))}`);
26
- // Log full result structure to file (not redacted) for debugging
27
- logger.debug(`[session-state] FULL result for ${toolName}: ${JSON.stringify(data, null, 2).slice(0, 5000)}`);
28
- }
44
+ logger.info(`[session-state] recordToolSuccess: ${toolName}`);
29
45
  if (!data) {
30
- logger.warn(`[session-state] result is null/undefined for ${toolName} — skipping context extraction`);
46
+ logger.warn(`[session-state] result is null/undefined for ${toolName}`);
31
47
  return;
32
48
  }
33
49
  switch (toolName) {
34
- case 'developer_login':
35
- case 'developer_signup': {
36
- // Login/signup returns token and developer info
50
+ case 'developer_login': {
37
51
  const dev = data['developer'];
38
- logger.info(`[session-state] ${toolName}: data.developer exists=${!!dev}, data.developer keys=${dev ? JSON.stringify(Object.keys(dev)) : 'N/A'}`);
39
52
  if (dev?.['id'])
40
53
  session.context.developerId = String(dev['id']);
41
54
  if (data['token'])
42
55
  session.context.developerToken = String(data['token']);
43
- logger.info(`[session-state] ${toolName}: extracted developerId=${session.context.developerId}, hasToken=${!!session.context.developerToken}`);
56
+ logger.info(`[session-state] ${toolName}: developerId=${session.context.developerId}`);
57
+ break;
58
+ }
59
+ case 'developer_signup': {
60
+ const signupEmail = data['email'];
61
+ if (signupEmail)
62
+ session.context.signupEmail = signupEmail;
63
+ break;
64
+ }
65
+ case 'developer_verify_otp': {
66
+ logger.info(`[session-state] developer_verify_otp: account verified`);
44
67
  break;
45
68
  }
46
69
  case 'create_app': {
47
70
  const app = data['application'];
48
- logger.info(`[session-state] create_app: data.application exists=${!!app}`);
49
- if (app) {
50
- logger.info(`[session-state] create_app: application keys=${JSON.stringify(Object.keys(app))}`);
51
- logger.info(`[session-state] create_app: application.id=${app['id']}, application.name=${app['name']}`);
52
- logger.info(`[session-state] create_app: application.client_id=${app['client_id']}, application.clientId=${app['clientId']}`);
53
- logger.info(`[session-state] create_app: application.client_secret exists=${!!app['client_secret']}, application.clientSecret exists=${!!app['clientSecret']}`);
71
+ if (app?.['id']) {
72
+ const appId = String(app['id']);
73
+ session.context.appId = appId;
74
+ session.context.activeAppId = appId;
75
+ const appState = getOrCreateAppState(appId);
76
+ appState.completedTools.add('create_app');
77
+ if (app['name']) {
78
+ session.context.appName = String(app['name']);
79
+ appState.context.appName = String(app['name']);
80
+ }
81
+ if (app['client_id']) {
82
+ session.context.clientId = String(app['client_id']);
83
+ appState.context.clientId = String(app['client_id']);
84
+ }
85
+ if (app['client_secret']) {
86
+ session.context.clientSecret = String(app['client_secret']);
87
+ appState.context.clientSecret = String(app['client_secret']);
88
+ }
89
+ logger.info(`[session-state] create_app: appId=${appId}, appName=${appState.context.appName}`);
54
90
  }
55
- else {
56
- // Maybe the response is structured differently — log what we actually got
57
- logger.warn(`[session-state] create_app: NO 'application' key found! Checking alternate structures...`);
58
- logger.info(`[session-state] create_app: data.data=${JSON.stringify(data['data'])?.slice(0, 500)}`);
59
- logger.info(`[session-state] create_app: data.app=${JSON.stringify(data['app'])?.slice(0, 500)}`);
60
- logger.info(`[session-state] create_app: data.id=${data['id']}, data.client_id=${data['client_id']}, data.clientId=${data['clientId']}`);
91
+ break;
92
+ }
93
+ case 'gather_requirements': {
94
+ const appId = getActiveAppId();
95
+ if (appId) {
96
+ const appState = getOrCreateAppState(appId);
97
+ appState.completedTools.add('gather_requirements');
98
+ // Store app description if provided
99
+ if (data['app_description']) {
100
+ session.context.appDescription = String(data['app_description']);
101
+ appState.context.appDescription = String(data['app_description']);
102
+ }
61
103
  }
62
- if (app?.['id'])
63
- session.context.appId = String(app['id']);
64
- if (app?.['name'])
65
- session.context.appName = String(app['name']);
66
- if (app?.['client_id'])
67
- session.context.clientId = String(app['client_id']);
68
- if (app?.['client_secret'])
69
- session.context.clientSecret = String(app['client_secret']);
70
- logger.info(`[session-state] create_app RESULT: appId=${session.context.appId}, appName=${session.context.appName}, clientId=${session.context.clientId}, hasClientSecret=${!!session.context.clientSecret}`);
71
104
  break;
72
105
  }
73
106
  case 'define_app_requirements': {
74
- // Only mark confirmed if the call was a confirmation (not preview)
75
107
  const confirmed = data['confirmed'] ?? data['status'];
76
108
  if (confirmed === true || confirmed === 'confirmed') {
77
109
  session.context.scopesConfirmed = true;
78
- // Capture the confirmed scope codes for webhook suggestion
79
- // The tool returns: { requirements: { scopes: [...] } } when confirmed
80
110
  const reqs = data['requirements'];
81
111
  const scopes = reqs?.['scopes'] ?? data['scopes'];
82
112
  if (Array.isArray(scopes)) {
83
113
  session.context.confirmedScopes = scopes.map(String);
84
- logger.info(`Confirmed scopes captured: [${session.context.confirmedScopes.join(', ')}]`);
114
+ }
115
+ const appId = getActiveAppId();
116
+ if (appId) {
117
+ const appState = getOrCreateAppState(appId);
118
+ appState.completedTools.add('define_app_requirements');
119
+ appState.context.scopesConfirmed = true;
120
+ appState.context.confirmedScopes = session.context.confirmedScopes;
85
121
  }
86
122
  }
87
123
  break;
88
124
  }
89
125
  case 'create_webhooks': {
90
- if (data['success'])
126
+ if (data['success']) {
91
127
  session.context.webhooksConfigured = true;
128
+ const appId = getActiveAppId();
129
+ if (appId) {
130
+ const appState = getOrCreateAppState(appId);
131
+ appState.completedTools.add('create_webhooks');
132
+ appState.context.webhooksConfigured = true;
133
+ if (data['webhook_id']) {
134
+ appState.context.webhookIds = appState.context.webhookIds || [];
135
+ appState.context.webhookIds.push(String(data['webhook_id']));
136
+ }
137
+ }
138
+ }
139
+ break;
140
+ }
141
+ case 'scaffold_frontend':
142
+ case 'scaffold_backend': {
143
+ const path = data['project_path'] ?? data['path'];
144
+ if (path) {
145
+ session.context.projectPath = String(path);
146
+ const appId = getActiveAppId();
147
+ if (appId) {
148
+ const appState = getOrCreateAppState(appId);
149
+ appState.completedTools.add(toolName);
150
+ appState.context.projectPath = String(path);
151
+ }
152
+ }
153
+ break;
154
+ }
155
+ case 'build_frontend': {
156
+ const buildPath = data['build_path'] ?? data['output_path'];
157
+ if (buildPath)
158
+ session.context.buildPath = String(buildPath);
159
+ recordAppTool(toolName);
160
+ break;
161
+ }
162
+ case 'validate_build': {
163
+ recordAppTool(toolName);
164
+ break;
165
+ }
166
+ case 'create_submission_zip': {
167
+ const zipPath = data['zip_path'] ?? data['path'];
168
+ if (zipPath)
169
+ session.context.zipPath = String(zipPath);
170
+ recordAppTool(toolName);
92
171
  break;
93
172
  }
94
173
  case 'upload_build': {
95
174
  if (data['success'])
96
175
  session.context.buildUploaded = true;
97
- // Capture version ID from upload response
98
- // Backend returns: { success, message, data: { id, version, status, ... } }
99
- // MCP tool wraps it as: { success, response: <backend response> }
100
176
  const uploadResponse = data['response'];
101
177
  const responseData = uploadResponse?.['data'];
102
- logger.info(`[session-state] upload_build response keys: ${JSON.stringify(Object.keys(data))}`);
103
- logger.info(`[session-state] upload_build uploadResponse keys: ${uploadResponse ? JSON.stringify(Object.keys(uploadResponse)) : 'undefined'}`);
104
- logger.info(`[session-state] upload_build responseData keys: ${responseData ? JSON.stringify(Object.keys(responseData)) : 'undefined'}`);
105
178
  const versionId = responseData?.['id'] ??
106
179
  responseData?.['versionId'] ??
107
180
  uploadResponse?.id ??
108
- uploadResponse?.versionId ??
109
181
  data['version_id'] ??
110
182
  data['versionId'];
111
- if (versionId) {
183
+ if (versionId)
112
184
  session.context.latestVersionId = String(versionId);
113
- logger.info(`[session-state] Captured latestVersionId from upload_build: ${session.context.latestVersionId}`);
114
- }
115
- else {
116
- logger.warn(`[session-state] Could NOT capture versionId from upload_build. Full data: ${JSON.stringify(data).slice(0, 500)}`);
117
- }
185
+ recordAppTool(toolName);
118
186
  break;
119
187
  }
120
188
  case 'submit_for_review': {
121
189
  if (data['success'])
122
190
  session.context.submittedForReview = true;
191
+ recordAppTool(toolName);
123
192
  break;
124
193
  }
125
194
  case 'get_app_status': {
126
195
  const status = data['status'] ?? data['application']?.['status'];
127
196
  if (status === 'approved' || status === 'APPROVED') {
128
197
  session.context.appApproved = true;
198
+ const appId = getActiveAppId();
199
+ if (appId)
200
+ getOrCreateAppState(appId).context.appApproved = true;
129
201
  }
130
- // Capture latest version ID — the tool now returns it as a top-level field
131
202
  const latestVerId = data['latestVersionId'];
132
- logger.info(`[session-state] get_app_status latestVersionId from tool: ${latestVerId}`);
133
- if (latestVerId) {
203
+ if (latestVerId)
134
204
  session.context.latestVersionId = String(latestVerId);
135
- logger.info(`[session-state] Captured latestVersionId: ${session.context.latestVersionId}`);
136
- }
137
- else {
138
- // Fallback: dig into application response
139
- const appResponse = data['application'];
140
- const appData = appResponse?.data || appResponse;
141
- const vers = appData?.versions;
142
- if (vers?.[0]?.['id']) {
143
- session.context.latestVersionId = String(vers[0]['id']);
144
- logger.info(`[session-state] Captured latestVersionId from fallback: ${session.context.latestVersionId}`);
145
- }
146
- else {
147
- logger.warn(`[session-state] Could NOT capture latestVersionId from get_app_status. data keys: ${JSON.stringify(Object.keys(data))}`);
148
- }
149
- }
150
205
  break;
151
206
  }
152
207
  case 'publish_app': {
153
- if (data['success'])
208
+ if (data['success']) {
154
209
  session.context.appPublished = true;
210
+ const appId = getActiveAppId();
211
+ if (appId)
212
+ getOrCreateAppState(appId).context.appPublished = true;
213
+ }
214
+ recordAppTool(toolName);
155
215
  break;
156
216
  }
157
217
  case 'request_auth_code': {
158
- logger.info(`[session-state] request_auth_code: data keys=${JSON.stringify(Object.keys(data))}`);
159
- logger.info(`[session-state] request_auth_code: data.auth_code=${data['auth_code']}, data.code=${data['code']}`);
160
218
  const authCode = data['auth_code'] ?? data['code'];
161
- if (authCode) {
219
+ if (authCode)
162
220
  session.context.authCode = String(authCode);
163
- logger.info(`[session-state] request_auth_code: captured authCode=${String(authCode).substring(0, 12)}...`);
164
- }
165
- else {
166
- logger.warn(`[session-state] request_auth_code: NO auth code found in result!`);
167
- }
168
221
  const redirectUri = data['redirect_uri'];
169
- if (redirectUri) {
222
+ if (redirectUri)
170
223
  session.context.authCodeRedirectUri = String(redirectUri);
171
- }
172
- logger.info(`[session-state] request_auth_code: authCode=${session.context.authCode?.substring(0, 12)}..., redirectUri=${session.context.authCodeRedirectUri}`);
224
+ recordAppTool(toolName);
173
225
  break;
174
226
  }
175
227
  case 'get_access_token': {
176
- logger.info(`[session-state] get_access_token: data keys=${JSON.stringify(Object.keys(data))}`);
177
- logger.info(`[session-state] get_access_token: data.success=${data['success']}, data.access_token exists=${!!data['access_token']}`);
178
- logger.info(`[session-state] get_access_token: data.tokens=${JSON.stringify(data['tokens'])?.slice(0, 200)}`);
179
- logger.info(`[session-state] get_access_token: data.token_injected_to_project=${data['token_injected_to_project']}`);
180
228
  if (data['success'] || data['access_token']) {
181
229
  session.context.oauthCompleted = true;
182
- logger.info(`[session-state] get_access_token: oauthCompleted set to TRUE`);
183
- }
184
- else {
185
- logger.warn(`[session-state] get_access_token: oauthCompleted NOT set — neither success nor access_token found`);
186
- }
187
- break;
188
- }
189
- case 'scaffold_frontend':
190
- case 'scaffold_backend': {
191
- logger.info(`[session-state] ${toolName}: data keys=${JSON.stringify(Object.keys(data))}`);
192
- logger.info(`[session-state] ${toolName}: data.project_path=${data['project_path']}, data.path=${data['path']}, data.backend_path=${data['backend_path']}`);
193
- logger.info(`[session-state] ${toolName}: data.token_injected=${data['token_injected']}`);
194
- const path = data['project_path'] ?? data['path'];
195
- if (path) {
196
- session.context.projectPath = String(path);
197
- logger.info(`[session-state] ${toolName}: projectPath set to ${session.context.projectPath}`);
198
- }
199
- else {
200
- logger.warn(`[session-state] ${toolName}: NO project_path found in result!`);
230
+ const appId = getActiveAppId();
231
+ if (appId)
232
+ getOrCreateAppState(appId).context.oauthCompleted = true;
201
233
  }
234
+ recordAppTool(toolName);
202
235
  break;
203
236
  }
204
- case 'build_frontend': {
205
- const buildPath = data['build_path'] ?? data['output_path'];
206
- if (buildPath)
207
- session.context.buildPath = String(buildPath);
208
- break;
209
- }
210
- case 'create_submission_zip': {
211
- const zipPath = data['zip_path'] ?? data['path'];
212
- if (zipPath)
213
- session.context.zipPath = String(zipPath);
237
+ default: {
238
+ // For any other tool, just record at app level
239
+ recordAppTool(toolName);
214
240
  break;
215
241
  }
216
242
  }
217
- // Always log a full session snapshot after every tool — this is the key debugging info
243
+ logSnapshot(toolName);
244
+ }
245
+ /** Helper: record a tool completion in the active app's state */
246
+ function recordAppTool(toolName) {
247
+ const appId = getActiveAppId();
248
+ if (appId) {
249
+ getOrCreateAppState(appId).completedTools.add(toolName);
250
+ }
251
+ }
252
+ /** Log session snapshot for debugging */
253
+ function logSnapshot(toolName) {
218
254
  logger.info(`[session-state] ── SNAPSHOT after ${toolName} ──`);
219
255
  logger.info(`[session-state] completedTools=[${[...session.completedTools].join(', ')}]`);
220
- logger.info(`[session-state] context.appId=${session.context.appId}`);
221
- logger.info(`[session-state] context.appName=${session.context.appName}`);
222
- logger.info(`[session-state] context.clientId=${session.context.clientId}`);
223
- logger.info(`[session-state] context.hasClientSecret=${!!session.context.clientSecret}`);
224
- logger.info(`[session-state] context.scopesConfirmed=${session.context.scopesConfirmed}`);
225
- logger.info(`[session-state] context.confirmedScopes=${JSON.stringify(session.context.confirmedScopes)}`);
226
- logger.info(`[session-state] context.webhooksConfigured=${session.context.webhooksConfigured}`);
227
- logger.info(`[session-state] context.appApproved=${session.context.appApproved}`);
228
- logger.info(`[session-state] context.appPublished=${session.context.appPublished}`);
229
- logger.info(`[session-state] context.oauthCompleted=${session.context.oauthCompleted}`);
230
- logger.info(`[session-state] context.authCode=${session.context.authCode?.substring(0, 12) ?? 'undefined'}...`);
231
- logger.info(`[session-state] context.projectPath=${session.context.projectPath}`);
232
- logger.info(`[session-state] context.latestVersionId=${session.context.latestVersionId}`);
256
+ logger.info(`[session-state] activeAppId=${session.context.activeAppId}`);
257
+ logger.info(`[session-state] appCount=${Object.keys(session.apps).length}`);
258
+ const appId = getActiveAppId();
259
+ if (appId && session.apps[appId]) {
260
+ const app = session.apps[appId];
261
+ logger.info(`[session-state] app[${appId}].completedTools=[${[...app.completedTools].join(', ')}]`);
262
+ logger.info(`[session-state] app[${appId}].scopesConfirmed=${app.context.scopesConfirmed}`);
263
+ logger.info(`[session-state] app[${appId}].webhooksConfigured=${app.context.webhooksConfigured}`);
264
+ logger.info(`[session-state] app[${appId}].oauthCompleted=${app.context.oauthCompleted}`);
265
+ }
233
266
  logger.info(`[session-state] ── END SNAPSHOT ──`);
234
267
  }
235
268
  /** Reset session (for testing or starting a new flow) */
@@ -237,12 +270,29 @@ export function resetSession() {
237
270
  logger.info('Session state reset');
238
271
  session = createFreshSession();
239
272
  }
240
- /** Check if a specific tool has been completed */
273
+ /** Check if a specific tool has been completed (global or active app) */
241
274
  export function hasCompleted(toolName) {
242
- return session.completedTools.has(toolName);
275
+ if (session.completedTools.has(toolName))
276
+ return true;
277
+ const appId = getActiveAppId();
278
+ if (appId && session.apps[appId]) {
279
+ return session.apps[appId].completedTools.has(toolName);
280
+ }
281
+ return false;
243
282
  }
244
283
  /** Check if ANY of the given tools has been completed */
245
284
  export function hasCompletedAny(toolNames) {
246
- return toolNames.some((t) => session.completedTools.has(t));
285
+ return toolNames.some((t) => hasCompleted(t));
286
+ }
287
+ /** Get all completed tools (global + active app) */
288
+ export function getAllCompletedTools() {
289
+ const all = new Set(session.completedTools);
290
+ const appId = getActiveAppId();
291
+ if (appId && session.apps[appId]) {
292
+ for (const tool of session.apps[appId].completedTools) {
293
+ all.add(tool);
294
+ }
295
+ }
296
+ return [...all];
247
297
  }
248
298
  //# sourceMappingURL=session-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA8C5C,2EAA2E;AAE3E,IAAI,OAAO,GAAiB,kBAAkB,EAAE,CAAC;AAEjD,SAAS,kBAAkB;IACzB,OAAO;QACL,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,2EAA2E;AAE3E,qDAAqD;AACrD,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,MAAe;IACjE,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAElC,oCAAoC;IACpC,MAAM,IAAI,GAAG,MAAwC,CAAC;IAEtD,MAAM,CAAC,IAAI,CAAC,iDAAiD,QAAQ,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,gCAAgC,OAAO,MAAM,aAAa,MAAM,KAAK,IAAI,kBAAkB,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC;IAC/H,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,iEAAiE;QACjE,MAAM,CAAC,KAAK,CAAC,mCAAmC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,gDAAgD,QAAQ,gCAAgC,CAAC,CAAC;QACtG,OAAO;IACT,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,iBAAiB,CAAC;QACvB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,gDAAgD;YAChD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAwC,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,2BAA2B,CAAC,CAAC,GAAG,yBAAyB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAClJ,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,2BAA2B,OAAO,CAAC,OAAO,CAAC,WAAW,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;YAC/I,MAAM;QACR,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAwC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5E,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChG,MAAM,CAAC,IAAI,CAAC,8CAA8C,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxG,MAAM,CAAC,IAAI,CAAC,qDAAqD,GAAG,CAAC,WAAW,CAAC,0BAA0B,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC9H,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAClK,CAAC;iBAAM,CAAC;gBACN,0EAA0E;gBAC1E,MAAM,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;gBACxG,MAAM,CAAC,IAAI,CAAC,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpG,MAAM,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClG,MAAM,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3I,CAAC;YACD,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5E,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC,4CAA4C,OAAO,CAAC,OAAO,CAAC,KAAK,aAAa,OAAO,CAAC,OAAO,CAAC,OAAO,cAAc,OAAO,CAAC,OAAO,CAAC,QAAQ,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9M,MAAM;QACR,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,mEAAmE;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBACpD,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;gBACvC,2DAA2D;gBAC3D,uEAAuE;gBACvE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAwC,CAAC;gBACzE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/D,MAAM;QACR,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1D,0CAA0C;YAC1C,4EAA4E;YAC5E,kEAAkE;YAClE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAwC,CAAC;YAC/E,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC,MAAM,CAAwC,CAAC;YACrF,MAAM,CAAC,IAAI,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAChG,MAAM,CAAC,IAAI,CAAC,qDAAqD,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/I,MAAM,CAAC,IAAI,CAAC,mDAAmD,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACzI,MAAM,SAAS,GACb,YAAY,EAAE,CAAC,IAAI,CAAC;gBACpB,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC1B,cAAsB,EAAE,EAAE;gBAC1B,cAAsB,EAAE,SAAS;gBAClC,IAAI,CAAC,YAAY,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,CAAC;YACpB,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,+DAA+D,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;YAChH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,6EAA6E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjI,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/D,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAK,IAAI,CAAC,aAAa,CAA6B,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC9F,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnD,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YACrC,CAAC;YACD,2EAA2E;YAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAuB,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,6DAA6D,WAAW,EAAE,CAAC,CAAC;YACxF,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,6CAA6C,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAwC,CAAC;gBAC/E,MAAM,OAAO,GAAI,WAAmB,EAAE,IAAI,IAAI,WAAW,CAAC;gBAC1D,MAAM,IAAI,GAAG,OAAO,EAAE,QAAsD,CAAC;gBAC7E,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC,2DAA2D,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC5G,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,qFAAqF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxI,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YACzD,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YACjG,MAAM,CAAC,IAAI,CAAC,qDAAqD,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,wDAAwD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9G,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YACzC,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,+CAA+C,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;YAChK,MAAM;QACR,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAChG,MAAM,CAAC,IAAI,CAAC,kDAAkD,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACrI,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9G,MAAM,CAAC,IAAI,CAAC,oEAAoE,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;YACrH,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;YACnH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC;QACzB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,uBAAuB,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,uBAAuB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5J,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,yBAAyB,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,wBAAwB,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChG,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,oCAAoC,CAAC,CAAC;YAC/E,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,SAAS;gBAAE,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,OAAO;gBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM;QACR,CAAC;IACH,CAAC;IAED,uFAAuF;IACvF,MAAM,CAAC,IAAI,CAAC,qCAAqC,QAAQ,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,CAAC,mCAAmC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,sCAAsC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,MAAM,CAAC,IAAI,CAAC,6CAA6C,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC5G,MAAM,CAAC,IAAI,CAAC,gDAAgD,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClG,MAAM,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,0CAA0C,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACtF,MAAM,CAAC,IAAI,CAAC,4CAA4C,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1F,MAAM,CAAC,IAAI,CAAC,sCAAsC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC;IAClH,MAAM,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,6CAA6C,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;AACpD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,GAAG,kBAAkB,EAAE,CAAC;AACjC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,SAAmB;IACjD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgE5C,2EAA2E;AAE3E,IAAI,OAAO,GAAiB,kBAAkB,EAAE,CAAC;AAEjD,SAAS,kBAAkB;IACzB,OAAO;QACL,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;YACpB,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,2EAA2E;AAE3E,sDAAsD;AACtD,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AACtC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,MAAe;IACjE,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,IAAI,GAAG,MAAwC,CAAC;IAEtD,MAAM,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAwC,CAAC;YACrE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,iBAAiB,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACvF,MAAM;QACR,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAuB,CAAC;YACxD,IAAI,WAAW;gBAAE,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;YAC3D,MAAM;QACR,CAAC;QAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACtE,MAAM;QACR,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAwC,CAAC;YACvE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;gBAEpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC5C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1C,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChB,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC9C,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjD,CAAC;gBACD,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;oBACpD,QAAQ,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,qCAAqC,KAAK,aAAa,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC5C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnD,oCAAoC;gBACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBACjE,QAAQ,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBACpD,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAwC,CAAC;gBACzE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;gBAED,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAC5C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBACvD,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;oBACxC,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBACrE,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC1C,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAC5C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBAC/C,QAAQ,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;wBACvB,QAAQ,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;wBAChE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC;QACzB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAC5C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtC,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,SAAS;gBAAE,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7D,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,OAAO;gBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAwC,CAAC;YAC/E,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC,MAAM,CAAwC,CAAC;YACrF,MAAM,SAAS,GACb,YAAY,EAAE,CAAC,IAAI,CAAC;gBACpB,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC1B,cAAsB,EAAE,EAAE;gBAC3B,IAAI,CAAC,YAAY,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,CAAC;YACpB,IAAI,SAAS;gBAAE,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACnE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/D,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAK,IAAI,CAAC,aAAa,CAA6B,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC9F,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnD,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;gBACnC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,IAAI,KAAK;oBAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YACnE,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAuB,CAAC;YAClE,IAAI,WAAW;gBAAE,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;gBACpC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,IAAI,KAAK;oBAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YACpE,CAAC;YACD,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,QAAQ;gBAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YACzC,IAAI,WAAW;gBAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3E,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;gBACtC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,IAAI,KAAK;oBAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YACtE,CAAC;YACD,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,+CAA+C;YAC/C,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;IACH,CAAC;IAED,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED,iEAAiE;AACjE,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,mBAAmB,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,CAAC,IAAI,CAAC,qCAAqC,QAAQ,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,CAAC,iCAAiC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,qBAAqB,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtG,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,qBAAqB,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,wBAAwB,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACpG,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,oBAAoB,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;AACpD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,GAAG,kBAAkB,EAAE,CAAC;AACjC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,SAAmB;IACjD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;YACtD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAClB,CAAC"}
@@ -1,20 +1,40 @@
1
1
  /**
2
2
  * Tool Guard — prerequisite validation for MCP tools.
3
3
  *
4
- * Enforced flow:
5
- * 1. developer_login (authentication)
6
- * 2. get_categories create_app (name, description, categories, callback URL)
7
- * 3. define_app_requirements (scope selection — needs app to exist)
8
- * 4. webhooks (auto-suggested from scopes — needs scopes confirmed)
9
- * 5. scaffold_frontend build_frontendcreate_submission_zipupload_build → submit_for_review
10
- * 6. get_app_status (wait for admin approval)
11
- * 7. publish_apprequest_auth_codeget_access_token
12
- * 8. scaffold_backendgenerate_api_routes
4
+ * Tool-first architecture: each tool is exposed individually. The guard
5
+ * checks prerequisites before allowing execution and returns structured
6
+ * errors with hints so the LLM can self-correct.
7
+ *
8
+ * Enforced dependency graph:
9
+ * logincreate_appgather_requirementsdefine_app_requirements
10
+ * webhooks (optional, scope-based recommendations)
11
+ * scaffold_frontendbuildvalidate → zip → upload → submit
12
+ * review_waitpublish
13
+ * → OAuth (auth_code → access_token)
14
+ * → scaffold_backend → generate_api_routes (+ webhook handlers)
15
+ *
16
+ * Read-only tools (no prerequisites): get_categories, get_status, get_webhook_topics (browsing)
13
17
  */
14
18
  export interface GuardResult {
15
19
  allowed: boolean;
16
20
  message?: string;
17
21
  requiredTools?: string[];
22
+ /** Full chain of tools needed to unblock, in order */
23
+ chain?: string[];
24
+ hint?: string;
18
25
  }
26
+ /**
27
+ * Check whether a tool's prerequisites are met.
28
+ * Returns structured result with error details if blocked.
29
+ */
19
30
  export declare function checkToolPrerequisites(toolName: string): GuardResult;
31
+ /**
32
+ * Get the full prerequisite chain for a tool (for status display).
33
+ * Returns tool names that must be completed before this tool can run.
34
+ */
35
+ export declare function getToolPrerequisiteNames(toolName: string): string[];
36
+ /**
37
+ * Get all tool names that have prerequisites defined.
38
+ */
39
+ export declare function getGuardedToolNames(): string[];
20
40
  //# sourceMappingURL=tool-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-guard.d.ts","sourceRoot":"","sources":["../../src/services/tool-guard.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAoPD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAWpE"}
1
+ {"version":3,"file":"tool-guard.d.ts","sourceRoot":"","sources":["../../src/services/tool-guard.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAmQD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAWpE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAKnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}