@chinchillaenterprises/mcp-dev-logger 3.2.0 → 3.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.
package/README.md CHANGED
@@ -1,19 +1,19 @@
1
- # MCP Dev Logger v3.1.3
1
+ # MCP Dev Logger v3.2.1
2
2
 
3
3
  **Streamlined Development Server Manager for Amplify Gen 2 Projects**
4
4
 
5
- A Model Context Protocol (MCP) server that manages Amplify Gen2 sandbox and Next.js development servers with intelligent logging and AI self-education features.
5
+ A Model Context Protocol (MCP) server that manages Amplify Gen2 sandbox and application development servers with intelligent logging and AI self-education features.
6
6
 
7
7
  ## What This Does
8
8
 
9
9
  **Two core capabilities:**
10
10
  1. **Amplify Sandbox Management** - Start/stop/monitor `npx ampx sandbox --stream-function-logs`
11
- 2. **Next.js Dev Server Management** - Start/stop Next.js with optional port forcing (critical for OAuth)
11
+ 2. **Application Dev Server Management** - Start/stop dev servers (Next.js, Vite, etc.) with optional port forcing (critical for OAuth)
12
12
 
13
13
  **Key Features:**
14
14
  - Multi-project safe (uses working directory detection)
15
15
  - Auto-kills stuck processes before starting fresh
16
- - Streams logs to organized directories (`resources/sandbox/`, `resources/frontend/`)
16
+ - Streams logs to organized directories (`resources/sandbox/`, `resources/appserver/`)
17
17
  - AI self-education system (commands AI to learn Amplify on startup)
18
18
 
19
19
  ## Installation
@@ -120,42 +120,42 @@ dev_tail_sandbox_logs({ "lines": 100 })
120
120
 
121
121
  ---
122
122
 
123
- ### ⚛️ Next.js Dev Server Tools
123
+ ### ⚛️ Application Dev Server Tools
124
124
 
125
- #### `dev_start_nextjs`
126
- Start Next.js development server with optional port specification.
125
+ #### `dev_start_appserver`
126
+ Start application development server with optional port specification.
127
127
 
128
128
  **What it does:**
129
- - Starts `npm run dev` for Next.js frontend
129
+ - Starts `npm run dev` for application development (Next.js, Vite, etc.)
130
130
  - **Optionally kills any process on specified port** (for OAuth callbacks requiring specific ports)
131
- - Detects actual port from Next.js output
132
- - Streams logs to `resources/frontend/frontend.log`
131
+ - Detects actual port from server output
132
+ - Streams logs to `resources/appserver/appserver.log`
133
133
 
134
134
  **Port Parameter (optional):**
135
- - **Not specified:** Next.js picks next available port (3000, 3001, 3002, etc.)
135
+ - **Not specified:** Server picks next available port (3000, 3001, 3002, etc.)
136
136
  - **Specified:** Kills anything on that port first, then starts on that exact port
137
137
 
138
138
  **Usage:**
139
139
  ```typescript
140
- // Let Next.js pick the port
141
- dev_start_nextjs()
140
+ // Let server pick the port
141
+ dev_start_appserver()
142
142
 
143
143
  // Force port 3000 (kills anything on 3000 first)
144
- dev_start_nextjs({ "port": 3000 })
144
+ dev_start_appserver({ "port": 3000 })
145
145
  ```
146
146
 
147
147
  **Why force a port?**
148
148
  OAuth providers (Google, Cognito, Facebook) require exact redirect URIs like:
149
149
  - `http://localhost:3000/api/auth/callback`
150
150
 
151
- If your Next.js starts on 3001, OAuth fails. Port forcing solves this.
151
+ If your dev server starts on 3001, OAuth fails. Port forcing solves this.
152
152
 
153
153
  **Returns:**
154
154
  ```json
155
155
  {
156
156
  "success": true,
157
- "message": "Started Next.js. Running on port 3000. Logs: /path/to/resources/frontend/frontend.log",
158
- "logFile": "/path/to/resources/frontend/frontend.log",
157
+ "message": "Started appserver. Running on port 3000. Logs: /path/to/resources/appserver/appserver.log",
158
+ "logFile": "/path/to/resources/appserver/appserver.log",
159
159
  "port": 3000,
160
160
  "killedPort": 3000
161
161
  }
@@ -163,19 +163,19 @@ If your Next.js starts on 3001, OAuth fails. Port forcing solves this.
163
163
 
164
164
  ---
165
165
 
166
- #### `dev_stop_nextjs`
167
- Stop the running Next.js development server.
166
+ #### `dev_stop_appserver`
167
+ Stop the running application development server.
168
168
 
169
169
  **Usage:**
170
170
  ```typescript
171
- dev_stop_nextjs()
171
+ dev_stop_appserver()
172
172
  ```
173
173
 
174
174
  **Returns:**
175
175
  ```json
176
176
  {
177
177
  "success": true,
178
- "message": "Next.js stopped successfully."
178
+ "message": "Appserver stopped successfully."
179
179
  }
180
180
  ```
181
181
 
@@ -189,8 +189,8 @@ dev_stop_nextjs()
189
189
  dev_start_sandbox()
190
190
  // AI automatically educates itself on Amplify Gen 2
191
191
 
192
- // 2. Start frontend (Next.js on port 3000 for OAuth)
193
- dev_start_nextjs({ "port": 3000 })
192
+ // 2. Start appserver (dev server on port 3000 for OAuth)
193
+ dev_start_appserver({ "port": 3000 })
194
194
 
195
195
  // 3. Work on code...
196
196
  // Both servers auto-reload on changes
@@ -200,7 +200,7 @@ dev_tail_sandbox_logs({ "lines": 100 })
200
200
 
201
201
  // 5. Stop when done
202
202
  dev_stop_sandbox()
203
- dev_stop_nextjs()
203
+ dev_stop_appserver()
204
204
  ```
