@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 +45 -35
- package/dist/index.js +181 -96
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
# MCP Dev Logger v3.1
|
|
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
|
|
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. **
|
|
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/
|
|
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
|
-
### ⚛️
|
|
123
|
+
### ⚛️ Application Dev Server Tools
|
|
124
124
|
|
|
125
|
-
#### `
|
|
126
|
-
Start
|
|
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
|
|
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
|
|
132
|
-
- Streams logs to `resources/
|
|
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:**
|
|
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
|
|
141
|
-
|
|
140
|
+
// Let server pick the port
|
|
141
|
+
dev_start_appserver()
|
|
142
142
|
|
|
143
143
|
// Force port 3000 (kills anything on 3000 first)
|
|
144
|
-
|
|
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
|
|
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
|
|
158
|
-
"logFile": "/path/to/resources/
|
|
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
|
-
#### `
|
|
167
|
-
Stop the running
|
|
166
|
+
#### `dev_stop_appserver`
|
|
167
|
+
Stop the running application development server.
|
|
168
168
|
|
|
169
169
|
**Usage:**
|
|
170
170
|
```typescript
|
|
171
|
-
|
|
171
|
+
dev_stop_appserver()
|
|
172
172
|
```
|
|
173
173
|
|
|
174
174
|
**Returns:**
|
|
175
175
|
```json
|
|
176
176
|
{
|
|
177
177
|
"success": true,
|
|
178
|
-
"message": "
|
|
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
|
|
193
|
-
|
|
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
|
-
|
|
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
|
-
|
|
221
|
+
dev_start_appserver()
|
|
222
222
|
|
|
223
223
|
// Stop when done
|
|
224
|
-
|
|
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
|
|
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/
|
|
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
|
-
- **
|
|
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/
|
|
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 (
|
|
296
|
-
- Use port forcing: `
|
|
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
|
|
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
|
|
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
|
|
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
|
|
20
|
+
const StopAppserverArgsSchema = z.object({});
|
|
21
21
|
const HARDCODED_COMMAND = "npx ampx sandbox --stream-function-logs";
|
|
22
22
|
let sandboxProcess = null;
|
|
23
|
-
let
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
230
|
-
function
|
|
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
|
|
233
|
-
// Create resources/
|
|
234
|
-
if (!existsSync(
|
|
235
|
-
mkdirSync(
|
|
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(
|
|
292
|
+
return join(appserverDir, "appserver.log");
|
|
238
293
|
}
|
|
239
|
-
// Find existing
|
|
240
|
-
async function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
309
|
-
async function
|
|
310
|
-
// Check for existing
|
|
311
|
-
const existingPid = await
|
|
312
|
-
const logFile =
|
|
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
|
|
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
|
|
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 (
|
|
330
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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 (
|
|
380
|
-
|
|
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}]
|
|
400
|
-
|
|
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
|
|
405
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
432
|
-
function
|
|
433
|
-
if (!
|
|
486
|
+
// Stop appserver dev server
|
|
487
|
+
function stopAppserver() {
|
|
488
|
+
if (!appserverProcess?.process) {
|
|
434
489
|
return {
|
|
435
490
|
success: false,
|
|
436
|
-
message: "No
|
|
491
|
+
message: "No appserver process is running."
|
|
437
492
|
};
|
|
438
493
|
}
|
|
439
|
-
const logFile =
|
|
494
|
+
const logFile = getAppserverLogFilePath();
|
|
440
495
|
const timestamp = new Date().toISOString();
|
|
441
|
-
appendFileSync(logFile, `[${timestamp}] Stopping
|
|
496
|
+
appendFileSync(logFile, `[${timestamp}] Stopping appserver...\n`, "utf-8");
|
|
442
497
|
try {
|
|
443
|
-
|
|
444
|
-
|
|
498
|
+
appserverProcess.process.kill("SIGTERM");
|
|
499
|
+
appserverProcess = null;
|
|
445
500
|
return {
|
|
446
501
|
success: true,
|
|
447
|
-
message: "
|
|
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
|
|
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.
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
597
|
+
description: `Get the last N lines from the DEPLOYMENT log file (resources/sandbox/sandbox.log).
|
|
525
598
|
|
|
526
|
-
WHAT IT SHOWS:
|
|
527
|
-
-
|
|
528
|
-
-
|
|
529
|
-
-
|
|
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
|
-
-
|
|
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
|
|
536
|
-
- Seeing what
|
|
537
|
-
- Monitoring
|
|
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
|
-
-
|
|
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: "
|
|
559
|
-
description: `Start
|
|
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
|
|
563
|
-
- Kills existing
|
|
564
|
-
- Starts 'npm run dev' for
|
|
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/
|
|
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
|
|
571
|
-
- If NOT specified:
|
|
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:
|
|
575
|
-
- Force specific port for OAuth:
|
|
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
|
-
-
|
|
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/
|
|
587
|
-
- Won't interfere with other projects'
|
|
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: "
|
|
601
|
-
description: `Stop the running
|
|
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
|
|
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
|
|
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 "
|
|
643
|
-
const validatedArgs =
|
|
644
|
-
const result = await
|
|
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 "
|
|
650
|
-
const result =
|
|
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 (
|
|
680
|
-
|
|
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 (
|
|
689
|
-
|
|
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":";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,MAAM,IAAI,CAAC;AACxF,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,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;CAC1G,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAe5C,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AACpE,IAAI,cAAc,GAA0B,IAAI,CAAC;AACjD,IAAI,eAAe,GAA2B,IAAI,CAAC;AAEnD,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,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,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,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,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,sCAAsC,IAAI,eAAe,MAAM,IAAI,EAChF,OAAO,CACR,CAAC;QACF,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;QACvC,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,yFAAyF;AACzF,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAEvD,0DAA0D;IAC1D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,uDAAuD;AACvD,KAAK,UAAU,oBAAoB;IACjC,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,gCAAgC;QAC/C,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,sBAAsB;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sDAAsD;gBACtD,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,uCAAuC;IACtD,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,4BAA4B;AAC5B,KAAK,UAAU,aAAa,CAAC,aAAsB;IACjD,wDAAwD;IACxD,MAAM,WAAW,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEjD,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,IAAI,UAA8B,CAAC;IACnC,IAAI,SAA6B,CAAC;IAElC,IAAI,WAAW,EAAE,CAAC;QAChB,yCAAyC;QACzC,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,oCAAoC,WAAW,wBAAwB,EACpF,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,eAAe,EAAE,GAAG,KAAK,WAAW,EAAE,CAAC;YACzC,eAAe,GAAG,IAAI,CAAC;QACzB,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,0BAA0B,EAChF,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,wBAAwB,OAAO,IAAI,EAAE,OAAO,CAAC,CAAC;IAEnF,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,eAAe,GAAG;QAChB,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,mEAAmE;gBACnE,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,eAAe,EAAE,CAAC;wBACpB,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC;oBACtC,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,+BAA+B,IAAI,eAAe,MAAM,IAAI,EACzE,OAAO,CACR,CAAC;QACF,eAAe,GAAG,IAAI,CAAC;IACzB,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,uCAAuC,GAAG,CAAC,OAAO,IAAI,EACnE,OAAO,CACR,CAAC;QACF,eAAe,GAAG,IAAI,CAAC;IACzB,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,kCAAkC,SAAS,cAAc,UAAU,oBAAoB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IAC1M,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,GAAG,kCAAkC,SAAS,wBAAwB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IACtL,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,0BAA0B,UAAU,0BAA0B,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IACjL,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,qBAAqB,YAAY,CAAC,CAAC,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC,+BAA+B,WAAW,OAAO,EAAE,CAAC;IACxI,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,OAAO;QACP,IAAI,EAAE,YAAY;QAClB,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,2BAA2B;AAC3B,SAAS,YAAY;IACnB,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,iCAAiC;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,0BAA0B,EAAE,OAAO,CAAC,CAAC;IAE1E,IAAI,CAAC;QACH,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,eAAe,GAAG,IAAI,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gCAAgC;SAC1C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACxF,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA4BoB;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;;;;;;;;;;;;;;;;;;;;;6EAqB0D;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,oBAAoB;YAC1B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDA4BqC;YAClD,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,mBAAmB;YACzB,WAAW,EAAE;;;;;;;8HAO2G;YACxH,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,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACvD,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,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;gBAC9B,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,eAAe,EAAE,OAAO,EAAE,CAAC;QAC7B,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,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,eAAe,EAAE,OAAO,EAAE,CAAC;QAC7B,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chinchillaenterprises/mcp-dev-logger",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "Simplified MCP server for streaming Amplify Gen2 sandbox and
|
|
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": {
|