remote-access-mcp 4.5.0 → 4.6.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/CHANGELOG.md +17 -0
- package/README.ar.md +96 -0
- package/README.fa.md +279 -76
- package/README.md +278 -264
- package/README.ru.md +95 -0
- package/README.tr.md +94 -0
- package/README.zh-CN.md +94 -0
- package/dist/core/tunnel-providers.d.ts +7 -0
- package/dist/core/tunnel-providers.d.ts.map +1 -1
- package/dist/core/tunnel-providers.js +29 -0
- package/dist/core/tunnel-providers.js.map +1 -1
- package/dist/server/run.d.ts.map +1 -1
- package/dist/server/run.js +103 -29
- package/dist/server/run.js.map +1 -1
- package/package.json +16 -3
package/README.ru.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Remote Access MCP
|
|
2
|
+
|
|
3
|
+
> **Дайте вашему AI-ассистенту реальный доступ к вашему компьютеру.**
|
|
4
|
+
>
|
|
5
|
+
> Подключите ChatGPT, Claude, Grok, Qwen Desktop и другие MCP-клиенты к ноутбуку, ПК, VM или серверу. Agent сможет читать файлы, изменять код, запускать тесты, проверять логи и выполнять многошаговые задачи в рамках выданных разрешений.
|
|
6
|
+
|
|
7
|
+
Remote Access MCP — безопасный gateway для доступа к реальной машине через [Model Context Protocol (MCP)](https://modelcontextprotocol.io/).
|
|
8
|
+
|
|
9
|
+
Вместо ответа “выполните эту команду” Agent может выполнить цикл:
|
|
10
|
+
|
|
11
|
+
**Наблюдение → Планирование → Изменение → Тест → Проверка → Отчёт**
|
|
12
|
+
|
|
13
|
+
## Возможности
|
|
14
|
+
|
|
15
|
+
В зависимости от разрешений Token Agent может:
|
|
16
|
+
|
|
17
|
+
- читать, создавать, изменять, удалять и искать файлы
|
|
18
|
+
- загружать и скачивать binary-файлы
|
|
19
|
+
- запускать тесты, сборку и контролируемые Shell-команды
|
|
20
|
+
- проверять процессы, диск, сеть, сервисы и логи
|
|
21
|
+
- работать с Git
|
|
22
|
+
- использовать SQLite, MySQL, PostgreSQL и Redis
|
|
23
|
+
- проверять HTTP endpoints и опциональный browser runtime
|
|
24
|
+
- запускать background jobs и ограниченные параллельные задачи
|
|
25
|
+
- использовать scheduler и webhook/event automation
|
|
26
|
+
- анализировать Docker/Kubernetes
|
|
27
|
+
- создавать Snapshot и выполнять Rollback рискованных изменений
|
|
28
|
+
|
|
29
|
+
## Платформы
|
|
30
|
+
|
|
31
|
+
Core Gateway поддерживает **Linux, macOS и Windows** с Node.js 18+.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g remote-access-mcp
|
|
35
|
+
ramcp init
|
|
36
|
+
ramcp tunnel
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Для core runtime не нужны Python или Docker.
|
|
40
|
+
|
|
41
|
+
## Безопасность
|
|
42
|
+
|
|
43
|
+
Права задаются через Token и могут включать:
|
|
44
|
+
|
|
45
|
+
- разрешённые и запрещённые каталоги
|
|
46
|
+
- Tool Scopes
|
|
47
|
+
- роли `auditor`, `developer`, `deployer`, `admin`
|
|
48
|
+
- Shell и Command Allowlist
|
|
49
|
+
- Read-only режим
|
|
50
|
+
- Rate Limit
|
|
51
|
+
- срок действия Token
|
|
52
|
+
|
|
53
|
+
Также есть защита путей, SSRF protection, проверка Git-аргументов, ограничения SQLite, Audit Hash Chain, Snapshot/Rollback и изоляция плагинов.
|
|
54
|
+
|
|
55
|
+
**Цель — не дать AI бесконтрольную власть, а сделать его возможности явными, ограниченными, наблюдаемыми и отзывными.**
|
|
56
|
+
|
|
57
|
+
## Подключение AI-клиента
|
|
58
|
+
|
|
59
|
+
Для клиентов с Token в URL:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
https://your-host/<token>/mcp
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Для клиентов с Authorization Header:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
https://your-host/mcp
|
|
69
|
+
Authorization: Bearer <token>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
ramcp url
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Разработка
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/AmirAliManzar/remote-access-mcp.git
|
|
80
|
+
cd remote-access-mcp
|
|
81
|
+
npm install
|
|
82
|
+
npm test
|
|
83
|
+
npm run build
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- [English README](README.md)
|
|
87
|
+
- [فارسی](README.fa.md)
|
|
88
|
+
- [中文](README.zh-CN.md)
|
|
89
|
+
- [Türkçe](README.tr.md)
|
|
90
|
+
- [Security](SECURITY.md)
|
|
91
|
+
- [Roadmap](ROADMAP.md)
|
|
92
|
+
|
|
93
|
+
## License
|
|
94
|
+
|
|
95
|
+
MIT © Amir Ali Manzar
|
package/README.tr.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Remote Access MCP
|
|
2
|
+
|
|
3
|
+
> **Yapay zekâ asistanınıza bilgisayarınıza gerçek erişim verin.**
|
|
4
|
+
>
|
|
5
|
+
> ChatGPT, Claude, Grok, Qwen Desktop ve diğer MCP uyumlu istemcileri dizüstü bilgisayarınıza, masaüstünüze, VM'inize veya sunucunuza bağlayın. Agent; dosya okuyabilir, kod değiştirebilir, test çalıştırabilir, log inceleyebilir ve çok adımlı işleri tamamlayabilir.
|
|
6
|
+
|
|
7
|
+
Remote Access MCP, [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) tabanlı güvenli bir makine erişim gateway'idir.
|
|
8
|
+
|
|
9
|
+
AI yalnızca “şu komutu çalıştır” demek yerine, verdiğiniz yetkiler dahilinde gerçek bir iş döngüsü gerçekleştirebilir:
|
|
10
|
+
|
|
11
|
+
**Gözlemle → Planla → Değiştir → Test Et → Doğrula → Raporla**
|
|
12
|
+
|
|
13
|
+
## Neler yapabilir?
|
|
14
|
+
|
|
15
|
+
Token izinlerine bağlı olarak Agent:
|
|
16
|
+
|
|
17
|
+
- dosyaları okuyabilir, oluşturabilir, düzenleyebilir, silebilir ve arayabilir
|
|
18
|
+
- binary dosya yükleyebilir/indirebilir
|
|
19
|
+
- test, build, lint ve kontrollü Shell komutları çalıştırabilir
|
|
20
|
+
- process, disk, network, service ve logları inceleyebilir
|
|
21
|
+
- Git repository'leriyle çalışabilir
|
|
22
|
+
- SQLite, MySQL, PostgreSQL ve Redis sorgulayabilir
|
|
23
|
+
- HTTP endpoint'leri ve isteğe bağlı browser ortamını inceleyebilir
|
|
24
|
+
- background job ve sınırlı paralel görevler çalıştırabilir
|
|
25
|
+
- scheduler ve webhook/event otomasyonları kullanabilir
|
|
26
|
+
- Docker/Kubernetes altyapısını inceleyebilir
|
|
27
|
+
- Snapshot alıp riskli dosya değişikliklerini geri alabilir
|
|
28
|
+
|
|
29
|
+
## Platformlar
|
|
30
|
+
|
|
31
|
+
Çekirdek Gateway **Linux, macOS ve Windows** üzerinde Node.js 18+ ile çalışır.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g remote-access-mcp
|
|
35
|
+
ramcp init
|
|
36
|
+
ramcp tunnel
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Çekirdek çalışma için Python veya Docker gerekmez.
|
|
40
|
+
|
|
41
|
+
## Güvenlik
|
|
42
|
+
|
|
43
|
+
Token bazlı yetkilendirme ile şunları sınırlandırabilirsiniz:
|
|
44
|
+
|
|
45
|
+
- izin verilen/reddedilen dizinler
|
|
46
|
+
- Tool Scopes
|
|
47
|
+
- `auditor`, `developer`, `deployer`, `admin` rolleri
|
|
48
|
+
- Shell ve Command Allowlist
|
|
49
|
+
- Read-only modu
|
|
50
|
+
- Rate Limit
|
|
51
|
+
- Token expiration
|
|
52
|
+
|
|
53
|
+
Ayrıca path güvenliği, SSRF koruması, Git argüman doğrulaması, SQLite kısıtlamaları, audit hash chain, snapshot/rollback ve plugin isolation gibi katmanlar bulunur.
|
|
54
|
+
|
|
55
|
+
**Amaç AI'ya sınırsız güç vermek değil; yeteneklerini açık, sınırlı, gözlemlenebilir ve iptal edilebilir hale getirmektir.**
|
|
56
|
+
|
|
57
|
+
## AI istemcisini bağlama
|
|
58
|
+
|
|
59
|
+
URL üzerinden Token kabul eden istemciler:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
https://your-host/<token>/mcp
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Authorization Header destekleyen istemciler:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
https://your-host/mcp
|
|
69
|
+
Authorization: Bearer <token>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
ramcp url
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Geliştirme
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/AmirAliManzar/remote-access-mcp.git
|
|
80
|
+
cd remote-access-mcp
|
|
81
|
+
npm install
|
|
82
|
+
npm test
|
|
83
|
+
npm run build
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- [English README](README.md)
|
|
87
|
+
- [فارسی](README.fa.md)
|
|
88
|
+
- [中文](README.zh-CN.md)
|
|
89
|
+
- [Security](SECURITY.md)
|
|
90
|
+
- [Roadmap](ROADMAP.md)
|
|
91
|
+
|
|
92
|
+
## License
|
|
93
|
+
|
|
94
|
+
MIT © Amir Ali Manzar
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Remote Access MCP
|
|
2
|
+
|
|
3
|
+
> **让你的 AI 助手真正访问你的电脑。**
|
|
4
|
+
>
|
|
5
|
+
> 将 ChatGPT、Claude、Grok、Qwen Desktop 等支持 MCP 的客户端连接到你的笔记本、台式机、虚拟机或服务器,让 Agent 真正读取文件、修改代码、运行测试、检查日志并完成多步骤任务。
|
|
6
|
+
|
|
7
|
+
Remote Access MCP 是一个基于 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 的安全机器访问网关。
|
|
8
|
+
|
|
9
|
+
AI 不再只能告诉你“应该运行什么命令”,而可以在你授权的范围内执行完整工作流:
|
|
10
|
+
|
|
11
|
+
**观察 → 计划 → 修改 → 测试 → 验证 → 汇报**
|
|
12
|
+
|
|
13
|
+
## 能做什么?
|
|
14
|
+
|
|
15
|
+
根据 Token 权限,Agent 可以:
|
|
16
|
+
|
|
17
|
+
- 阅读、创建、修改、删除和搜索文件
|
|
18
|
+
- 上传/下载二进制文件
|
|
19
|
+
- 运行测试、构建、脚本和受控 Shell 命令
|
|
20
|
+
- 检查进程、磁盘、网络、服务和日志
|
|
21
|
+
- 操作 Git 仓库
|
|
22
|
+
- 使用 SQLite、MySQL、PostgreSQL、Redis
|
|
23
|
+
- 检查 HTTP Endpoint 和可选 Browser 环境
|
|
24
|
+
- 并行执行任务和后台 Job
|
|
25
|
+
- 创建定时任务和 Webhook/Event 自动化
|
|
26
|
+
- 检查 Docker/Kubernetes 等基础设施
|
|
27
|
+
- 创建 Snapshot 并回滚风险文件修改
|
|
28
|
+
- 使用可选的 Context7、Codebase Memory 等集成
|
|
29
|
+
|
|
30
|
+
## 跨平台
|
|
31
|
+
|
|
32
|
+
核心 Gateway 支持 **Linux、macOS、Windows**,Node.js 18+。
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g remote-access-mcp
|
|
36
|
+
ramcp init
|
|
37
|
+
ramcp tunnel
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
不需要 Python,也不需要 Docker 才能运行核心 Gateway。
|
|
41
|
+
|
|
42
|
+
## 安全
|
|
43
|
+
|
|
44
|
+
权限以 Token 为中心,可以限制:
|
|
45
|
+
|
|
46
|
+
- 允许/拒绝的目录
|
|
47
|
+
- Tool Scopes
|
|
48
|
+
- `auditor` / `developer` / `deployer` / `admin` Role
|
|
49
|
+
- Shell 和 Command Allowlist
|
|
50
|
+
- Read-only 模式
|
|
51
|
+
- Rate Limit
|
|
52
|
+
- Token 过期时间
|
|
53
|
+
|
|
54
|
+
同时提供路径安全检查、SSRF 防护、Git 参数验证、SQLite 限制、Audit Hash Chain、Snapshot/Rollback 和插件隔离等机制。
|
|
55
|
+
|
|
56
|
+
**AI 的能力应该是明确、受限、可观察、可撤销的。**
|
|
57
|
+
|
|
58
|
+
## 连接 AI 客户端
|
|
59
|
+
|
|
60
|
+
支持 URL Token 的客户端:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
https://your-host/<token>/mcp
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
支持 Authorization Header 的客户端:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
https://your-host/mcp
|
|
70
|
+
Authorization: Bearer <token>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
ramcp url
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 开发
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
git clone https://github.com/AmirAliManzar/remote-access-mcp.git
|
|
81
|
+
cd remote-access-mcp
|
|
82
|
+
npm install
|
|
83
|
+
npm test
|
|
84
|
+
npm run build
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- [English README](README.md)
|
|
88
|
+
- [فارسی](README.fa.md)
|
|
89
|
+
- [Security](SECURITY.md)
|
|
90
|
+
- [Roadmap](ROADMAP.md)
|
|
91
|
+
|
|
92
|
+
## License
|
|
93
|
+
|
|
94
|
+
MIT © Amir Ali Manzar
|
|
@@ -7,6 +7,13 @@ export interface TunnelProviderOptions {
|
|
|
7
7
|
timeoutMs?: number;
|
|
8
8
|
log?: (msg: string) => void;
|
|
9
9
|
}
|
|
10
|
+
export interface TunnelHealth {
|
|
11
|
+
healthy: boolean;
|
|
12
|
+
status?: number;
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Verify that a public URL is actually serving this MCP gateway, not merely an HTTP edge/provider error. */
|
|
16
|
+
export declare function verifyTunnelHealth(url: string, expectedVersion?: string, timeoutMs?: number): Promise<TunnelHealth>;
|
|
10
17
|
export declare function startTunnelProvider(name: TunnelProviderName, opts: TunnelProviderOptions): Promise<TunnelHandle>;
|
|
11
18
|
export declare function startTunnelAuto(opts: TunnelProviderOptions, preferred?: TunnelProviderName): Promise<TunnelHandle>;
|
|
12
19
|
//# sourceMappingURL=tunnel-providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-providers.d.ts","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1E,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAA6C,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAqCD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtH;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQxH"}
|
|
1
|
+
{"version":3,"file":"tunnel-providers.d.ts","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1E,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAA6C,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6GAA6G;AAC7G,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAoBxH;AAqCD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtH;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQxH"}
|
|
@@ -2,6 +2,35 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import { startQuickTunnel } from './tunnel.js';
|
|
3
3
|
import { which } from './platform.js';
|
|
4
4
|
export const TUNNEL_PROVIDERS = ['cloudflare', 'pinggy', 'localhostrun'];
|
|
5
|
+
/** Verify that a public URL is actually serving this MCP gateway, not merely an HTTP edge/provider error. */
|
|
6
|
+
export async function verifyTunnelHealth(url, expectedVersion, timeoutMs = 5_000) {
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(`${url.replace(/\/$/, '')}/health`, {
|
|
9
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
10
|
+
headers: { accept: 'application/json' },
|
|
11
|
+
});
|
|
12
|
+
const body = await response.text();
|
|
13
|
+
if (!response.ok)
|
|
14
|
+
return { healthy: false, status: response.status, reason: `HTTP ${response.status}: ${body.slice(0, 160)}` };
|
|
15
|
+
let payload;
|
|
16
|
+
try {
|
|
17
|
+
payload = JSON.parse(body);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return { healthy: false, status: response.status, reason: 'health endpoint returned non-JSON content' };
|
|
21
|
+
}
|
|
22
|
+
if (payload?.status !== 'ok' || payload?.service !== 'remote-access-mcp') {
|
|
23
|
+
return { healthy: false, status: response.status, reason: 'health response is not from Remote Access MCP' };
|
|
24
|
+
}
|
|
25
|
+
if (expectedVersion && payload.version !== expectedVersion) {
|
|
26
|
+
return { healthy: false, status: response.status, reason: `version mismatch: expected ${expectedVersion}, got ${payload.version ?? 'unknown'}` };
|
|
27
|
+
}
|
|
28
|
+
return { healthy: true, status: response.status };
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
return { healthy: false, reason: e?.message || String(e) };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
5
34
|
const URL_PATTERNS = {
|
|
6
35
|
pinggy: /https:\/\/[^\s"'<>]+\.(?:free\.pinggy\.net|pinggy-free\.link)/i,
|
|
7
36
|
localhostrun: /https:\/\/[^\s"'<>]+\.lhr\.life/i,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-providers.js","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,MAAM,CAAC,MAAM,gBAAgB,GAAyB,CAAC,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-providers.js","sourceRoot":"","sources":["../../src/core/tunnel-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,MAAM,CAAC,MAAM,gBAAgB,GAAyB,CAAC,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAe/F,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,eAAwB,EAAE,SAAS,GAAG,KAAK;IAC/F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE;YAC/D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC/H,IAAI,OAAY,CAAC;QACjB,IAAI,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC;QAAC,CAAC;QACtJ,IAAI,OAAO,EAAE,MAAM,KAAK,IAAI,IAAI,OAAO,EAAE,OAAO,KAAK,mBAAmB,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAC;QAC9G,CAAC;QACD,IAAI,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,8BAA8B,eAAe,SAAS,OAAO,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,CAAC;QACnJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAuC;IACvD,MAAM,EAAE,gEAAgE;IACxE,YAAY,EAAE,kCAAkC;IAChD,UAAU,EAAE,2CAA2C;CACxD,CAAC;AAEF,SAAS,cAAc,CAAC,IAAwB,EAAE,IAA2B,EAAE,IAAc;IAC3F,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wBAAwB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,uCAAuC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3H,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,IAAI,OAAO;gBAAE,OAAO;YAC1B,OAAO,GAAG,IAAI,CAAC;YAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvK,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAwB,EAAE,IAA2B;IAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9K,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;AAC1K,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA2B,EAAE,SAA8B;IAC/F,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC3G,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YAAC,OAAO,MAAM,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;QACzD,OAAO,CAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC"}
|
package/dist/server/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"AAWA,OAAO,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"AAWA,OAAO,EAA8E,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAUlJ,wBAAsB,SAAS,CAAC,IAAI,GAAE;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuNrB"}
|
package/dist/server/run.js
CHANGED
|
@@ -8,7 +8,7 @@ import { loadLiveConfig } from '../core/config.js';
|
|
|
8
8
|
import { buildApp } from './app.js';
|
|
9
9
|
import { startScheduler } from '../tools/schedule.js';
|
|
10
10
|
import { shellCommand, childEnv, platformLabel, writeRuntimeState, clearRuntimeState } from '../core/platform.js';
|
|
11
|
-
import { startTunnelProvider, startTunnelAuto } from '../core/tunnel-providers.js';
|
|
11
|
+
import { startTunnelProvider, startTunnelAuto, verifyTunnelHealth, TUNNEL_PROVIDERS } from '../core/tunnel-providers.js';
|
|
12
12
|
import { jobManager } from '../core/jobs.js';
|
|
13
13
|
import { allowDirectPort, chooseDirectPort, denyDirectPort, getPublicIPv4 } from '../core/direct-http.js';
|
|
14
14
|
import { AuditLog } from '../core/audit.js';
|
|
@@ -86,34 +86,23 @@ export async function runServer(opts = {}) {
|
|
|
86
86
|
writeRuntimeState({ pid: process.pid, tunnel_url: tunnel.url, tunnel_provider: tunnel.provider, host, port, started: new Date().toISOString() });
|
|
87
87
|
console.log(`\npublic URL: ${tunnel.url}${cfg.mcp_path}`);
|
|
88
88
|
console.log(`connector: ${tunnel.url}/${cfg.tokens[0].token}${cfg.mcp_path}`);
|
|
89
|
-
// Verify the public URL
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
if (healthy) {
|
|
106
|
-
console.log(`[tunnel] verified: the public URL answers from the internet.`);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
console.log(`[tunnel] WARNING: could not reach ${tunnel.url} from here.`);
|
|
110
|
-
console.log(`[tunnel] Some networks (filtered ISPs, certain datacenters) block the`);
|
|
111
|
-
console.log(`[tunnel] tunnel data path. Try a different network, or host the gateway`);
|
|
112
|
-
console.log(`[tunnel] on a server with a real domain instead.`);
|
|
113
|
-
}
|
|
89
|
+
// Verify the public URL all the way to the MCP gateway. A provider's 503
|
|
90
|
+
// page (for example localhost.run's "No Tunnel here") must never count
|
|
91
|
+
// as a successful verification.
|
|
92
|
+
const initialDeadline = Date.now() + 20_000;
|
|
93
|
+
let initialHealth = await verifyTunnelHealth(tunnel.url, PKG.version);
|
|
94
|
+
while (!initialHealth.healthy && Date.now() < initialDeadline) {
|
|
95
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
96
|
+
initialHealth = await verifyTunnelHealth(tunnel.url, PKG.version);
|
|
97
|
+
}
|
|
98
|
+
if (initialHealth.healthy) {
|
|
99
|
+
console.log(`[tunnel] verified: public endpoint reaches Remote Access MCP v${PKG.version}.`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.log(`[tunnel] WARNING: public endpoint is unhealthy: ${initialHealth.reason || 'unknown error'}`);
|
|
103
|
+
console.log(`[tunnel] the tunnel will be monitored and automatically recovered when possible.`);
|
|
114
104
|
}
|
|
115
|
-
|
|
116
|
-
console.log(`\n(keep this process running — the URL dies when it exits)`);
|
|
105
|
+
console.log(`\n(tunnel health is monitored; keep this process running — the URL dies when it exits)`);
|
|
117
106
|
}
|
|
118
107
|
catch (e) {
|
|
119
108
|
tunnelFailed = true;
|
|
@@ -122,6 +111,90 @@ export async function runServer(opts = {}) {
|
|
|
122
111
|
console.log('[direct] tunnel unavailable; trying direct HTTP fallback.');
|
|
123
112
|
}
|
|
124
113
|
}
|
|
114
|
+
let shuttingDown = false;
|
|
115
|
+
let tunnelMonitor;
|
|
116
|
+
let tunnelRecovering = false;
|
|
117
|
+
let monitoredProvider = tunnel?.provider;
|
|
118
|
+
if (tunnel) {
|
|
119
|
+
let consecutiveFailures = 0;
|
|
120
|
+
tunnelMonitor = setInterval(async () => {
|
|
121
|
+
if (tunnelRecovering || shuttingDown)
|
|
122
|
+
return;
|
|
123
|
+
let health = null;
|
|
124
|
+
if (tunnel) {
|
|
125
|
+
health = await verifyTunnelHealth(tunnel.url, PKG.version, 5000);
|
|
126
|
+
if (health.healthy) {
|
|
127
|
+
consecutiveFailures = 0;
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
consecutiveFailures += 1;
|
|
131
|
+
if (consecutiveFailures < 2)
|
|
132
|
+
return;
|
|
133
|
+
console.error(`[tunnel] unhealthy (${tunnel.provider}): ${health.reason || 'unknown error'}`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
consecutiveFailures = 2;
|
|
137
|
+
}
|
|
138
|
+
tunnelRecovering = true;
|
|
139
|
+
const failedTunnel = tunnel;
|
|
140
|
+
const failedProvider = failedTunnel?.provider || monitoredProvider || cfg.tunnel?.preferred_provider;
|
|
141
|
+
if (!failedProvider) {
|
|
142
|
+
tunnelRecovering = false;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
console.log('[tunnel] attempting automatic recovery...');
|
|
146
|
+
try {
|
|
147
|
+
failedTunnel?.stop();
|
|
148
|
+
}
|
|
149
|
+
catch { }
|
|
150
|
+
tunnel = null;
|
|
151
|
+
const preferred = cfg.tunnel?.preferred_provider;
|
|
152
|
+
const order = preferred
|
|
153
|
+
? [preferred, ...TUNNEL_PROVIDERS.filter((p) => p !== preferred)]
|
|
154
|
+
: [failedProvider, ...TUNNEL_PROVIDERS.filter((p) => p !== failedProvider)];
|
|
155
|
+
let recovered = null;
|
|
156
|
+
const failures = [];
|
|
157
|
+
for (const provider of order) {
|
|
158
|
+
try {
|
|
159
|
+
console.log(`[tunnel] reconnect: trying ${provider}...`);
|
|
160
|
+
const candidate = await startTunnelProvider(provider, { port, host, log: (m) => console.log(`[tunnel] ${m}`) });
|
|
161
|
+
const candidateHealth = await verifyTunnelHealth(candidate.url, PKG.version, 8000);
|
|
162
|
+
if (!candidateHealth.healthy) {
|
|
163
|
+
failures.push(`${provider}: ${candidateHealth.reason || 'health check failed'}`);
|
|
164
|
+
try {
|
|
165
|
+
candidate.stop();
|
|
166
|
+
}
|
|
167
|
+
catch { }
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
recovered = candidate;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
failures.push(`${provider}: ${e?.message || e}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (recovered) {
|
|
178
|
+
tunnel = recovered;
|
|
179
|
+
monitoredProvider = recovered.provider;
|
|
180
|
+
cfg.tunnel = { ...(cfg.tunnel || { provider: recovered.provider, auto_start: false }), preferred_provider: recovered.provider, last_url: recovered.url };
|
|
181
|
+
try {
|
|
182
|
+
const { saveConfig } = await import('../core/config.js');
|
|
183
|
+
saveConfig(cfg);
|
|
184
|
+
}
|
|
185
|
+
catch { }
|
|
186
|
+
writeRuntimeState({ pid: process.pid, tunnel_url: recovered.url, tunnel_provider: recovered.provider, host, port, started: new Date().toISOString() });
|
|
187
|
+
console.log(`[tunnel] recovered: ${recovered.provider} → ${recovered.url}${cfg.mcp_path}`);
|
|
188
|
+
consecutiveFailures = 0;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
console.error(`[tunnel] recovery failed: ${failures.join(' | ')}`);
|
|
192
|
+
tunnelFailed = true;
|
|
193
|
+
}
|
|
194
|
+
tunnelRecovering = false;
|
|
195
|
+
}, 15_000);
|
|
196
|
+
tunnelMonitor.unref();
|
|
197
|
+
}
|
|
125
198
|
if (wantDirect || (!tunnel && tunnelFailed)) {
|
|
126
199
|
try {
|
|
127
200
|
directPort = await chooseDirectPort(opts.directPort ?? cfg.direct_http?.port);
|
|
@@ -170,13 +243,14 @@ export async function runServer(opts = {}) {
|
|
|
170
243
|
console.log(`endpoint: http://${host}:${port}${cfg.mcp_path}`);
|
|
171
244
|
console.log(`tip: no public IP? run \`ramcp tunnel\` for an instant https URL.`);
|
|
172
245
|
}
|
|
173
|
-
let shuttingDown = false;
|
|
174
246
|
const shutdown = () => {
|
|
175
247
|
if (shuttingDown)
|
|
176
248
|
return;
|
|
177
249
|
shuttingDown = true;
|
|
178
250
|
console.log('\nshutting down...');
|
|
179
251
|
jobManager.shutdown();
|
|
252
|
+
if (tunnelMonitor)
|
|
253
|
+
clearInterval(tunnelMonitor);
|
|
180
254
|
tunnel?.stop();
|
|
181
255
|
if (directPort)
|
|
182
256
|
void denyDirectPort(directPort);
|
package/dist/server/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAW,MAAM,qBAAqB,CAAC;AAE3H,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAA2B,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAQ5B,EAAE;IACJ,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ;QAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IAExC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAElC,kEAAkE;IAClE,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC9D,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnF,MAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,UAAU,CAAC,KAAK,EAAE,CAAC;IAEnB,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,YAAY,GAA2C,IAAI,CAAC;IAChE,IAAI,UAA8B,CAAC;IACnC,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAErF,kEAAkE;IAClE,sEAAsE;IACtE,wEAAwE;IACxE,sEAAsE;IACtE,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEvF,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,OAAO,OAAO,aAAa,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1I,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,KAAK,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,YAAY,CAAC;YAC/E,MAAM,QAAQ,GAAG,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,GAAG,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzG,MAAM,GAAG,UAAU,KAAK,MAAM;gBAC5B,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC;gBAC5F,CAAC,CAAC,MAAM,mBAAmB,CAAC,QAA8B,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxH,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,QAAQ,EAAE,UAAiB,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,QAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACzJ,IAAI,CAAC;gBAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;YAC1I,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACjJ,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE/E,yEAAyE;YACzE,uEAAuE;YACvE,uEAAuE;YACvE,gDAAgD;YAChD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;gBACrC,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzC,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACrF,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;oBACjB,CAAC;oBAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;oBAC9C,IAAI,CAAC,OAAO;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC9E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC;oBAC1E,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;oBACrF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;oBACvF,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9E,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,YAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpC,YAAa,CAAC,MAAM,CAAC,UAAW,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAa,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpH,CAAC,CAAC,CAAC;YACH,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;YAClC,GAAG,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACvD,IAAI,CAAC;gBAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC9G,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,wBAAwB,UAAU,EAAE,CAAC;YAC/F,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACnM,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,oBAAoB,UAAU,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtG,IAAI,CAAC,CAAC,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,YAAY,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAAC,YAAY,GAAG,IAAI,CAAC;YAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,EAAE,IAAI,EAAE,CAAC;QACf,IAAI,UAAU;YAAE,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC;QAChD,YAAY,EAAE,KAAK,EAAE,CAAC;QACtB,iBAAiB,EAAE,CAAC;QACpB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,8CAA8C;AAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACnE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/server/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAW,MAAM,qBAAqB,CAAC;AAE3H,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAA2B,MAAM,6BAA6B,CAAC;AAClJ,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAQ5B,EAAE;IACJ,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ;QAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IAExC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAElC,kEAAkE;IAClE,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC9D,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnF,MAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,UAAU,CAAC,KAAK,EAAE,CAAC;IAEnB,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,YAAY,GAA2C,IAAI,CAAC;IAChE,IAAI,UAA8B,CAAC;IACnC,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAErF,kEAAkE;IAClE,sEAAsE;IACtE,wEAAwE;IACxE,sEAAsE;IACtE,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEvF,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,OAAO,OAAO,aAAa,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1I,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,KAAK,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,YAAY,CAAC;YAC/E,MAAM,QAAQ,GAAG,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,GAAG,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzG,MAAM,GAAG,UAAU,KAAK,MAAM;gBAC5B,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC;gBAC5F,CAAC,CAAC,MAAM,mBAAmB,CAAC,QAA8B,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxH,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,QAAQ,EAAE,UAAiB,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,QAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACzJ,IAAI,CAAC;gBAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;YAC1I,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACjJ,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE/E,yEAAyE;YACzE,uEAAuE;YACvE,gCAAgC;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;YAC5C,IAAI,aAAa,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACtE,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;gBAC9D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC9C,aAAa,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,iEAAiE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mDAAmD,aAAa,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;gBAC1G,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;YAClG,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACxG,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,aAAyC,CAAC;IAC9C,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,iBAAiB,GAAmC,MAAM,EAAE,QAA0C,CAAC;IAC3G,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACrC,IAAI,gBAAgB,IAAI,YAAY;gBAAE,OAAO;YAC7C,IAAI,MAAM,GAA0D,IAAI,CAAC;YACzE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,mBAAmB,GAAG,CAAC,CAAC;oBACxB,OAAO;gBACT,CAAC;gBACD,mBAAmB,IAAI,CAAC,CAAC;gBACzB,IAAI,mBAAmB,GAAG,CAAC;oBAAE,OAAO;gBACpC,OAAO,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YAChG,CAAC;iBAAM,CAAC;gBACN,mBAAmB,GAAG,CAAC,CAAC;YAC1B,CAAC;YAED,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,YAAY,GAAG,MAAM,CAAC;YAC5B,MAAM,cAAc,GAAI,YAAY,EAAE,QAA2C,IAAI,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAwC,CAAC;YAC/J,IAAI,CAAC,cAAc,EAAE,CAAC;gBAAC,gBAAgB,GAAG,KAAK,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,IAAI,CAAC;gBAAC,YAAY,EAAE,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACtC,MAAM,GAAG,IAAI,CAAC;YAEd,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAoD,CAAC;YACnF,MAAM,KAAK,GAAG,SAAS;gBACrB,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;YAC9E,IAAI,SAAS,GAAwB,IAAI,CAAC;YAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,KAAK,CAAC,CAAC;oBACzD,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChH,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACnF,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;wBAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,eAAe,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC,CAAC;wBACjF,IAAI,CAAC;4BAAC,SAAS,CAAC,IAAI,EAAE,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBAClC,SAAS;oBACX,CAAC;oBACD,SAAS,GAAG,SAAS,CAAC;oBACtB,MAAM;gBACR,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,GAAG,SAAS,CAAC;gBACnB,iBAAiB,GAAG,SAAS,CAAC,QAA8B,CAAC;gBAC7D,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAe,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB,EAAE,SAAS,CAAC,QAAe,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;gBACvK,IAAI,CAAC;oBAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;oBAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAC3F,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACvJ,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,QAAQ,MAAM,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3F,mBAAmB,GAAG,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnE,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,gBAAgB,GAAG,KAAK,CAAC;QAC3B,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,aAAa,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9E,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,YAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpC,YAAa,CAAC,MAAM,CAAC,UAAW,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAa,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpH,CAAC,CAAC,CAAC;YACH,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;YAClC,GAAG,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACvD,IAAI,CAAC;gBAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC9G,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,wBAAwB,UAAU,EAAE,CAAC;YAC/F,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACnM,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,oBAAoB,UAAU,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtG,IAAI,CAAC,CAAC,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,YAAY,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAAC,YAAY,GAAG,IAAI,CAAC;YAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,aAAa;YAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,CAAC;QACf,IAAI,UAAU;YAAE,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC;QAChD,YAAY,EAAE,KAAK,EAAE,CAAC;QACtB,iBAAiB,EAAE,CAAC;QACpB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,8CAA8C;AAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACnE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remote-access-mcp",
|
|
3
|
-
"version": "4.
|
|
4
|
-
"description": "Turn any
|
|
3
|
+
"version": "4.6.0",
|
|
4
|
+
"description": "Turn any laptop, desktop, VM, or server into a secure AI-agent workspace via MCP. Let ChatGPT, Claude, Grok, Qwen and other MCP clients read and edit files, run commands, test code, inspect systems, and complete real-world tasks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"remote-access-mcp": "dist/main.js",
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
"dist",
|
|
12
12
|
"README.md",
|
|
13
13
|
"README.fa.md",
|
|
14
|
+
"README.zh-CN.md",
|
|
15
|
+
"README.tr.md",
|
|
16
|
+
"README.ru.md",
|
|
17
|
+
"README.ar.md",
|
|
14
18
|
"LICENSE",
|
|
15
19
|
"install.sh",
|
|
16
20
|
"AGENTS.md",
|
|
@@ -37,14 +41,23 @@
|
|
|
37
41
|
"mcp-gateway",
|
|
38
42
|
"model-context-protocol",
|
|
39
43
|
"ai-agent",
|
|
44
|
+
"agentic-ai",
|
|
40
45
|
"ai-ops",
|
|
46
|
+
"computer-use",
|
|
47
|
+
"coding-agent",
|
|
41
48
|
"remote-access",
|
|
42
49
|
"server-management",
|
|
50
|
+
"developer-tools",
|
|
43
51
|
"infrastructure",
|
|
44
52
|
"devops",
|
|
53
|
+
"self-hosted",
|
|
45
54
|
"linux",
|
|
55
|
+
"macos",
|
|
56
|
+
"windows",
|
|
46
57
|
"chatgpt",
|
|
47
|
-
"claude"
|
|
58
|
+
"claude",
|
|
59
|
+
"grok",
|
|
60
|
+
"qwen"
|
|
48
61
|
],
|
|
49
62
|
"author": "Amir Ali Manzar (https://amiralimanzar.ir)",
|
|
50
63
|
"license": "MIT",
|