@ratio-mcp/dev-server 1.2.0 → 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/session-state.d.ts +36 -16
  18. package/dist/services/session-state.d.ts.map +1 -1
  19. package/dist/services/session-state.js +175 -140
  20. package/dist/services/session-state.js.map +1 -1
  21. package/dist/services/tool-guard.d.ts +29 -9
  22. package/dist/services/tool-guard.d.ts.map +1 -1
  23. package/dist/services/tool-guard.js +76 -50
  24. package/dist/services/tool-guard.js.map +1 -1
  25. package/dist/templates/frontend/.env.example +1 -1
  26. package/dist/templates/frontend/src/pages/Login.tsx +1 -1
  27. package/dist/tools/codegen.d.ts.map +1 -1
  28. package/dist/tools/codegen.js +206 -10
  29. package/dist/tools/codegen.js.map +1 -1
  30. package/dist/tools/get-status.d.ts +3 -0
  31. package/dist/tools/get-status.d.ts.map +1 -0
  32. package/dist/tools/get-status.js +127 -0
  33. package/dist/tools/get-status.js.map +1 -0
  34. package/dist/tools/index.d.ts.map +1 -1
  35. package/dist/tools/index.js +3 -1
  36. package/dist/tools/index.js.map +1 -1
  37. package/dist/tools/lifecycle.js +1 -1
  38. package/dist/tools/lifecycle.js.map +1 -1
  39. package/dist/tools/requirements.d.ts.map +1 -1
  40. package/dist/tools/requirements.js +41 -4
  41. package/dist/tools/requirements.js.map +1 -1
  42. package/dist/tools/scaffold.d.ts.map +1 -1
  43. package/dist/tools/scaffold.js +10 -5
  44. package/dist/tools/scaffold.js.map +1 -1
  45. package/dist/tools/webhooks.d.ts +25 -0
  46. package/dist/tools/webhooks.d.ts.map +1 -1
  47. package/dist/tools/webhooks.js +115 -89
  48. package/dist/tools/webhooks.js.map +1 -1
  49. package/dist/utils/logger.js +17 -17
  50. package/dist/utils/logger.js.map +1 -1
  51. package/package.json +16 -15
@@ -5,246 +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
50
  case 'developer_login': {
35
- // Login returns token and developer info
36
51
  const dev = data['developer'];
37
- logger.info(`[session-state] ${toolName}: data.developer exists=${!!dev}, data.developer keys=${dev ? JSON.stringify(Object.keys(dev)) : 'N/A'}`);
38
52
  if (dev?.['id'])
39
53
  session.context.developerId = String(dev['id']);
40
54
  if (data['token'])
41
55
  session.context.developerToken = String(data['token']);
42
- logger.info(`[session-state] ${toolName}: extracted developerId=${session.context.developerId}, hasToken=${!!session.context.developerToken}`);
56
+ logger.info(`[session-state] ${toolName}: developerId=${session.context.developerId}`);
43
57
  break;
44
58
  }
45
59
  case 'developer_signup': {
46
- // Signup returns email confirmation — capture email for OTP step
47
60
  const signupEmail = data['email'];
48
- if (signupEmail) {
61
+ if (signupEmail)
49
62
  session.context.signupEmail = signupEmail;
50
- logger.info(`[session-state] developer_signup: captured signupEmail=${signupEmail}`);
51
- }
52
63
  break;
53
64
  }
54
65
  case 'developer_verify_otp': {
55
- // OTP verified — account is now active
56
- logger.info(`[session-state] developer_verify_otp: account verified for ${session.context.signupEmail}`);
66
+ logger.info(`[session-state] developer_verify_otp: account verified`);
57
67
  break;
58
68
  }
59
69
  case 'create_app': {
60
70
  const app = data['application'];
61
- logger.info(`[session-state] create_app: data.application exists=${!!app}`);
62
- if (app) {
63
- logger.info(`[session-state] create_app: application keys=${JSON.stringify(Object.keys(app))}`);
64
- logger.info(`[session-state] create_app: application.id=${app['id']}, application.name=${app['name']}`);
65
- logger.info(`[session-state] create_app: application.client_id=${app['client_id']}, application.clientId=${app['clientId']}`);
66
- 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}`);
67
90
  }
68
- else {
69
- // Maybe the response is structured differently — log what we actually got
70
- logger.warn(`[session-state] create_app: NO 'application' key found! Checking alternate structures...`);
71
- logger.info(`[session-state] create_app: data.data=${JSON.stringify(data['data'])?.slice(0, 500)}`);
72
- logger.info(`[session-state] create_app: data.app=${JSON.stringify(data['app'])?.slice(0, 500)}`);
73
- 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
+ }
74
103
  }
75
- if (app?.['id'])
76
- session.context.appId = String(app['id']);
77
- if (app?.['name'])
78
- session.context.appName = String(app['name']);
79
- if (app?.['client_id'])
80
- session.context.clientId = String(app['client_id']);
81
- if (app?.['client_secret'])
82
- session.context.clientSecret = String(app['client_secret']);
83
- logger.info(`[session-state] create_app RESULT: appId=${session.context.appId}, appName=${session.context.appName}, clientId=${session.context.clientId}, hasClientSecret=${!!session.context.clientSecret}`);
84
104
  break;
85
105
  }
86
106
  case 'define_app_requirements': {
87
- // Only mark confirmed if the call was a confirmation (not preview)
88
107
  const confirmed = data['confirmed'] ?? data['status'];
89
108
  if (confirmed === true || confirmed === 'confirmed') {
90
109
  session.context.scopesConfirmed = true;
91
- // Capture the confirmed scope codes for webhook suggestion
92
- // The tool returns: { requirements: { scopes: [...] } } when confirmed
93
110
  const reqs = data['requirements'];
94
111
  const scopes = reqs?.['scopes'] ?? data['scopes'];
95
112
  if (Array.isArray(scopes)) {
96
113
  session.context.confirmedScopes = scopes.map(String);
97
- 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;
98
121
  }
99
122
  }
100
123
  break;
101
124
  }
102
125
  case 'create_webhooks': {
103
- if (data['success'])
126
+ if (data['success']) {
104
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);
105
171
  break;
106
172
  }
107
173
  case 'upload_build': {
108
174
  if (data['success'])
109
175
  session.context.buildUploaded = true;
110
- // Capture version ID from upload response
111
- // Backend returns: { success, message, data: { id, version, status, ... } }
112
- // MCP tool wraps it as: { success, response: <backend response> }
113
176
  const uploadResponse = data['response'];
114
177
  const responseData = uploadResponse?.['data'];
115
- logger.info(`[session-state] upload_build response keys: ${JSON.stringify(Object.keys(data))}`);
116
- logger.info(`[session-state] upload_build uploadResponse keys: ${uploadResponse ? JSON.stringify(Object.keys(uploadResponse)) : 'undefined'}`);
117
- logger.info(`[session-state] upload_build responseData keys: ${responseData ? JSON.stringify(Object.keys(responseData)) : 'undefined'}`);
118
178
  const versionId = responseData?.['id'] ??
119
179
  responseData?.['versionId'] ??
120
180
  uploadResponse?.id ??
121
- uploadResponse?.versionId ??
122
181
  data['version_id'] ??
123
182
  data['versionId'];
124
- if (versionId) {
183
+ if (versionId)
125
184
  session.context.latestVersionId = String(versionId);
126
- logger.info(`[session-state] Captured latestVersionId from upload_build: ${session.context.latestVersionId}`);
127
- }
128
- else {
129
- logger.warn(`[session-state] Could NOT capture versionId from upload_build. Full data: ${JSON.stringify(data).slice(0, 500)}`);
130
- }
185
+ recordAppTool(toolName);
131
186
  break;
132
187
  }
133
188
  case 'submit_for_review': {
134
189
  if (data['success'])
135
190
  session.context.submittedForReview = true;
191
+ recordAppTool(toolName);
136
192
  break;
137
193
  }
138
194
  case 'get_app_status': {
139
195
  const status = data['status'] ?? data['application']?.['status'];
140
196
  if (status === 'approved' || status === 'APPROVED') {
141
197
  session.context.appApproved = true;
198
+ const appId = getActiveAppId();
199
+ if (appId)
200
+ getOrCreateAppState(appId).context.appApproved = true;
142
201
  }
143
- // Capture latest version ID — the tool now returns it as a top-level field
144
202
  const latestVerId = data['latestVersionId'];
145
- logger.info(`[session-state] get_app_status latestVersionId from tool: ${latestVerId}`);
146
- if (latestVerId) {
203
+ if (latestVerId)
147
204
  session.context.latestVersionId = String(latestVerId);
148
- logger.info(`[session-state] Captured latestVersionId: ${session.context.latestVersionId}`);
149
- }
150
- else {
151
- // Fallback: dig into application response
152
- const appResponse = data['application'];
153
- const appData = appResponse?.data || appResponse;
154
- const vers = appData?.versions;
155
- if (vers?.[0]?.['id']) {
156
- session.context.latestVersionId = String(vers[0]['id']);
157
- logger.info(`[session-state] Captured latestVersionId from fallback: ${session.context.latestVersionId}`);
158
- }
159
- else {
160
- logger.warn(`[session-state] Could NOT capture latestVersionId from get_app_status. data keys: ${JSON.stringify(Object.keys(data))}`);
161
- }
162
- }
163
205
  break;
164
206
  }
165
207
  case 'publish_app': {
166
- if (data['success'])
208
+ if (data['success']) {
167
209
  session.context.appPublished = true;
210
+ const appId = getActiveAppId();
211
+ if (appId)
212
+ getOrCreateAppState(appId).context.appPublished = true;
213
+ }
214
+ recordAppTool(toolName);
168
215
  break;
169
216
  }
170
217
  case 'request_auth_code': {
171
- logger.info(`[session-state] request_auth_code: data keys=${JSON.stringify(Object.keys(data))}`);
172
- logger.info(`[session-state] request_auth_code: data.auth_code=${data['auth_code']}, data.code=${data['code']}`);
173
218
  const authCode = data['auth_code'] ?? data['code'];
174
- if (authCode) {
219
+ if (authCode)
175
220
  session.context.authCode = String(authCode);
176
- logger.info(`[session-state] request_auth_code: captured authCode=${String(authCode).substring(0, 12)}...`);
177
- }
178
- else {
179
- logger.warn(`[session-state] request_auth_code: NO auth code found in result!`);
180
- }
181
221
  const redirectUri = data['redirect_uri'];
182
- if (redirectUri) {
222
+ if (redirectUri)
183
223
  session.context.authCodeRedirectUri = String(redirectUri);
184
- }
185
- logger.info(`[session-state] request_auth_code: authCode=${session.context.authCode?.substring(0, 12)}..., redirectUri=${session.context.authCodeRedirectUri}`);
224
+ recordAppTool(toolName);
186
225
  break;
187
226
  }
188
227
  case 'get_access_token': {
189
- logger.info(`[session-state] get_access_token: data keys=${JSON.stringify(Object.keys(data))}`);
190
- logger.info(`[session-state] get_access_token: data.success=${data['success']}, data.access_token exists=${!!data['access_token']}`);
191
- logger.info(`[session-state] get_access_token: data.tokens=${JSON.stringify(data['tokens'])?.slice(0, 200)}`);
192
- logger.info(`[session-state] get_access_token: data.token_injected_to_project=${data['token_injected_to_project']}`);
193
228
  if (data['success'] || data['access_token']) {
194
229
  session.context.oauthCompleted = true;
195
- logger.info(`[session-state] get_access_token: oauthCompleted set to TRUE`);
196
- }
197
- else {
198
- logger.warn(`[session-state] get_access_token: oauthCompleted NOT set — neither success nor access_token found`);
230
+ const appId = getActiveAppId();
231
+ if (appId)
232
+ getOrCreateAppState(appId).context.oauthCompleted = true;
199
233
  }
234
+ recordAppTool(toolName);
200
235
  break;
201
236
  }
202
- case 'scaffold_frontend':
203
- case 'scaffold_backend': {
204
- logger.info(`[session-state] ${toolName}: data keys=${JSON.stringify(Object.keys(data))}`);
205
- logger.info(`[session-state] ${toolName}: data.project_path=${data['project_path']}, data.path=${data['path']}, data.backend_path=${data['backend_path']}`);
206
- logger.info(`[session-state] ${toolName}: data.token_injected=${data['token_injected']}`);
207
- const path = data['project_path'] ?? data['path'];
208
- if (path) {
209
- session.context.projectPath = String(path);
210
- logger.info(`[session-state] ${toolName}: projectPath set to ${session.context.projectPath}`);
211
- }
212
- else {
213
- logger.warn(`[session-state] ${toolName}: NO project_path found in result!`);
214
- }
215
- break;
216
- }
217
- case 'build_frontend': {
218
- const buildPath = data['build_path'] ?? data['output_path'];
219
- if (buildPath)
220
- session.context.buildPath = String(buildPath);
221
- break;
222
- }
223
- case 'create_submission_zip': {
224
- const zipPath = data['zip_path'] ?? data['path'];
225
- if (zipPath)
226
- session.context.zipPath = String(zipPath);
237
+ default: {
238
+ // For any other tool, just record at app level
239
+ recordAppTool(toolName);
227
240
  break;
228
241
  }
229
242
  }
230
- // 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) {
231
254
  logger.info(`[session-state] ── SNAPSHOT after ${toolName} ──`);
232
255
  logger.info(`[session-state] completedTools=[${[...session.completedTools].join(', ')}]`);
233
- logger.info(`[session-state] context.authMode=${session.context.authMode}`);
234
- logger.info(`[session-state] context.signupEmail=${session.context.signupEmail}`);
235
- logger.info(`[session-state] context.appId=${session.context.appId}`);
236
- logger.info(`[session-state] context.appName=${session.context.appName}`);
237
- logger.info(`[session-state] context.clientId=${session.context.clientId}`);
238
- logger.info(`[session-state] context.hasClientSecret=${!!session.context.clientSecret}`);
239
- logger.info(`[session-state] context.scopesConfirmed=${session.context.scopesConfirmed}`);
240
- logger.info(`[session-state] context.confirmedScopes=${JSON.stringify(session.context.confirmedScopes)}`);
241
- logger.info(`[session-state] context.webhooksConfigured=${session.context.webhooksConfigured}`);
242
- logger.info(`[session-state] context.appApproved=${session.context.appApproved}`);
243
- logger.info(`[session-state] context.appPublished=${session.context.appPublished}`);
244
- logger.info(`[session-state] context.oauthCompleted=${session.context.oauthCompleted}`);
245
- logger.info(`[session-state] context.authCode=${session.context.authCode?.substring(0, 12) ?? 'undefined'}...`);
246
- logger.info(`[session-state] context.projectPath=${session.context.projectPath}`);
247
- 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
+ }
248
266
  logger.info(`[session-state] ── END SNAPSHOT ──`);
249
267
  }
250
268
  /** Reset session (for testing or starting a new flow) */
@@ -252,12 +270,29 @@ export function resetSession() {
252
270
  logger.info('Session state reset');
253
271
  session = createFreshSession();
254
272
  }
255
- /** Check if a specific tool has been completed */
273
+ /** Check if a specific tool has been completed (global or active app) */
256
274
  export function hasCompleted(toolName) {
257
- 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;
258
282
  }
259
283
  /** Check if ANY of the given tools has been completed */
260
284
  export function hasCompletedAny(toolNames) {
261
- 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];
262
297
  }
263
298
  //# sourceMappingURL=session-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"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"}
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"}