205
205
 
206
206
  ### Backend-Only Development
@@ -218,23 +218,23 @@ dev_stop_sandbox()
218
218
  ### Frontend-Only Development
219
219
  ```typescript
220
220
  // Just working on UI, already have backend deployed
221
- dev_start_nextjs()
221
+ dev_start_appserver()
222
222
 
223
223
  // Stop when done
224
- dev_stop_nextjs()
224
+ dev_stop_appserver()
225
225
  ```
226
226
 
227
227
  ---
228
228
 
229
229
  ## Multi-Project Safety
230
230
 
231
- **Problem:** You have 3 VSCode windows open with different Amplify projects, each running a sandbox and Next.js server.
231
+ **Problem:** You have 3 VSCode windows open with different Amplify projects, each running a sandbox and dev server.
232
232
 
233
233
  **How this tool handles it:**
234
234
  - Uses `ps aux` + `lsof -a -d cwd -p <PID>` to match processes to working directories
235
235
  - Only kills/affects processes in the **current project directory**
236
236
  - Other projects' servers continue running undisturbed
237
- - Logs are organized per project: `<project>/resources/sandbox/`, `<project>/resources/frontend/`
237
+ - Logs are organized per project: `<project>/resources/sandbox/`, `<project>/resources/appserver/`
238
238
 
239
239
  ---
240
240
 
@@ -274,7 +274,7 @@ All logs are timestamped with ISO 8601 format:
274
274
 
275
275
  - **Node.js:** 18+
276
276
  - **AWS Amplify Gen2** project (for sandbox tools)
277
- - **Next.js** project (for Next.js tools)
277
+ - **Development server** project (Next.js, Vite, etc. - for appserver tools)
278
278
  - **AWS credentials** configured (for sandbox)
279
279
 
280
280
  The `resources/` folder is created automatically if it doesn't exist.
@@ -289,11 +289,11 @@ The `resources/` folder is created automatically if it doesn't exist.
289
289
  - Verify AWS credentials: `aws sts get-caller-identity`
290
290
 
291
291
  ### Logs not appearing
292
- - Check `resources/sandbox/` or `resources/frontend/` folders exist (auto-created)
292
+ - Check `resources/sandbox/` or `resources/appserver/` folders exist (auto-created)
293
293
  - Call `dev_tail_sandbox_logs()` to verify logs are being written
294
294
 
295
- ### Port already in use (Next.js)
296
- - Use port forcing: `dev_start_nextjs({ "port": 3000 })`
295
+ ### Port already in use (dev server)
296
+ - Use port forcing: `dev_start_appserver({ "port": 3000 })`
297
297
  - This kills anything on port 3000 first, then starts there
298
298
 
299
299
  ### Process won't stop
@@ -320,13 +320,23 @@ npm publish --access public
320
320
 
321
321
  ## Version History
322
322
 
323
- **v3.1.3** (Current)
323
+ **v3.2.1** (Current)
324
+ - Renamed `dev_start_nextjs` → `dev_start_appserver`
325
+ - Renamed `dev_stop_nextjs` → `dev_stop_appserver`
326
+ - Updated all references from "frontend" to "appserver"
327
+ - Changed log directory from `resources/frontend/` to `resources/appserver/`
328
+ - Prevents AI from using bash `npm run dev` instead of the tool
329
+
330
+ **v3.2.0**
331
+ - Added kill-existing-appserver logic (like sandbox has)
332
+ - Multi-project safety for appserver processes
333
+
334
+ **v3.1.3**
324
335
  - AI self-education via AI_INSTRUCTIONS in sandbox return
325
336
  - Commands AI to call amplify-docs MCP tools and read patterns guide
326
337
 
327
338
  **v3.1.0**
328
- - Added `dev_start_nextjs` with port forcing for OAuth
329
- - Added `dev_stop_nextjs`
339
+ - Added dev server management with port forcing for OAuth
330
340
 
331
341
  **v3.0.1**
