@goonnguyen/human-mcp 1.0.2 → 1.2.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/.dockerignore +81 -0
- package/CHANGELOG.md +14 -0
- package/CLAUDE.md +1 -1
- package/DEPLOYMENT.md +329 -0
- package/Dockerfile +36 -12
- package/README.md +388 -14
- package/bun.lock +49 -4
- package/dist/index.js +27887 -1473
- package/docker-compose.yaml +128 -0
- package/package.json +11 -4
- package/plans/001-streamable-http-transport-plan.md +905 -0
- package/src/index.ts +44 -2
- package/src/transports/http/middleware.ts +46 -0
- package/src/transports/http/routes.ts +136 -0
- package/src/transports/http/server.ts +66 -0
- package/src/transports/http/session.ts +85 -0
- package/src/transports/index.ts +31 -0
- package/src/transports/stdio.ts +7 -0
- package/src/transports/types.ts +37 -0
- package/src/utils/config.ts +46 -0
package/README.md
CHANGED
|
@@ -29,11 +29,41 @@ Human MCP is a Model Context Protocol server that provides AI coding agents with
|
|
|
29
29
|
|
|
30
30
|
### Prerequisites
|
|
31
31
|
|
|
32
|
-
- [Bun](https://bun.sh) v1.2+
|
|
32
|
+
- Node.js v18+ or [Bun](https://bun.sh) v1.2+
|
|
33
33
|
- Google Gemini API key
|
|
34
34
|
|
|
35
35
|
### Installation
|
|
36
36
|
|
|
37
|
+
Install Human MCP as an npm package:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Using npm
|
|
41
|
+
npm install -g @goonnguyen/human-mcp
|
|
42
|
+
|
|
43
|
+
# Using bun (recommended)
|
|
44
|
+
bun install -g @goonnguyen/human-mcp
|
|
45
|
+
|
|
46
|
+
# Using pnpm
|
|
47
|
+
pnpm install -g @goonnguyen/human-mcp
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Environment Setup
|
|
51
|
+
|
|
52
|
+
Configure your Google Gemini API key:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Option 1: Environment variable (recommended)
|
|
56
|
+
export GOOGLE_GEMINI_API_KEY="your_api_key_here"
|
|
57
|
+
|
|
58
|
+
# Option 2: Add to your shell profile
|
|
59
|
+
echo 'export GOOGLE_GEMINI_API_KEY="your_api_key_here"' >> ~/.zshrc
|
|
60
|
+
source ~/.zshrc
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Development (For Contributors)
|
|
64
|
+
|
|
65
|
+
If you want to contribute to Human MCP development:
|
|
66
|
+
|
|
37
67
|
```bash
|
|
38
68
|
# Clone the repository
|
|
39
69
|
git clone https://github.com/human-mcp/human-mcp.git
|
|
@@ -47,11 +77,7 @@ cp .env.example .env
|
|
|
47
77
|
|
|
48
78
|
# Add your Gemini API key to .env
|
|
49
79
|
GOOGLE_GEMINI_API_KEY=your_api_key_here
|
|
50
|
-
```
|
|
51
80
|
|
|
52
|
-
### Development
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
81
|
# Start development server
|
|
56
82
|
bun run dev
|
|
57
83
|
|
|
@@ -67,34 +93,382 @@ bun run typecheck
|
|
|
67
93
|
|
|
68
94
|
### Usage with MCP Clients
|
|
69
95
|
|
|
96
|
+
Human MCP can be configured with various MCP clients for different development workflows. Follow the setup instructions for your preferred client below.
|
|
97
|
+
|
|
70
98
|
#### Claude Desktop
|
|
71
99
|
|
|
72
|
-
|
|
100
|
+
Claude Desktop is a desktop application that provides a user-friendly interface for interacting with MCP servers.
|
|
101
|
+
|
|
102
|
+
**Configuration Location:**
|
|
103
|
+
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
104
|
+
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
105
|
+
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
|
|
106
|
+
|
|
107
|
+
**Configuration Example:**
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"mcpServers": {
|
|
112
|
+
"human-mcp": {
|
|
113
|
+
"command": "npx",
|
|
114
|
+
"args": ["@goonnguyen/human-mcp"],
|
|
115
|
+
"env": {
|
|
116
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Alternative Configuration (if globally installed):**
|
|
73
124
|
|
|
74
125
|
```json
|
|
75
126
|
{
|
|
76
127
|
"mcpServers": {
|
|
77
128
|
"human-mcp": {
|
|
78
|
-
"command": "
|
|
79
|
-
"args": ["run", "/path/to/human-mcp/src/index.ts"],
|
|
129
|
+
"command": "human-mcp",
|
|
80
130
|
"env": {
|
|
81
|
-
"GOOGLE_GEMINI_API_KEY": "
|
|
131
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
82
132
|
}
|
|
83
133
|
}
|
|
84
134
|
}
|
|
85
135
|
}
|
|
86
136
|
```
|
|
87
137
|
|
|
88
|
-
|
|
138
|
+
**Setup Steps:**
|
|
139
|
+
1. Install Human MCP globally: `npm install -g @goonnguyen/human-mcp`
|
|
140
|
+
2. Create or edit the Claude Desktop configuration file
|
|
141
|
+
3. Add the Human MCP server configuration (use the first example with `npx` for reliability)
|
|
142
|
+
4. Set your Google Gemini API key in environment variables or the config
|
|
143
|
+
5. Restart Claude Desktop
|
|
144
|
+
|
|
145
|
+
**Verification:**
|
|
146
|
+
- Look for the connection indicator in Claude Desktop
|
|
147
|
+
- Try using the `eyes.analyze` tool with a test image
|
|
148
|
+
|
|
149
|
+
#### Claude Code (CLI)
|
|
150
|
+
|
|
151
|
+
Claude Code is the official CLI for Claude that supports MCP servers for enhanced coding workflows.
|
|
89
152
|
|
|
153
|
+
**Configuration Location:**
|
|
154
|
+
- **All platforms**: `~/.config/claude/config.json`
|
|
155
|
+
|
|
156
|
+
**Configuration Example:**
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"mcpServers": {
|
|
161
|
+
"human-mcp": {
|
|
162
|
+
"command": "npx",
|
|
163
|
+
"args": ["@goonnguyen/human-mcp"],
|
|
164
|
+
"env": {
|
|
165
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here",
|
|
166
|
+
"LOG_LEVEL": "info"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Alternative Configuration (if globally installed):**
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"mcpServers": {
|
|
178
|
+
"human-mcp": {
|
|
179
|
+
"command": "human-mcp",
|
|
180
|
+
"env": {
|
|
181
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here",
|
|
182
|
+
"LOG_LEVEL": "info"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Setup Steps:**
|
|
190
|
+
1. Install Claude Code CLI: `npm install -g @anthropic-ai/claude`
|
|
191
|
+
2. Install Human MCP: `npm install -g @goonnguyen/human-mcp`
|
|
192
|
+
3. Initialize configuration: `claude configure`
|
|
193
|
+
4. Edit the config file to add Human MCP server
|
|
194
|
+
5. Test connection: `claude --list-mcp-servers`
|
|
195
|
+
|
|
196
|
+
**Usage:**
|
|
90
197
|
```bash
|
|
91
|
-
#
|
|
92
|
-
|
|
198
|
+
# Start Claude Code with MCP servers
|
|
199
|
+
claude --enable-mcp
|
|
93
200
|
|
|
94
|
-
#
|
|
95
|
-
|
|
201
|
+
# Analyze a screenshot in your current project
|
|
202
|
+
claude "Analyze this screenshot for UI issues" --attach screenshot.png
|
|
96
203
|
```
|
|
97
204
|
|
|
205
|
+
#### Gemini CLI
|
|
206
|
+
|
|
207
|
+
While Gemini CLI doesn't directly support MCP, you can use Human MCP as a bridge to access visual analysis capabilities.
|
|
208
|
+
|
|
209
|
+
**Direct Usage:**
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Run Human MCP server directly (if globally installed)
|
|
213
|
+
human-mcp
|
|
214
|
+
|
|
215
|
+
# Or using npx (no global installation needed)
|
|
216
|
+
npx @goonnguyen/human-mcp
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Integration Example:**
|
|
220
|
+
```bash
|
|
221
|
+
# Create a wrapper script for Gemini CLI integration
|
|
222
|
+
#!/bin/bash
|
|
223
|
+
# gemini-visual-analysis.sh
|
|
224
|
+
|
|
225
|
+
# Set environment variables
|
|
226
|
+
export GOOGLE_GEMINI_API_KEY="your_api_key"
|
|
227
|
+
|
|
228
|
+
# Run Human MCP analysis
|
|
229
|
+
echo '{"source": "'$1'", "type": "image", "analysis_type": "ui_debug"}' | \
|
|
230
|
+
npx @goonnguyen/human-mcp
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
#### MCP Coding Clients (Cline, Cursor, Windsurf)
|
|
234
|
+
|
|
235
|
+
These IDE extensions support MCP servers for enhanced AI-assisted coding with visual analysis capabilities.
|
|
236
|
+
|
|
237
|
+
##### Cline (VS Code Extension)
|
|
238
|
+
|
|
239
|
+
**Configuration Location:**
|
|
240
|
+
- VS Code Settings: `.vscode/settings.json` in your workspace
|
|
241
|
+
- Or Global Settings: VS Code → Preferences → Settings → Extensions → Cline
|
|
242
|
+
|
|
243
|
+
**Configuration Example:**
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"cline.mcpServers": {
|
|
248
|
+
"human-mcp": {
|
|
249
|
+
"command": "npx",
|
|
250
|
+
"args": ["@goonnguyen/human-mcp"],
|
|
251
|
+
"env": {
|
|
252
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Alternative Configuration (if globally installed):**
|
|
260
|
+
|
|
261
|
+
```json
|
|
262
|
+
{
|
|
263
|
+
"cline.mcpServers": {
|
|
264
|
+
"human-mcp": {
|
|
265
|
+
"command": "human-mcp",
|
|
266
|
+
"env": {
|
|
267
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Setup Steps:**
|
|
275
|
+
1. Install Cline extension from VS Code Marketplace
|
|
276
|
+
2. Install Human MCP: `npm install -g @goonnguyen/human-mcp`
|
|
277
|
+
3. Open VS Code in your project directory
|
|
278
|
+
4. Add Human MCP configuration to workspace settings (use `npx` version for reliability)
|
|
279
|
+
5. Restart VS Code or reload the window
|
|
280
|
+
6. Open Cline panel and verify MCP connection
|
|
281
|
+
|
|
282
|
+
##### Cursor
|
|
283
|
+
|
|
284
|
+
**Configuration Location:**
|
|
285
|
+
- Cursor Settings: `.cursor/settings.json` in your workspace
|
|
286
|
+
- Or via Cursor → Settings → Extensions → MCP
|
|
287
|
+
|
|
288
|
+
**Configuration Example:**
|
|
289
|
+
|
|
290
|
+
```json
|
|
291
|
+
{
|
|
292
|
+
"mcp.servers": {
|
|
293
|
+
"human-mcp": {
|
|
294
|
+
"command": "npx",
|
|
295
|
+
"args": ["@goonnguyen/human-mcp"],
|
|
296
|
+
"env": {
|
|
297
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Alternative Configuration (if globally installed):**
|
|
305
|
+
|
|
306
|
+
```json
|
|
307
|
+
{
|
|
308
|
+
"mcp.servers": {
|
|
309
|
+
"human-mcp": {
|
|
310
|
+
"command": "human-mcp",
|
|
311
|
+
"env": {
|
|
312
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Setup Steps:**
|
|
320
|
+
1. Install latest version of Cursor
|
|
321
|
+
2. Install Human MCP: `npm install -g @goonnguyen/human-mcp`
|
|
322
|
+
3. Open your project in Cursor
|
|
323
|
+
4. Configure MCP servers in settings (use `npx` version for reliability)
|
|
324
|
+
5. Enable MCP integration in Cursor preferences
|
|
325
|
+
6. Test visual analysis features
|
|
326
|
+
|
|
327
|
+
##### Windsurf
|
|
328
|
+
|
|
329
|
+
**Configuration Location:**
|
|
330
|
+
- Windsurf config: `~/.windsurf/mcp_servers.json`
|
|
331
|
+
- Or project-specific: `.windsurf/mcp_servers.json`
|
|
332
|
+
|
|
333
|
+
**Configuration Example:**
|
|
334
|
+
|
|
335
|
+
```json
|
|
336
|
+
{
|
|
337
|
+
"servers": {
|
|
338
|
+
"human-mcp": {
|
|
339
|
+
"command": "npx",
|
|
340
|
+
"args": ["@goonnguyen/human-mcp"],
|
|
341
|
+
"env": {
|
|
342
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
343
|
+
},
|
|
344
|
+
"timeout": 30000
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**Alternative Configuration (if globally installed):**
|
|
351
|
+
|
|
352
|
+
```json
|
|
353
|
+
{
|
|
354
|
+
"servers": {
|
|
355
|
+
"human-mcp": {
|
|
356
|
+
"command": "human-mcp",
|
|
357
|
+
"env": {
|
|
358
|
+
"GOOGLE_GEMINI_API_KEY": "your_gemini_api_key_here"
|
|
359
|
+
},
|
|
360
|
+
"timeout": 30000
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Setup Steps:**
|
|
367
|
+
1. Install Windsurf IDE
|
|
368
|
+
2. Install Human MCP: `npm install -g @goonnguyen/human-mcp`
|
|
369
|
+
3. Create MCP server configuration file
|
|
370
|
+
4. Add Human MCP server configuration (use `npx` version for reliability)
|
|
371
|
+
5. Restart Windsurf
|
|
372
|
+
6. Verify connection in MCP panel
|
|
373
|
+
|
|
374
|
+
### Environment Variable Setup
|
|
375
|
+
|
|
376
|
+
For all clients, ensure your Google Gemini API key is properly configured:
|
|
377
|
+
|
|
378
|
+
**Option 1: System Environment Variables (Recommended)**
|
|
379
|
+
```bash
|
|
380
|
+
# Add to your shell profile (.bashrc, .zshrc, etc.)
|
|
381
|
+
export GOOGLE_GEMINI_API_KEY="your_api_key_here"
|
|
382
|
+
|
|
383
|
+
# Reload your shell
|
|
384
|
+
source ~/.zshrc # or ~/.bashrc
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Option 2: Client Configuration**
|
|
388
|
+
Include the API key directly in the MCP server configuration (as shown in examples above). This is the most reliable method for ensuring the key is available to the Human MCP server.
|
|
389
|
+
|
|
390
|
+
**Option 3: Global .env File (Advanced)**
|
|
391
|
+
```bash
|
|
392
|
+
# Create a global .env file (optional)
|
|
393
|
+
echo "GOOGLE_GEMINI_API_KEY=your_api_key_here" >> ~/.env
|
|
394
|
+
|
|
395
|
+
# Source it in your shell profile
|
|
396
|
+
echo "source ~/.env" >> ~/.zshrc
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Connection Verification
|
|
400
|
+
|
|
401
|
+
**Test Human MCP Server:**
|
|
402
|
+
```bash
|
|
403
|
+
# Test the server directly (if globally installed)
|
|
404
|
+
human-mcp
|
|
405
|
+
|
|
406
|
+
# Or using npx (no installation needed)
|
|
407
|
+
npx @goonnguyen/human-mcp
|
|
408
|
+
|
|
409
|
+
# For development/testing, use the MCP inspector from source
|
|
410
|
+
# (only if you have cloned the repository for development)
|
|
411
|
+
cd /path/to/human-mcp && bun run inspector
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**Test with MCP Clients:**
|
|
415
|
+
1. Check client logs for connection status
|
|
416
|
+
2. Try using `eyes.analyze` tool with a test image
|
|
417
|
+
3. Verify API responses are returned correctly
|
|
418
|
+
4. Look for the Human MCP server in the client's MCP server list
|
|
419
|
+
|
|
420
|
+
### Troubleshooting
|
|
421
|
+
|
|
422
|
+
**Common Issues:**
|
|
423
|
+
|
|
424
|
+
1. **Connection Failed**
|
|
425
|
+
- Verify Node.js/npm or Bun is installed and accessible
|
|
426
|
+
- Ensure `@goonnguyen/human-mcp` package is installed
|
|
427
|
+
- Check Google Gemini API key is valid and properly configured
|
|
428
|
+
|
|
429
|
+
2. **Package Not Found**
|
|
430
|
+
- Install Human MCP globally: `npm install -g @goonnguyen/human-mcp`
|
|
431
|
+
- Or use `npx @goonnguyen/human-mcp` without global installation
|
|
432
|
+
- Verify package installation: `npm list -g @goonnguyen/human-mcp`
|
|
433
|
+
|
|
434
|
+
3. **Tool Not Found**
|
|
435
|
+
- Restart the MCP client after configuration changes
|
|
436
|
+
- Check Human MCP server logs for errors
|
|
437
|
+
- Verify the server starts: `npx @goonnguyen/human-mcp`
|
|
438
|
+
|
|
439
|
+
4. **API Errors**
|
|
440
|
+
- Validate Google Gemini API key
|
|
441
|
+
- Check API quota and usage limits
|
|
442
|
+
- Review network connectivity and firewall settings
|
|
443
|
+
|
|
444
|
+
5. **Permission Errors**
|
|
445
|
+
- Check npm global installation permissions
|
|
446
|
+
- Use `npx` instead of global installation if needed
|
|
447
|
+
- Verify API key has necessary permissions
|
|
448
|
+
|
|
449
|
+
**Debug Steps:**
|
|
450
|
+
```bash
|
|
451
|
+
# Enable debug logging
|
|
452
|
+
export LOG_LEVEL=debug
|
|
453
|
+
|
|
454
|
+
# Run Human MCP with verbose output
|
|
455
|
+
npx @goonnguyen/human-mcp --verbose
|
|
456
|
+
|
|
457
|
+
# Check package installation
|
|
458
|
+
npm list -g @goonnguyen/human-mcp
|
|
459
|
+
|
|
460
|
+
# Test direct execution
|
|
461
|
+
human-mcp --version # if globally installed
|
|
462
|
+
|
|
463
|
+
# Check MCP client logs
|
|
464
|
+
# (Location varies by client - check client documentation)
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
**Getting Help:**
|
|
468
|
+
- Check [Human MCP Issues](https://github.com/human-mcp/human-mcp/issues)
|
|
469
|
+
- Review client-specific MCP documentation
|
|
470
|
+
- Test package installation: `npx @goonnguyen/human-mcp --help`
|
|
471
|
+
|
|
98
472
|
## Tools
|
|
99
473
|
|
|
100
474
|
### eyes.analyze
|
package/bun.lock
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@google/generative-ai": "^0.21.0",
|
|
8
8
|
"@modelcontextprotocol/sdk": "^1.4.0",
|
|
9
|
+
"compression": "^1.8.1",
|
|
10
|
+
"cors": "^2.8.5",
|
|
11
|
+
"express": "^5.1.0",
|
|
9
12
|
"fluent-ffmpeg": "^2.1.3",
|
|
13
|
+
"helmet": "^8.1.0",
|
|
10
14
|
"sharp": "^0.33.0",
|
|
11
15
|
"zod": "^3.23.0",
|
|
12
16
|
},
|
|
@@ -17,6 +21,9 @@
|
|
|
17
21
|
"@semantic-release/github": "^11.0.5",
|
|
18
22
|
"@semantic-release/npm": "^12.0.2",
|
|
19
23
|
"@types/bun": "latest",
|
|
24
|
+
"@types/compression": "^1.8.1",
|
|
25
|
+
"@types/cors": "^2.8.19",
|
|
26
|
+
"@types/express": "^5.0.3",
|
|
20
27
|
"@types/fluent-ffmpeg": "^2.1.26",
|
|
21
28
|
"semantic-release": "^24.2.7",
|
|
22
29
|
"typescript": "^5.6.0",
|
|
@@ -220,16 +227,40 @@
|
|
|
220
227
|
|
|
221
228
|
"@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="],
|
|
222
229
|
|
|
230
|
+
"@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="],
|
|
231
|
+
|
|
223
232
|
"@types/bun": ["@types/bun@1.2.21", "", { "dependencies": { "bun-types": "1.2.21" } }, "sha512-NiDnvEqmbfQ6dmZ3EeUO577s4P5bf4HCTXtI6trMc6f6RzirY5IrF3aIookuSpyslFzrnvv2lmEWv5HyC1X79A=="],
|
|
224
233
|
|
|
234
|
+
"@types/compression": ["@types/compression@1.8.1", "", { "dependencies": { "@types/express": "*", "@types/node": "*" } }, "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q=="],
|
|
235
|
+
|
|
236
|
+
"@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="],
|
|
237
|
+
|
|
238
|
+
"@types/cors": ["@types/cors@2.8.19", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="],
|
|
239
|
+
|
|
240
|
+
"@types/express": ["@types/express@5.0.3", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "*" } }, "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw=="],
|
|
241
|
+
|
|
242
|
+
"@types/express-serve-static-core": ["@types/express-serve-static-core@5.0.7", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ=="],
|
|
243
|
+
|
|
225
244
|
"@types/fluent-ffmpeg": ["@types/fluent-ffmpeg@2.1.27", "", { "dependencies": { "@types/node": "*" } }, "sha512-QiDWjihpUhriISNoBi2hJBRUUmoj/BMTYcfz+F+ZM9hHWBYABFAE6hjP/TbCZC0GWwlpa3FzvHH9RzFeRusZ7A=="],
|
|
226
245
|
|
|
246
|
+
"@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="],
|
|
247
|
+
|
|
248
|
+
"@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="],
|
|
249
|
+
|
|
227
250
|
"@types/node": ["@types/node@24.3.0", "", { "dependencies": { "undici-types": "~7.10.0" } }, "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow=="],
|
|
228
251
|
|
|
229
252
|
"@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="],
|
|
230
253
|
|
|
254
|
+
"@types/qs": ["@types/qs@6.14.0", "", {}, "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ=="],
|
|
255
|
+
|
|
256
|
+
"@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="],
|
|
257
|
+
|
|
231
258
|
"@types/react": ["@types/react@19.1.12", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w=="],
|
|
232
259
|
|
|
260
|
+
"@types/send": ["@types/send@0.17.5", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w=="],
|
|
261
|
+
|
|
262
|
+
"@types/serve-static": ["@types/serve-static@1.15.8", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "*" } }, "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg=="],
|
|
263
|
+
|
|
233
264
|
"accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
|
|
234
265
|
|
|
235
266
|
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
|
|
@@ -312,6 +343,10 @@
|
|
|
312
343
|
|
|
313
344
|
"compare-func": ["compare-func@2.0.0", "", { "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" } }, "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA=="],
|
|
314
345
|
|
|
346
|
+
"compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="],
|
|
347
|
+
|
|
348
|
+
"compression": ["compression@1.8.1", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w=="],
|
|
349
|
+
|
|
315
350
|
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
|
316
351
|
|
|
317
352
|
"concurrently": ["concurrently@9.2.1", "", { "dependencies": { "chalk": "4.1.2", "rxjs": "7.8.2", "shell-quote": "1.8.3", "supports-color": "8.1.1", "tree-kill": "1.2.2", "yargs": "17.7.2" }, "bin": { "concurrently": "dist/bin/concurrently.js", "conc": "dist/bin/concurrently.js" } }, "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng=="],
|
|
@@ -476,6 +511,8 @@
|
|
|
476
511
|
|
|
477
512
|
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
|
478
513
|
|
|
514
|
+
"helmet": ["helmet@8.1.0", "", {}, "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg=="],
|
|
515
|
+
|
|
479
516
|
"highlight.js": ["highlight.js@10.7.3", "", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="],
|
|
480
517
|
|
|
481
518
|
"hook-std": ["hook-std@3.0.0", "", {}, "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw=="],
|
|
@@ -616,7 +653,7 @@
|
|
|
616
653
|
|
|
617
654
|
"mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
|
|
618
655
|
|
|
619
|
-
"negotiator": ["negotiator@
|
|
656
|
+
"negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="],
|
|
620
657
|
|
|
621
658
|
"neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
|
|
622
659
|
|
|
@@ -638,6 +675,8 @@
|
|
|
638
675
|
|
|
639
676
|
"on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
|
|
640
677
|
|
|
678
|
+
"on-headers": ["on-headers@1.1.0", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="],
|
|
679
|
+
|
|
641
680
|
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
|
642
681
|
|
|
643
682
|
"onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
|
|
@@ -676,7 +715,7 @@
|
|
|
676
715
|
|
|
677
716
|
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
|
678
717
|
|
|
679
|
-
"path-to-regexp": ["path-to-regexp@
|
|
718
|
+
"path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
|
|
680
719
|
|
|
681
720
|
"path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="],
|
|
682
721
|
|
|
@@ -942,10 +981,14 @@
|
|
|
942
981
|
|
|
943
982
|
"@semantic-release/release-notes-generator/get-stream": ["get-stream@7.0.1", "", {}, "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ=="],
|
|
944
983
|
|
|
984
|
+
"accepts/negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
|
|
985
|
+
|
|
945
986
|
"chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
|
946
987
|
|
|
947
988
|
"cli-highlight/yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="],
|
|
948
989
|
|
|
990
|
+
"compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
|
991
|
+
|
|
949
992
|
"cosmiconfig/parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="],
|
|
950
993
|
|
|
951
994
|
"cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
|
@@ -1324,8 +1367,6 @@
|
|
|
1324
1367
|
|
|
1325
1368
|
"readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
|
|
1326
1369
|
|
|
1327
|
-
"router/path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
|
|
1328
|
-
|
|
1329
1370
|
"semantic-release/@semantic-release/error": ["@semantic-release/error@4.0.0", "", {}, "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ=="],
|
|
1330
1371
|
|
|
1331
1372
|
"semantic-release/aggregate-error": ["aggregate-error@5.0.0", "", { "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" } }, "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw=="],
|
|
@@ -1340,6 +1381,8 @@
|
|
|
1340
1381
|
|
|
1341
1382
|
"serve-handler/mime-types": ["mime-types@2.1.18", "", { "dependencies": { "mime-db": "~1.33.0" } }, "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ=="],
|
|
1342
1383
|
|
|
1384
|
+
"serve-handler/path-to-regexp": ["path-to-regexp@3.3.0", "", {}, "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw=="],
|
|
1385
|
+
|
|
1343
1386
|
"serve-handler/range-parser": ["range-parser@1.2.0", "", {}, "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A=="],
|
|
1344
1387
|
|
|
1345
1388
|
"signale/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="],
|
|
@@ -1414,6 +1457,8 @@
|
|
|
1414
1457
|
|
|
1415
1458
|
"cli-highlight/yargs/yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="],
|
|
1416
1459
|
|
|
1460
|
+
"compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
|
|
1461
|
+
|
|
1417
1462
|
"env-ci/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="],
|
|
1418
1463
|
|
|
1419
1464
|
"env-ci/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="],
|