dsh-mobile 0.3.4 → 0.3.6

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 CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  Notable changes to DSH Mobile are recorded here. GitHub Releases remain the source for downloadable packages and complete generated commit notes.
4
4
 
5
+ ## 0.3.6 - 2026-09-02
6
+
7
+ - Remove the fixed DeepSeek Harness version allowlist from plugin startup and npm peer metadata. A compatible future DSH release can now load without waiting for DSH Mobile to enumerate its exact prerelease version.
8
+ - Verify the mobile frontend and trust contracts against DSH 0.1.2-alpha.3 and 0.1.2-alpha.4, while retaining the upstream-source CI gate that rejects actual interface changes instead of version-number changes.
9
+ - Keep the pairing protocol and Android behavior unchanged; existing 0.3.3-0.3.5 apps and paired devices remain compatible.
10
+
11
+ ## 0.3.5 - 2026-09-01
12
+
13
+ - Fix [#26](https://github.com/saya-ch/dsh-mobile/issues/26): prevent mobile startup from remaining on “Loading plugins” over LAN or remote access when DSH sends the WebSocket upgrade response and initial snapshot together. The gateway now preserves that snapshot without relaxing its 16 KiB response-header limit. Thanks @oliverwan97 for the detailed report.
14
+
5
15
  ## 0.3.4 - 2026-08-31
6
16
 
7
17
  - Support DeepSeek Harness 0.1.2-alpha.2, including its remote-backed settings dependencies. Initialize authenticated mobile trust before the API gateway caches Host facts, while retaining support for earlier declared DSH versions.
package/README.en.md CHANGED
@@ -19,11 +19,15 @@
19
19
 
20
20
  > DSH Mobile is a DeepSeek Harness community plugin; the native app supports Android only.
21
21
  >
22
- > **0.3.x updates**: connection diagnostics, image attachments, self-hosted FRP, and plugin updates; improved reconnection, mobile layouts, localization, extension hot reload, and compatibility with DSH Desktop and usage plugins. [Details and acknowledgements](CHANGELOG.md).
22
+ > **0.3.6 update**: remove the exact DSH version allowlist and verify compatibility with 0.1.2-alpha.3/alpha.4. Future releases with compatible interfaces are no longer blocked only because their version is new. [Details](CHANGELOG.md).
23
23
  >
24
- > **Upgrade reminder**: the plugin is evolving rapidly; keep it and the app updated together. DSH 0.1.2-alpha.2 requires Mobile plugin 0.3.4 or later. [Compatibility notes](#compatibility).
24
+ > **Upgrade reminder**: use Mobile plugin 0.3.6 or later with DSH 0.1.2-alpha.3/alpha.4. Existing 0.3.3-0.3.5 apps and pairings remain valid. [Compatibility notes](#compatibility).
25
25
 
26
- <p align="center"><a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.4/dsh-mobile-android-v0.3.4.apk"><strong>Download Android app 0.3.4</strong></a> · <a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.4">Release notes and checksums</a></p>
26
+ <p align="center">
27
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.6/dsh-mobile-android-v0.3.6.apk"><img src="assets/brand/app-icon-rounded.svg" alt="DSH Mobile Android app icon" width="72" height="72"></a><br>
28
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.6/dsh-mobile-android-v0.3.6.apk"><strong>Download Android app 0.3.6</strong></a><br>
29
+ <sub><a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.6">Release notes and checksums</a></sub>
30
+ </p>
27
31
 
28
32
  DSH Mobile is a DeepSeek Harness plugin that lets a mobile browser or the Android app connect over a protected LAN or an optional Tailscale Funnel, cpolar, or self-hosted FRP remote path. Local and remote access keep the same sessions, Workspaces, messages, and tools while using separate switches and paired-device stores without modifying DeepSeek Harness source.
29
33
 
@@ -186,10 +190,12 @@ See [SECURITY.md](SECURITY.md).
186
190
 
187
191
  ## Compatibility
188
192
 
189
- Use Mobile plugin 0.3.4 with DSH 0.1.2-alpha.2; plugin and app 0.3.2 or later are recommended for DSH 0.1.2-alpha.1. Plugin 0.3.4 remains compatible with existing 0.3.3 apps without re-pairing. Earlier apps use a different status-bar strategy, so updating both is recommended. App 0.1.3 or earlier requires reinstalling and pairing again.
193
+ DSH Mobile 0.3.6 no longer blocks startup by exact DSH version and has verified the mobile frontend and connection interfaces in DSH 0.1.2-alpha.3/alpha.4. Existing 0.3.3-0.3.5 apps do not need re-pairing; the 0.3.6 Android build changes version metadata only. Earlier apps use a different status-bar strategy, so updating both is recommended. App 0.1.3 or earlier requires reinstalling and pairing again.
190
194
 
191
195
  | DSH Mobile | Verified DeepSeek Harness releases |
192
196
  | --- | --- |
197
+ | `0.3.6` | `0.1.0-rc.5`, `rc.6`, `rc.7`, `0.1.1-rc.2`, and `0.1.2-alpha.1` through `alpha.4`; unlisted versions are no longer rejected by version alone |
198
+ | `0.3.5` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1`, `0.1.2-alpha.2` |
193
199
  | `0.3.4` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1`, `0.1.2-alpha.2` |
194
200
  | `0.3.3` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1` |
195
201
  | `0.3.2` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1` |
@@ -200,7 +206,7 @@ Use Mobile plugin 0.3.4 with DSH 0.1.2-alpha.2; plugin and app 0.3.2 or later ar
200
206
  | `0.2.0` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2` |
201
207
  | `0.1.4` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2` |
202
208
 
203
- At startup, the plugin verifies the DSH Host version and the frontend dependencies required by the mobile layout; an unverified release fails with a clear error instead of serving a broken page. CI also tracks the DSH main branch layout contract. If a DSH upgrade reports an incompatibility, update DSH Mobile first.
209
+ The plugin no longer uses a runtime version allowlist. CI continuously checks the frontend, connection, and trust interfaces used from the DSH main branch, so adaptation is required only when those interfaces actually change. If a future DSH update causes a real display or connection failure, update DSH Mobile and include diagnostics in the report.
204
210
 
205
211
  0.3.4 fixes duplicate directory-picker registration in Windows [DSH Desktop](https://github.com/anywhere-labs/dsh-desktop). It reuses the desktop host's in-page directory browser; standalone Web launches still let phones select workspaces on the computer. Mobile access through Desktop requires compatibility mode and browser access enabled, with Mobile's upstream address matching Desktop's listening port.
206
212
 
package/README.md CHANGED
@@ -26,11 +26,15 @@
26
26
 
27
27
  > DSH Mobile 是 DeepSeek Harness 社区插件,原生 App 仅支持 Android。
28
28
  >
29
- > **0.3.x 更新**:新增连接诊断、图片附件、自建 FRP 和插件更新入口,优化重连、移动布局、多语言与扩展热更新,并完善 DSH Desktop 及用量插件兼容。[详细记录与致谢](CHANGELOG.md)。
29
+ > **0.3.6 更新**:取消 DSH 精确版本白名单,已验证兼容 0.1.2-alpha.3/alpha.4;今后接口兼容的新版本不会再仅因版本号而阻止插件启动。[详细记录](CHANGELOG.md)。
30
30
  >
31
- > **升级提醒**:插件仍在快速迭代,建议与 App 同步更新;DSH 0.1.2-alpha.2 需使用 Mobile 插件 0.3.4 或更高版本。[兼容说明](#兼容性)。
31
+ > **升级提醒**:DSH 0.1.2-alpha.3/alpha.4 请使用 Mobile 插件 0.3.6 或更高版本;现有 0.3.3-0.3.5 App 与配对无需重建。[兼容说明](#兼容性)。
32
32
 
33
- <p align="center"><a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.4/dsh-mobile-android-v0.3.4.apk"><strong>下载 Android App 0.3.4</strong></a> · <a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.4">版本说明与校验文件</a></p>
33
+ <p align="center">
34
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.6/dsh-mobile-android-v0.3.6.apk"><img src="assets/brand/app-icon-rounded.svg" alt="DSH Mobile 安卓应用图标" width="72" height="72"></a><br>
35
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.6/dsh-mobile-android-v0.3.6.apk"><strong>下载 Android App 0.3.6</strong></a><br>
36
+ <sub><a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.6">版本说明与校验文件</a></sub>
37
+ </p>
34
38
 
35
39
  DSH Mobile 是一个 DeepSeek Harness 插件,让手机浏览器或 Android App 通过局域网,或可选的 Tailscale Funnel、cpolar、自建 FRP 远程通道连接电脑,继续使用同一份会话、工作区、消息和工具。局域网与远程访问分别启停、分别管理设备,且都不修改 DeepSeek Harness 源码。
36
40
 
@@ -195,10 +199,12 @@ flowchart LR
195
199
 
196
200
  ## 兼容性
197
201
 
198
- DSH 0.1.2-alpha.2 需搭配 Mobile 插件 0.3.4;DSH 0.1.2-alpha.1 建议搭配插件与 App 0.3.2 或更高版本。0.3.4 插件兼容现有 0.3.3 App,无需重新配对。更早的 App 使用不同的状态栏策略,建议同步升级;App 0.1.3 及更早版本需卸载重装并重新配对。
202
+ DSH Mobile 0.3.6 不再按 DSH 精确版本号阻止启动,并已验证 DSH 0.1.2-alpha.3/alpha.4 的移动前端与连接接口。现有 0.3.3-0.3.5 App 无需重新配对;0.3.6 Android App 仅同步版本信息,功能行为不变。更早的 App 使用不同的状态栏策略,建议同步升级;App 0.1.3 及更早版本需卸载重装并重新配对。
199
203
 
200
204
  | DSH Mobile | 已验证的 DeepSeek Harness |
201
205
  | ------------ | ------------------------------------------------------------------------- |
206
+ | `0.3.6` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1` 至 `alpha.4`;未列版本不再仅因版本号被拒绝 |
207
+ | `0.3.5` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1`、`0.1.2-alpha.2` |
202
208
  | `0.3.4` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1`、`0.1.2-alpha.2` |
203
209
  | `0.3.3` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1` |
204
210
  | `0.3.2` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1` |
@@ -209,7 +215,7 @@ DSH 0.1.2-alpha.2 需搭配 Mobile 插件 0.3.4;DSH 0.1.2-alpha.1 建议搭配
209
215
  | `0.2.0` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2` |
210
216
  | `0.1.4` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2` |
211
217
 
212
- 插件启动时会检查 DSH Host 版本和移动布局所需的前端依赖,遇到未经验证的版本会直接报错而不是带病启动;CI 也会持续跟踪 DSH 主分支的布局契约。升级 DSH 后如遇兼容提示,请先升级 DSH Mobile
218
+ 插件不再使用运行时版本白名单;CI 会持续检查 DSH 主分支真实使用的前端、连接与信任接口,只有接口变化才需要适配。未来 DSH 更新若出现实际显示或连接异常,请升级 DSH Mobile 并提交诊断信息。
213
219
 
214
220
  0.3.4 修复 Windows [DSH Desktop](https://github.com/anywhere-labs/dsh-desktop) 的目录选择器重复注册问题:复用桌面宿主的页面内目录浏览器,普通 Web 启动仍保留手机选择电脑工作区的能力。Desktop 连接手机时需使用兼容模式并启用浏览器访问,Mobile 的上游地址应与 Desktop 的监听端口一致。
215
221
 
package/lib/index.d.mts CHANGED
@@ -310,15 +310,6 @@ declare function parseControlFile(value: unknown): string;
310
310
  /** Parse configuration and reject unsafe topology, credential, and resource combinations. */
311
311
  declare function parseGatewayConfig(raw: unknown): ResolvedGatewayConfig;
312
312
  //#endregion
313
- //#region src/compatibility.d.ts
314
- /** DeepSeek Harness prereleases verified by this plugin release. */
315
- declare const SUPPORTED_DSH_VERSIONS: readonly ["0.1.0-rc.5", "0.1.0-rc.6", "0.1.0-rc.7", "0.1.1-rc.2", "0.1.2-alpha.1", "0.1.2-alpha.2"];
316
- /**
317
- * Reject an unverified DeepSeek Harness Host before opening the LAN listener.
318
- * @param version - Version reported by the installed DSH WebServer package.
319
- */
320
- declare function assertSupportedDshVersion(version: unknown): asserts version is typeof SUPPORTED_DSH_VERSIONS[number];
321
- //#endregion
322
313
  //#region src/control.d.ts
323
314
  /** Versioned durable preference for the resident mobile-access runtime. */
324
315
  interface MobileAccessControlState {
@@ -861,5 +852,5 @@ declare const inject: string[];
861
852
  /** Mount the resident control route and its optional authenticated LAN gateway. */
862
853
  declare function apply(ctx: Context, config: PluginConfig): Promise<void>;
863
854
  //#endregion
864
- export { AUTH_PREFIX, AccessController, type AccessControllerOptions, AccessError, type AuthoritySpec, BoundedRateLimiter, CSRF_COOKIE, CSRF_HEADER, Config, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, FRP_VHOST_HTTP_PORT, DEVICE_COOKIE, type DeviceSnapshot, type DeviceStore, type DeviceSummary, type DisabledTlsConfig, EXTENSION_LIMITS, FRP_COMPONENT_RELEASES, FrpComponentManager, type FrpComponentStatus, FrpConfigStore, type FrpConfigurationStatus, FrpController, type FrpControllerOptions, type FrpSettings, type FrpState, type FrpStatus, JsonDeviceStore, JsonMobileAccessControlStore, JsonRemoteProviderStore, LOCAL_ADMIN_PREFIX, type LocalExtensionManifest, MemoryDeviceStore, type MobileAccessControlState, type MobileAccessControlStore, MobileAccessGateway, MobileAccessGatewayController, type MobileAccessService as MobileAccessRegistry, MobileAccessService, type MobileAccessRuntime, type MobileActionContext, type MobileExtensionClientEntry, type MobileExtensionDefinition, MobileExtensionError, type MobileExtensionManifest, type MobileExtensionStatus, type MobileHostAction, type MobileHostRoute, type MobileRouteRequest, type MobileRouteResponse, type PairingResult, type ParsedCidr, type PluginConfig, type ProvidedTlsConfig, type RemoteProvider, type RemoteProviderController, type RemoteProviderState, type RemoteProviderStatus, type RenewalResult, RequestTrustPolicy, type ResolvedGatewayConfig, SESSION_COOKIE, SUPPORTED_DSH_VERSIONS, type SessionAuthorization, type StoredDevice, type TlsConfig, WS_PATHS, addressAllowed, apply, assertExtensionId, assertSupportedDshVersion, configuredRemoteProvider, createFrpServerTemplate, createFrpcToml, createMobileAccessService, createRestrictedFrpServerTemplate, inject, isLoopbackAddress, name, parseAuthority, parseCidr, parseControlFile, parseDeviceSnapshot, parseExtensionManifest, parseFrpSettings, parseGatewayConfig, parseMobileAccessControlState, parseRemoteProviderState, resolveAuthority, rewriteMobileIndex, validateFrpPublicOrigin, validateFrpServerAddress, validateFrpServerPort, validateFrpToken };
855
+ export { AUTH_PREFIX, AccessController, type AccessControllerOptions, AccessError, type AuthoritySpec, BoundedRateLimiter, CSRF_COOKIE, CSRF_HEADER, Config, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, FRP_VHOST_HTTP_PORT, DEVICE_COOKIE, type DeviceSnapshot, type DeviceStore, type DeviceSummary, type DisabledTlsConfig, EXTENSION_LIMITS, FRP_COMPONENT_RELEASES, FrpComponentManager, type FrpComponentStatus, FrpConfigStore, type FrpConfigurationStatus, FrpController, type FrpControllerOptions, type FrpSettings, type FrpState, type FrpStatus, JsonDeviceStore, JsonMobileAccessControlStore, JsonRemoteProviderStore, LOCAL_ADMIN_PREFIX, type LocalExtensionManifest, MemoryDeviceStore, type MobileAccessControlState, type MobileAccessControlStore, MobileAccessGateway, MobileAccessGatewayController, type MobileAccessService as MobileAccessRegistry, MobileAccessService, type MobileAccessRuntime, type MobileActionContext, type MobileExtensionClientEntry, type MobileExtensionDefinition, MobileExtensionError, type MobileExtensionManifest, type MobileExtensionStatus, type MobileHostAction, type MobileHostRoute, type MobileRouteRequest, type MobileRouteResponse, type PairingResult, type ParsedCidr, type PluginConfig, type ProvidedTlsConfig, type RemoteProvider, type RemoteProviderController, type RemoteProviderState, type RemoteProviderStatus, type RenewalResult, RequestTrustPolicy, type ResolvedGatewayConfig, SESSION_COOKIE, type SessionAuthorization, type StoredDevice, type TlsConfig, WS_PATHS, addressAllowed, apply, assertExtensionId, configuredRemoteProvider, createFrpServerTemplate, createFrpcToml, createMobileAccessService, createRestrictedFrpServerTemplate, inject, isLoopbackAddress, name, parseAuthority, parseCidr, parseControlFile, parseDeviceSnapshot, parseExtensionManifest, parseFrpSettings, parseGatewayConfig, parseMobileAccessControlState, parseRemoteProviderState, resolveAuthority, rewriteMobileIndex, validateFrpPublicOrigin, validateFrpServerAddress, validateFrpServerPort, validateFrpToken };
865
856
  //# sourceMappingURL=index.d.mts.map
package/lib/index.mjs CHANGED
@@ -703,25 +703,6 @@ function parseGatewayConfig(raw) {
703
703
  });
704
704
  }
705
705
  //#endregion
706
- //#region src/compatibility.ts
707
- /** DeepSeek Harness prereleases verified by this plugin release. */
708
- const SUPPORTED_DSH_VERSIONS = Object.freeze([
709
- "0.1.0-rc.5",
710
- "0.1.0-rc.6",
711
- "0.1.0-rc.7",
712
- "0.1.1-rc.2",
713
- "0.1.2-alpha.1",
714
- "0.1.2-alpha.2"
715
- ]);
716
- /**
717
- * Reject an unverified DeepSeek Harness Host before opening the LAN listener.
718
- * @param version - Version reported by the installed DSH WebServer package.
719
- */
720
- function assertSupportedDshVersion(version) {
721
- if (typeof version === "string" && SUPPORTED_DSH_VERSIONS.some((candidate) => candidate === version)) return;
722
- throw new Error(`unsupported DeepSeek Harness version ${typeof version === "string" ? version : "(unknown)"}; supported versions: ${SUPPORTED_DSH_VERSIONS.join(", ")}`);
723
- }
724
- //#endregion
725
706
  //#region src/private-file.ts
726
707
  const execFile$3 = promisify(execFile);
727
708
  let userSidTask;
@@ -3780,12 +3761,15 @@ var MobileAccessGateway = class {
3780
3761
  };
3781
3762
  const data = (chunk) => {
3782
3763
  buffer = Buffer.concat([buffer, chunk]);
3783
- if (buffer.length > MAX_HEADER_BYTES) {
3764
+ const end = buffer.indexOf("\r\n\r\n");
3765
+ if (end < 0) {
3766
+ if (buffer.length >= MAX_HEADER_BYTES) failed(/* @__PURE__ */ new Error("upstream WebSocket headers are too large"));
3767
+ return;
3768
+ }
3769
+ if (end + 4 > MAX_HEADER_BYTES) {
3784
3770
  failed(/* @__PURE__ */ new Error("upstream WebSocket headers are too large"));
3785
3771
  return;
3786
3772
  }
3787
- const end = buffer.indexOf("\r\n\r\n");
3788
- if (end < 0) return;
3789
3773
  cleanup();
3790
3774
  const lines = buffer.subarray(0, end).toString("latin1").split("\r\n");
3791
3775
  if (lines.shift() !== "HTTP/1.1 101 Switching Protocols") {
@@ -7224,9 +7208,14 @@ function upstreamAuthenticatedUrl(ctx, upstreamOrigin) {
7224
7208
  return typeof connection?.authenticatedUrl === "function" ? connection.authenticatedUrl(upstreamOrigin.origin) : void 0;
7225
7209
  }
7226
7210
  function installedDshVersion() {
7227
- const manifest = createRequire(import.meta.url)("@deepseek-ai/dsh-host-webserver/package.json");
7228
- if (manifest === null || typeof manifest !== "object") return void 0;
7229
- return manifest.version;
7211
+ try {
7212
+ const manifest = createRequire(import.meta.url)("@deepseek-ai/dsh-host-webserver/package.json");
7213
+ if (manifest === null || typeof manifest !== "object") return "unknown";
7214
+ const version = manifest.version;
7215
+ return typeof version === "string" && version !== "" ? version : "unknown";
7216
+ } catch {
7217
+ return "unknown";
7218
+ }
7230
7219
  }
7231
7220
  function mapAdminError(error) {
7232
7221
  if (error instanceof HttpError) return error;
@@ -7372,7 +7361,6 @@ function remoteControlPayload(provider, status, gateway, providerStatuses, cpola
7372
7361
  /** Mount the resident control route and its optional authenticated LAN gateway. */
7373
7362
  async function apply(ctx, config) {
7374
7363
  const dshVersion = installedDshVersion();
7375
- assertSupportedDshVersion(dshVersion);
7376
7364
  const loaded = await loadSetup(config);
7377
7365
  const mobileAccess = createMobileAccessService(ctx);
7378
7366
  const template = loopbackTemplate(loaded);
@@ -7752,6 +7740,6 @@ async function apply(ctx, config) {
7752
7740
  }, "dsh-mobile: independent LAN and selectable remote providers with /mobile command");
7753
7741
  }
7754
7742
  //#endregion
7755
- export { AUTH_PREFIX, AccessController, AccessError, BoundedRateLimiter, CSRF_COOKIE, CSRF_HEADER, Config, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, FRP_VHOST_HTTP_PORT, DEVICE_COOKIE, EXTENSION_LIMITS, FRP_COMPONENT_RELEASES, FrpComponentManager, FrpConfigStore, FrpController, JsonDeviceStore, JsonMobileAccessControlStore, JsonRemoteProviderStore, LOCAL_ADMIN_PREFIX, MemoryDeviceStore, MobileAccessGateway, MobileAccessGatewayController, MobileAccessService, MobileExtensionError, RequestTrustPolicy, SESSION_COOKIE, SUPPORTED_DSH_VERSIONS, WS_PATHS, addressAllowed, apply, assertExtensionId, assertSupportedDshVersion, configuredRemoteProvider, createFrpServerTemplate, createFrpcToml, createMobileAccessService, createRestrictedFrpServerTemplate, inject, isLoopbackAddress, name, parseAuthority, parseCidr, parseControlFile, parseDeviceSnapshot, parseExtensionManifest, parseFrpSettings, parseGatewayConfig, parseMobileAccessControlState, parseRemoteProviderState, resolveAuthority, rewriteMobileIndex, validateFrpPublicOrigin, validateFrpServerAddress, validateFrpServerPort, validateFrpToken };
7743
+ export { AUTH_PREFIX, AccessController, AccessError, BoundedRateLimiter, CSRF_COOKIE, CSRF_HEADER, Config, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, FRP_VHOST_HTTP_PORT, DEVICE_COOKIE, EXTENSION_LIMITS, FRP_COMPONENT_RELEASES, FrpComponentManager, FrpConfigStore, FrpController, JsonDeviceStore, JsonMobileAccessControlStore, JsonRemoteProviderStore, LOCAL_ADMIN_PREFIX, MemoryDeviceStore, MobileAccessGateway, MobileAccessGatewayController, MobileAccessService, MobileExtensionError, RequestTrustPolicy, SESSION_COOKIE, WS_PATHS, addressAllowed, apply, assertExtensionId, configuredRemoteProvider, createFrpServerTemplate, createFrpcToml, createMobileAccessService, createRestrictedFrpServerTemplate, inject, isLoopbackAddress, name, parseAuthority, parseCidr, parseControlFile, parseDeviceSnapshot, parseExtensionManifest, parseFrpSettings, parseGatewayConfig, parseMobileAccessControlState, parseRemoteProviderState, resolveAuthority, rewriteMobileIndex, validateFrpPublicOrigin, validateFrpServerAddress, validateFrpServerPort, validateFrpToken };
7756
7744
 
7757
7745
  //# sourceMappingURL=index.mjs.map