332
342
  - Enhanced tool descriptions with educational context for AI
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
4
4
  import { ListToolsRequestSchema, CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
5
  import { z } from "zod";
6
6
  import { spawn, exec } from "child_process";
7
- import { writeFileSync, existsSync, appendFileSync, mkdirSync, readFileSync } from "fs";
7
+ import { writeFileSync, existsSync, appendFileSync, mkdirSync, readFileSync, createWriteStream } from "fs";
8
8
  import { join } from "path";
9
9
  import { promisify } from "util";
10
10
  const execAsync = promisify(exec);
@@ -14,13 +14,15 @@ const StopSandboxArgsSchema = z.object({});
14
14
  const TailSandboxLogsArgsSchema = z.object({
15
15
  lines: z.number().optional().describe("Number of lines to return (default: 50)")
16
16
  });
17
- const StartFrontendArgsSchema = z.object({
17
+ const StartAppserverArgsSchema = z.object({
18
18
  port: z.number().optional().describe("Specific port to run on (kills any process using that port first)")
19
19
  });
20
- const StopFrontendArgsSchema = z.object({});
20
+ const StopAppserverArgsSchema = z.object({});
21
21
  const HARDCODED_COMMAND = "npx ampx sandbox --stream-function-logs";
22
22
  let sandboxProcess = null;
23
- let frontendProcess = null;
23
+ let appserverProcess = null;
24
+ // Map to store function-specific WriteStreams
25
+ const functionStreams = new Map();
24
26
  // Get log file path - always in resources/sandbox/sandbox.log relative to cwd
25
27
  function getLogFilePath() {
26
28
  const cwd = process.cwd();
@@ -31,6 +33,33 @@ function getLogFilePath() {
31
33
  }
32
34
  return join(sandboxDir, "sandbox.log");
33
35
  }
36
+ // Get or create a WriteStream for a specific function
37
+ function getOrCreateFunctionStream(functionName) {
38
+ if (!functionStreams.has(functionName)) {
39
+ const cwd = process.cwd();
40
+ const functionsDir = join(cwd, "resources", "sandbox", "functions");
41
+ // Create resources/sandbox/functions directory if it doesn't exist
42
+ if (!existsSync(functionsDir)) {
43
+ mkdirSync(functionsDir, { recursive: true });
44
+ }
45
+ const logPath = join(functionsDir, `${functionName}.log`);
46
+ const stream = createWriteStream(logPath, { flags: 'a' });
47
+ functionStreams.set(functionName, stream);
48
+ }
49
+ return functionStreams.get(functionName);
50
+ }
51
+ // Close all function streams
52
+ function closeFunctionStreams() {
53
+ functionStreams.forEach((stream, functionName) => {
54
+ try {
55
+ stream.end();
56
+ }
57
+ catch (err) {
58
+ // Ignore errors when closing
59
+ }
60
+ });
61
+ functionStreams.clear();
62
+ }
34
63
  // Find existing sandbox process for current directory
35
64
  async function findExistingSandbox() {
36
65
  const currentDir = process.cwd();
@@ -116,23 +145,45 @@ async function startSandbox() {
116
145
  pid: proc.pid,
117
146
  startTime: new Date()
118
147
  };
119
- // Stream stdout to log file
148
+ // Stream stdout to log file with function-specific routing
120
149
  proc.stdout?.on("data", (data) => {
121
150
  const timestamp = new Date().toISOString();
122
151
  const lines = data.toString().split("\n");
123
152
  lines.forEach(line => {
124
153
  if (line.trim()) {
125
- appendFileSync(logFile, `[${timestamp}] ${line}\n`, "utf-8");
154
+ // Check if this is a Lambda function log (format: [function-name] ...)
155
+ const functionMatch = line.match(/^\[([^\]]+)\] /);
156
+ if (functionMatch) {
157
+ // Lambda function log - route to function-specific file
158
+ const functionName = functionMatch[1];
159
+ const functionStream = getOrCreateFunctionStream(functionName);
160
+ functionStream.write(`[${timestamp}] ${line}\n`);
161
+ }
162
+ else {
163
+ // Deployment/CloudFormation/system log - goes to main sandbox.log
164
+ appendFileSync(logFile, `[${timestamp}] ${line}\n`, "utf-8");
165
+ }
126
166
  }
127
167
  });
128
168
  });
129
- // Stream stderr to log file
169
+ // Stream stderr to log file with function-specific routing
130
170
  proc.stderr?.on("data", (data) => {
131
171
  const timestamp = new Date().toISOString();
132
172
  const lines = data.toString().split("\n");
133
173
  lines.forEach(line => {
134
174
  if (line.trim()) {
135
- appendFileSync(logFile, `[${timestamp}] [ERROR] ${line}\n`, "utf-8");
175
+ // Check if this is a Lambda function error log
176
+ const functionMatch = line.match(/^\[([^\]]+)\] /);
177
+ if (functionMatch) {
178
+ // Lambda function error - route to function-specific file
179
+ const functionName = functionMatch[1];
180
+ const functionStream = getOrCreateFunctionStream(functionName);
181
+ functionStream.write(`[${timestamp}] [ERROR] ${line}\n`);
182
+ }
183
+ else {
184
+ // Deployment/CloudFormation/system error - goes to main sandbox.log
185
+ appendFileSync(logFile, `[${timestamp}] [ERROR] ${line}\n`, "utf-8");
186
+ }
136
187
  }
137
188
  });
138
189
  });
@@ -140,6 +191,8 @@ async function startSandbox() {
140
191
  proc.on("exit", (code, signal) => {
141
192
  const timestamp = new Date().toISOString();
142
193
  appendFileSync(logFile, `[${timestamp}] Amplify sandbox exited with code ${code} and signal ${signal}\n`, "utf-8");
194
+ // Close all function-specific log streams
195
+ closeFunctionStreams();
143
196
  sandboxProcess = null;
144
197
  });
145
198
  proc.on("error", (err) => {
@@ -188,6 +241,8 @@ function stopSandbox() {
188
241
  appendFileSync(logFile, `[${timestamp}] Stopping Amplify sandbox...\n`, "utf-8");
189
242
  try {
190
243
  sandboxProcess.process.kill("SIGTERM");
244
+ // Close all function-specific log streams
245
+ closeFunctionStreams();
191
246
  sandboxProcess = null;
192
247
  return {
193
248
  success: true,
@@ -226,24 +281,24 @@ function tailSandboxLogs(lines = 50) {
226
281
  };
227
282
  }
228
283
  }
229
- // Get frontend log file path - always in resources/frontend/frontend.log relative to cwd
230
- function getFrontendLogFilePath() {
284
+ // Get appserver log file path - always in resources/appserver/appserver.log relative to cwd
285
+ function getAppserverLogFilePath() {
231
286
  const cwd = process.cwd();
232
- const frontendDir = join(cwd, "resources", "frontend");
233
- // Create resources/frontend directory if it doesn't exist
234
- if (!existsSync(frontendDir)) {
235
- mkdirSync(frontendDir, { recursive: true });
287
+ const appserverDir = join(cwd, "resources", "appserver");
288
+ // Create resources/appserver directory if it doesn't exist
289
+ if (!existsSync(appserverDir)) {
290
+ mkdirSync(appserverDir, { recursive: true });
236
291
  }
237
- return join(frontendDir, "frontend.log");
292
+ return join(appserverDir, "appserver.log");
238
293
  }
239
- // Find existing frontend process for current directory
240
- async function findExistingFrontend() {
294
+ // Find existing appserver process for current directory
295
+ async function findExistingAppserver() {
241
296
  const currentDir = process.cwd();
242
297
  try {
243
298
  // Get all npm run dev processes (covers Next.js, Vite, etc.)
244
299
  const { stdout } = await execAsync("ps aux | grep 'npm run dev' | grep -v grep");
245
300
  if (!stdout.trim()) {
246
- return null; // No frontend processes running
301
+ return null; // No appserver processes running
247
302
  }
248
303
  // Extract PIDs from ps output
249
304
  const lines = stdout.trim().split('\n');
@@ -263,7 +318,7 @@ async function findExistingFrontend() {
263
318
  const pathFields = fields.slice(8); // Starting from index 8 (field 9 in 1-indexed)
264
319
  const workingDir = pathFields.join(' ').trim();
265
320
  if (workingDir === currentDir) {
266
- return pid; // Found our frontend!
321
+ return pid; // Found our appserver!
267
322
  }
268
323
  }
269
324
  catch (err) {
@@ -271,7 +326,7 @@ async function findExistingFrontend() {
271
326
  continue;
272
327
  }
273
328
  }
274
- return null; // No frontend found for this directory
329
+ return null; // No appserver found for this directory
275
330
  }
276
331
  catch (err) {
277
332
  // No processes found or error occurred
@@ -305,20 +360,20 @@ async function killProcessOnPort(port) {
305
360
  return false;
306
361
  }
307
362
  }
308
- // Start frontend dev server
309
- async function startFrontend(requestedPort) {
310
- // Check for existing frontend process in this directory
311
- const existingPid = await findExistingFrontend();
312
- const logFile = getFrontendLogFilePath();
363
+ // Start appserver dev server
364
+ async function startAppserver(requestedPort) {
365
+ // Check for existing appserver process in this directory
366
+ const existingPid = await findExistingAppserver();
367
+ const logFile = getAppserverLogFilePath();
313
368
  let killedPort;
314
369
  let killedPid;
315
370
  if (existingPid) {
316
- // Found existing frontend, kill it first
371
+ // Found existing appserver, kill it first
317
372
  try {
318
373
  process.kill(existingPid, 'SIGTERM');
319
374
  killedPid = existingPid;
320
375
  const timestamp = new Date().toISOString();
321
- appendFileSync(logFile, `[${timestamp}] Killed existing frontend (PID: ${existingPid}), starting fresh...\n`, "utf-8");
376
+ appendFileSync(logFile, `[${timestamp}] Killed existing appserver (PID: ${existingPid}), starting fresh...\n`, "utf-8");
322
377
  // Wait a bit for cleanup
323
378
  await new Promise(resolve => setTimeout(resolve, 2000));
324
379
  }
@@ -326,8 +381,8 @@ async function startFrontend(requestedPort) {
326
381
  // Process might already be dead, continue anyway
327
382
  }
328
383
  // Clear our tracked process if it was the one we killed
329
- if (frontendProcess?.pid === existingPid) {
330
- frontendProcess = null;
384
+ if (appserverProcess?.pid === existingPid) {
385
+ appserverProcess = null;
331
386
  }
332
387
  }
333
388
  // If specific port requested, kill anything on that port first
@@ -336,7 +391,7 @@ async function startFrontend(requestedPort) {
336
391
  if (wasKilled) {
337
392
  killedPort = requestedPort;
338
393
  const timestamp = new Date().toISOString();
339
- appendFileSync(logFile, `[${timestamp}] Killed process on port ${requestedPort}, starting frontend...\n`, "utf-8");
394
+ appendFileSync(logFile, `[${timestamp}] Killed process on port ${requestedPort}, starting appserver...\n`, "utf-8");
340
395
  }
341
396
  }
342
397
  // Clear/overwrite the log file
@@ -344,7 +399,7 @@ async function startFrontend(requestedPort) {
344
399
  // Write initial log entry
345
400
  const timestamp = new Date().toISOString();
346
401
  const command = requestedPort ? `PORT=${requestedPort} npm run dev` : "npm run dev";
347
- appendFileSync(logFile, `[${timestamp}] Starting frontend: ${command}\n`, "utf-8");
402
+ appendFileSync(logFile, `[${timestamp}] Starting appserver: ${command}\n`, "utf-8");
348
403
  // Start the process
349
404
  const cwd = process.cwd();
350
405
  const env = requestedPort
@@ -358,7 +413,7 @@ async function startFrontend(requestedPort) {
358
413
  shell: false
359
414
  });
360
415
  let detectedPort = requestedPort;
361
- frontendProcess = {
416
+ appserverProcess = {
362
417
  process: proc,
363
418
  pid: proc.pid,
364
419
  startTime: new Date(),
@@ -372,12 +427,12 @@ async function startFrontend(requestedPort) {
372
427
  lines.forEach(line => {
373
428
  if (line.trim()) {
374
429
  appendFileSync(logFile, `[${timestamp}] ${line}\n`, "utf-8");
375
- // Detect port from frontend output: "Local: http://localhost:3001"
430
+ // Detect port from appserver output: "Local: http://localhost:3001"
376
431
  const portMatch = line.match(/Local:?\s+https?:\/\/localhost:(\d+)/i);
377
432
  if (portMatch && !detectedPort) {
378
433
  detectedPort = parseInt(portMatch[1]);
379
- if (frontendProcess) {
380
- frontendProcess.port = detectedPort;
434
+ if (appserverProcess) {
435
+ appserverProcess.port = detectedPort;
381
436
  }
382
437
  }
383
438
  }
@@ -396,28 +451,28 @@ async function startFrontend(requestedPort) {
396
451
  // Handle process exit
397
452
  proc.on("exit", (code, signal) => {
398
453
  const timestamp = new Date().toISOString();
399
- appendFileSync(logFile, `[${timestamp}] Frontend exited with code ${code} and signal ${signal}\n`, "utf-8");
400
- frontendProcess = null;
454
+ appendFileSync(logFile, `[${timestamp}] Appserver exited with code ${code} and signal ${signal}\n`, "utf-8");
455
+ appserverProcess = null;
401
456
  });
402
457
  proc.on("error", (err) => {
403
458
  const timestamp = new Date().toISOString();
404
- appendFileSync(logFile, `[${timestamp}] [ERROR] Failed to start frontend: ${err.message}\n`, "utf-8");
405
- frontendProcess = null;
459
+ appendFileSync(logFile, `[${timestamp}] [ERROR] Failed to start appserver: ${err.message}\n`, "utf-8");
460
+ appserverProcess = null;
406
461
  });
407
462
  // Wait a bit for the server to start and detect port
408
463
  await new Promise(resolve => setTimeout(resolve, 3000));
409
464
  let message = "";
410
465
  if (killedPid && killedPort) {
411
- message = `Killed existing frontend (PID: ${killedPid}) and port ${killedPort}, started fresh. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
466
+ message = `Killed existing appserver (PID: ${killedPid}) and port ${killedPort}, started fresh. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
412
467
  }
413
468
  else if (killedPid) {
414
- message = `Killed existing frontend (PID: ${killedPid}) and started fresh. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
469
+ message = `Killed existing appserver (PID: ${killedPid}) and started fresh. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
415
470
  }
416
471
  else if (killedPort) {
417
- message = `Killed process on port ${killedPort} and started frontend. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
472
+ message = `Killed process on port ${killedPort} and started appserver. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
418
473
  }
419
474
  else {
420
- message = `Started frontend. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
475
+ message = `Started appserver. ${detectedPort ? `Running on port ${detectedPort}` : 'Port detection in progress...'}. Logs: ${logFile}`;
421
476
  }
422
477
  return {
423
478
  success: true,
@@ -428,36 +483,36 @@ async function startFrontend(requestedPort) {
428
483
  killedPid
429
484
  };
430
485
  }
431
- // Stop frontend dev server
432
- function stopFrontend() {
433
- if (!frontendProcess?.process) {
486
+ // Stop appserver dev server
487
+ function stopAppserver() {
488
+ if (!appserverProcess?.process) {
434
489
  return {
435
490
  success: false,
436
- message: "No frontend process is running."
491
+ message: "No appserver process is running."
437
492
  };
438
493
  }
439
- const logFile = getFrontendLogFilePath();
494
+ const logFile = getAppserverLogFilePath();
440
495
  const timestamp = new Date().toISOString();
441
- appendFileSync(logFile, `[${timestamp}] Stopping frontend...\n`, "utf-8");
496
+ appendFileSync(logFile, `[${timestamp}] Stopping appserver...\n`, "utf-8");
442
497
  try {
443
- frontendProcess.process.kill("SIGTERM");
444
- frontendProcess = null;
498
+ appserverProcess.process.kill("SIGTERM");
499
+ appserverProcess = null;
445
500
  return {
446
501
  success: true,
447
- message: "Frontend stopped successfully."
502
+ message: "Appserver stopped successfully."
448
503
  };
449
504
  }
450
505
  catch (err) {
451
506
  return {
452
507
  success: false,
453
- message: `Failed to stop frontend: ${err instanceof Error ? err.message : String(err)}`
508
+ message: `Failed to stop appserver: ${err instanceof Error ? err.message : String(err)}`
454
509
  };
455
510
  }
456
511
  }
457
512
  // Initialize MCP server
458
513
  const server = new Server({
459
514
  name: "mcp-dev-logger",
460
- version: "3.2.0",
515
+ version: "3.3.0",
461
516
  }, {
462
517
  capabilities: {
463
518
  tools: {},
@@ -468,26 +523,43 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
468
523
  const tools = [
469
524
  {
470
525
  name: "dev_start_sandbox",
471
- description: `Start Amplify Gen2 sandbox with streaming function logs.
526
+ description: `Start Amplify Gen2 sandbox with streaming function logs and automatic log splitting.
472
527
 
473
528
  WHAT IT DOES:
474
529
  - Checks if a sandbox is already running in THIS project directory
475
530
  - Kills existing sandbox if found (prevents stuck sandboxes)
476
531
  - Starts fresh: npx ampx sandbox --stream-function-logs
477
- - Streams logs to resources/sandbox/sandbox.log
532
+ - Intelligently routes logs to separate files:
533
+ * Deployment/CloudFormation logs → resources/sandbox/sandbox.log
534
+ * Lambda function logs → resources/sandbox/functions/{function-name}.log
535
+
536
+ LOG SPLITTING BENEFITS:
537
+ - Each Lambda function gets its own dedicated log file
538
+ - Easier debugging - no need to grep through thousands of mixed logs
539
+ - Deployment logs stay clean and separate
540
+ - Function-specific logs are auto-created as functions are invoked
478
541
 
479
542
  WHAT HAPPENS NEXT:
480
543
  - CloudFormation stack deployment begins (takes 2-3 minutes first time, ~30 sec for updates)
481
544
  - AWS resources are created: DynamoDB tables, Lambda functions, AppSync API, Cognito auth
482
545
  - amplify_outputs.json is generated/updated in project root
483
546
  - File watcher starts - auto-deploys on any changes to amplify/ folder
547
+ - Function log files created on-demand as functions are invoked
484
548
 
485
549
  WHAT TO EXPECT:
486
550
  - Initial deployment: 2-3 minutes
487
551
  - Subsequent changes: 20-60 seconds to redeploy
488
- - Logs show real-time Lambda function execution when --stream-function-logs is used
552
+ - Real-time Lambda function logs split by function name
489
553
  - Sandbox stays running until stopped
490
554
 
555
+ FILE STRUCTURE CREATED:
556
+ resources/sandbox/
557
+ ├── sandbox.log (deployment/CloudFormation only)
558
+ └── functions/
559
+ ├── auth-pre-sign-up.log (only this function's logs)
560
+ ├── daily-summary-generator.log (only this function's logs)
561
+ └── [other-functions].log (auto-created as needed)
562
+
491
563
  MULTI-PROJECT SAFE:
492
564
  - Only affects sandbox for THIS directory
493
565
  - Safe to use with multiple projects open
@@ -495,7 +567,8 @@ MULTI-PROJECT SAFE:
495
567
 
496
568
  NEXT STEPS FOR USER:
497
569
  - Work on code - sandbox auto-deploys changes
498
- - Check logs with dev_tail_sandbox_logs if errors occur
570
+ - Check deployment logs: tail resources/sandbox/sandbox.log
571
+ - Check function-specific logs: tail resources/sandbox/functions/{function-name}.log
499
572
  - Stop with dev_stop_sandbox when done`,
500
573
  inputSchema: {
501
574
  type: "object",
@@ -521,26 +594,38 @@ NOTE: This does NOT delete the CloudFormation stack or AWS resources. To delete
521
594
  },
522
595
  {
523
596
  name: "dev_tail_sandbox_logs",
524
- description: `Get the last N lines from the sandbox log file (resources/sandbox/sandbox.log).
597
+ description: `Get the last N lines from the DEPLOYMENT log file (resources/sandbox/sandbox.log).
525
598
 
526
- WHAT IT SHOWS:
527
- - Recent sandbox deployment logs
528
- - Lambda function execution logs (when --stream-function-logs is active)
529
- - Errors from CloudFormation stack deployment
599
+ WHAT IT SHOWS (DEPLOYMENT LOGS ONLY):
600
+ - CloudFormation stack deployment progress and status
601
+ - Resource creation/update/deletion events
602
+ - CDK synthesis and stack updates
530
603
  - TypeScript compilation errors in amplify/ folder
531
- - Real-time function invocations
604
+ - General sandbox system messages
605
+ - Deployment errors and failures
606
+
607
+ WHAT IT DOES NOT SHOW:
608
+ - Lambda function execution logs (those are in resources/sandbox/functions/{function-name}.log)
609
+ - Individual function console.log statements
610
+ - Function-specific errors
611
+
612
+ FOR LAMBDA FUNCTION LOGS:
613
+ - Navigate to: resources/sandbox/functions/{function-name}.log
614
+ - Use: tail -f resources/sandbox/functions/{function-name}.log
615
+ - Or read the file directly to see all logs for that specific function
532
616
 
533
617
  USEFUL FOR:
534
618
  - Debugging deployment failures
535
- - Checking Lambda function errors
536
- - Seeing what changed in last deployment
537
- - Monitoring real-time function execution
619
+ - Checking if CloudFormation stack deployed successfully
620
+ - Seeing what resources were created/updated
621
+ - Monitoring deployment progress
622
+ - Checking for backend TypeScript compilation errors
538
623
 
539
624
  COMMON PATTERNS TO LOOK FOR:
540
- - [ERROR] markers indicate problems
541
- - Stack trace information for debugging
625
+ - [ERROR] markers indicate deployment problems
542
626
  - "Deployment failed" messages
543
- - TypeScript type errors in backend code
627
+ - "Stack update complete" or "Stack update failed"
628
+ - Resource creation/deletion status
544
629
 
545
630
  Default: Returns last 50 lines. Increase 'lines' parameter for more context.`,
546
631
  inputSchema: {
@@ -555,36 +640,36 @@ Default: Returns last 50 lines. Increase 'lines' parameter for more context.`,
555
640
  }
556
641
  },
557
642
  {
558
- name: "dev_start_frontend",
559
- description: `Start frontend development server (npm run dev) with optional port specification.
643
+ name: "dev_start_appserver",
644
+ description: `Start application development server (npm run dev) with optional port specification.
560
645
 
561
646
  WHAT IT DOES:
562
- - Checks if a frontend server is already running in THIS project directory
563
- - Kills existing frontend if found (prevents stuck processes)
564
- - Starts 'npm run dev' for frontend development (Next.js, Vite, etc.)
647
+ - Checks if an appserver is already running in THIS project directory
648
+ - Kills existing appserver if found (prevents stuck processes)
649
+ - Starts 'npm run dev' for application development (Next.js, Vite, etc.)
565
650
  - Optionally kills any process on specified port first (for OAuth callbacks requiring specific ports)
566
651
  - Detects actual port from server output (3000, 3001, 3002, etc.)
567
- - Streams logs to resources/frontend/frontend.log
652
+ - Streams logs to resources/appserver/appserver.log
568
653
 
569
654
  PORT PARAMETER (optional):
570
- - If specified: Kills anything on that port, then starts frontend on that specific port
571
- - If NOT specified: Frontend starts on next available port (usually 3000, or 3001 if 3000 is busy)
655
+ - If specified: Kills anything on that port, then starts appserver on that specific port
656
+ - If NOT specified: Appserver starts on next available port (usually 3000, or 3001 if 3000 is busy)
572
657
 
573
658
  COMMON USE CASES:
574
- - Start on any port: dev_start_frontend() → lets server pick the port
575
- - Force specific port for OAuth: dev_start_frontend({ port: 3000 }) → kills port 3000 first, then uses it
659
+ - Start on any port: dev_start_appserver() → lets server pick the port
660
+ - Force specific port for OAuth: dev_start_appserver({ port: 3000 }) → kills port 3000 first, then uses it
576
661
  - Google OAuth/Cognito often require exact redirect URIs like http://localhost:3000/api/auth/callback
577
662
 
578
663
  WHAT HAPPENS NEXT:
579
- - Frontend compiles and starts (takes 5-20 seconds)
664
+ - Appserver compiles and starts (takes 5-20 seconds)
580
665
  - Hot reload becomes active - changes auto-refresh browser
581
666
  - Port is detected and returned (check logs or return value)
582
667
  - Server stays running until stopped
583
668
 
584
669
  MULTI-PROJECT SAFE:
585
670
  - Uses working directory detection (like sandbox)
586
- - Logs go to THIS project's resources/frontend/ folder
587
- - Won't interfere with other projects' frontend servers`,
671
+ - Logs go to THIS project's resources/appserver/ folder
672
+ - Won't interfere with other projects' appservers`,
588
673
  inputSchema: {
589
674
  type: "object",
590
675
  properties: {
@@ -597,15 +682,15 @@ MULTI-PROJECT SAFE:
597
682
  }
598
683
  },
599
684
  {
600
- name: "dev_stop_frontend",
601
- description: `Stop the running frontend development server.
685
+ name: "dev_stop_appserver",
686
+ description: `Stop the running application development server.
602
687
 
603
688
  WHAT IT DOES:
604
- - Sends SIGTERM to the frontend process
689
+ - Sends SIGTERM to the appserver process
605
690
  - Stops log streaming
606
691
  - Process terminates gracefully
607
692
 
608
- NOTE: This only stops the process managed by this tool. If you manually started the frontend elsewhere, this won't affect it.`,
693
+ NOTE: This only stops the process managed by this tool. If you manually started the appserver elsewhere, this won't affect it.`,
609
694
  inputSchema: {
610
695
  type: "object",
611
696
  properties: {},
@@ -639,15 +724,15 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
639
724
  content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
640
725
  };
641
726
  }
642
- case "dev_start_frontend": {
643
- const validatedArgs = StartFrontendArgsSchema.parse(args);
644
- const result = await startFrontend(validatedArgs.port);
727
+ case "dev_start_appserver": {
728
+ const validatedArgs = StartAppserverArgsSchema.parse(args);
729
+ const result = await startAppserver(validatedArgs.port);
645
730
  return {
646
731
  content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
647
732
  };
648
733
  }
649
- case "dev_stop_frontend": {
650
- const result = stopFrontend();
734
+ case "dev_stop_appserver": {
735
+ const result = stopAppserver();
651
736
  return {
652
737
  content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
653
738
  };
@@ -676,8 +761,8 @@ process.on("SIGINT", () => {
676
761
  if (sandboxProcess?.process) {
677
762
  sandboxProcess.process.kill("SIGTERM");
678
763
  }
679
- if (frontendProcess?.process) {
680
- frontendProcess.process.kill("SIGTERM");
764
+ if (appserverProcess?.process) {
765
+ appserverProcess.process.kill("SIGTERM");
681
766
  }
682
767
  process.exit(0);
683
768
  });
@@ -685,8 +770,8 @@ process.on("SIGTERM", () => {
685
770
  if (sandboxProcess?.process) {
686
771
  sandboxProcess.process.kill("SIGTERM");
687
772
  }
688
- if (frontendProcess?.process) {
689
- frontendProcess.process.kill("SIGTERM");
773
+ if (appserverProcess?.process) {
774
+ appserverProcess.process.kill("SIGTERM");
690
775
  }
691
776
  process.exit(0);
692
777
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAgB,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAe,MAAM,IAAI,CAAC;AACxH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,UAAU;AACV,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5C,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3C,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACjF,CAAC,CAAC;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;CAC1G,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAe7C,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AACpE,IAAI,cAAc,GAA0B,IAAI,CAAC;AACjD,IAAI,gBAAgB,GAA4B,IAAI,CAAC;AAErD,8CAA8C;AAC9C,MAAM,eAAe,GAA6B,IAAI,GAAG,EAAE,CAAC;AAE5D,8EAA8E;AAC9E,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAErD,yDAAyD;IACzD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,sDAAsD;AACtD,SAAS,yBAAyB,CAAC,YAAoB;IACrD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAEpE,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,YAAY,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;AAC5C,CAAC;AAED,6BAA6B;AAC7B,SAAS,oBAAoB;IAC3B,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6BAA6B;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,sDAAsD;AACtD,KAAK,UAAU,mBAAmB;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,iCAAiC;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,6CAA6C,CAAC,CAAC;QAElF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACtC,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,CAAC;gBAEjG,mDAAmD;gBACnD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;gBACnF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE/C,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC9B,OAAO,GAAG,CAAC,CAAC,qBAAqB;gBACnC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sDAAsD;gBACtD,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,sCAAsC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uCAAuC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4CAA4C;AAC5C,KAAK,UAAU,YAAY;IACzB,uDAAuD;IACvD,MAAM,WAAW,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAEhD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,SAA6B,CAAC;IAElC,IAAI,WAAW,EAAE,CAAC;QAChB,wCAAwC;QACxC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACrC,SAAS,GAAG,WAAW,CAAC;YAExB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,mCAAmC,WAAW,wBAAwB,EACnF,OAAO,CACR,CAAC;YAEF,yBAAyB;YACzB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iDAAiD;QACnD,CAAC;QAED,wDAAwD;QACxD,IAAI,cAAc,EAAE,GAAG,KAAK,WAAW,EAAE,CAAC;YACxC,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,oBAAoB;IAEpB,+BAA+B;IAC/B,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,+BAA+B,iBAAiB,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpG,oBAAoB;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,wBAAwB,CAAC,EAAE;QACvE,GAAG;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,cAAc,GAAG;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;IAEF,2DAA2D;IAC3D,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,uEAAuE;gBACvE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAEnD,IAAI,aAAa,EAAE,CAAC;oBAClB,wDAAwD;oBACxD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM,cAAc,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;oBAC/D,cAAc,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,kEAAkE;oBAClE,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAC3D,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,+CAA+C;gBAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAEnD,IAAI,aAAa,EAAE,CAAC;oBAClB,0DAA0D;oBAC1D,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM,cAAc,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;oBAC/D,cAAc,CAAC,KAAK,CAAC,IAAI,SAAS,aAAa,IAAI,IAAI,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,aAAa,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,sCAAsC,IAAI,eAAe,MAAM,IAAI,EAChF,OAAO,CACR,CAAC;QAEF,0CAA0C;QAC1C,oBAAoB,EAAE,CAAC;QAEvB,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,8CAA8C,GAAG,CAAC,OAAO,IAAI,EAC1E,OAAO,CACR,CAAC;QACF,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,SAAS;QACvB,CAAC,CAAC,iCAAiC,SAAS,kDAAkD,OAAO,EAAE;QACvG,CAAC,CAAC,sDAAsD,OAAO,EAAE,CAAC;IAEpE,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;qGAgB4E,CAAC;IAEpG,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,OAAO;QACP,SAAS;QACT,eAAe,EAAE,cAAc;KAChC,CAAC;AACJ,CAAC;AAED,uBAAuB;AACvB,SAAS,WAAW;IAClB,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,wCAAwC;SAClD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,iCAAiC,EAAE,OAAO,CAAC,CAAC;IAEjF,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvC,0CAA0C;QAC1C,oBAAoB,EAAE,CAAC;QAEvB,cAAc,GAAG,IAAI,CAAC;QAEtB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,uCAAuC;SACjD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,mCAAmC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,SAAS,eAAe,CAAC,QAAgB,EAAE;IACzC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oEAAoE;SAC9E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,SAAS,uBAAuB;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEzD,2DAA2D;IAC3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC;AAED,wDAAwD;AACxD,KAAK,UAAU,qBAAqB;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,4CAA4C,CAAC,CAAC;QAEjF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,CAAC,iCAAiC;QAChD,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,CAAC;gBAEjG,mDAAmD;gBACnD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;gBACnF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE/C,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC9B,OAAO,GAAG,CAAC,CAAC,uBAAuB;gBACrC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sDAAsD;gBACtD,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,wCAAwC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uCAAuC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gCAAgC;AAChC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,4CAA4C;QAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,CAAC,gCAAgC;QAChD,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gCAAgC;YAClC,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6CAA6C;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6BAA6B;AAC7B,KAAK,UAAU,cAAc,CAAC,aAAsB;IAClD,yDAAyD;IACzD,MAAM,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAElD,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,IAAI,UAA8B,CAAC;IACnC,IAAI,SAA6B,CAAC;IAElC,IAAI,WAAW,EAAE,CAAC;QAChB,0CAA0C;QAC1C,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACrC,SAAS,GAAG,WAAW,CAAC;YAExB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,qCAAqC,WAAW,wBAAwB,EACrF,OAAO,CACR,CAAC;YAEF,yBAAyB;YACzB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iDAAiD;QACnD,CAAC;QAED,wDAAwD;QACxD,IAAI,gBAAgB,EAAE,GAAG,KAAK,WAAW,EAAE,CAAC;YAC1C,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,GAAG,aAAa,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,4BAA4B,aAAa,2BAA2B,EACjF,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IACpF,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,yBAAyB,OAAO,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpF,oBAAoB;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,aAAa;QACvB,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE;QACpD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAEhB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;QACxC,GAAG;QACH,GAAG;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,IAAI,YAAY,GAAuB,aAAa,CAAC;IAErD,gBAAgB,GAAG;QACjB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,IAAI,EAAE,aAAa;KACpB,CAAC;IAEF,4CAA4C;IAC5C,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE7D,oEAAoE;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACtE,IAAI,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC/B,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,gBAAgB,EAAE,CAAC;wBACrB,gBAAgB,CAAC,IAAI,GAAG,YAAY,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,aAAa,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,gCAAgC,IAAI,eAAe,MAAM,IAAI,EAC1E,OAAO,CACR,CAAC;QACF,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,cAAc,CACZ,OAAO,EACP,IAAI,SAAS,wCAAwC,GAAG,CAAC,OAAO,IAAI,EACpE,OAAO,CACR,CAAC;QACF,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,OAAO,GAAG,mCAAmC,SAAS,cAAc,UAAU,oBAAoB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IAC3M,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,GAAG,mCAAmC,SAAS,wBAAwB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IACvL,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,0BAA0B,UAAU,2BAA2B,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IAClL,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,sBAAsB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IACzI,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,OAAO;QACP,IAAI,EAAE,YAAY;QAClB,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,SAAS,aAAa;IACpB,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,kCAAkC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC;QACH,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,gBAAgB,GAAG,IAAI,CAAC;QAExB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,iCAAiC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,wBAAwB;AACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,MAAM,KAAK,GAAW;QACpB;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA8CoB;YACjC,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE;;;;;;;6IAO0H;YACvI,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiC0D;YACvE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,yCAAyC;qBACvD;iBACF;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDA4B+B;YAC5C,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,mEAAmE;qBACjF;iBACF;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE;;;;;;;+HAO4G;YACzH,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;SACF;KACF,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC;YACJ,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC;YACJ,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACpD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACxD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC;YACJ,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;gBAC/B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC;YACJ,CAAC;YAED;gBACE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;oBAC1D,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACzE;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;QAC5B,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC9B,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;QAC5B,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC9B,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chinchillaenterprises/mcp-dev-logger",
3
- "version": "3.2.0",
4
- "description": "Simplified MCP server for streaming Amplify Gen2 sandbox and frontend dev server logs",
3
+ "version": "3.3.0",
4
+ "description": "Simplified MCP server for streaming Amplify Gen2 sandbox and appserver dev server logs",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {