dsh-mobile 0.6.2 → 0.6.4

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/CONTRIBUTORS.md +19 -4
  3. package/README.en.md +16 -8
  4. package/README.md +16 -8
  5. package/SECURITY.md +3 -2
  6. package/THIRD_PARTY_NOTICES.md +29 -1
  7. package/apps/mobile/README.md +25 -5
  8. package/apps/mobile/release.json +3 -3
  9. package/cordis.patch.yml +7 -3
  10. package/docs/ATTACH_EXISTING_FRPS.en.md +1 -1
  11. package/docs/ATTACH_EXISTING_FRPS.md +2 -2
  12. package/docs/CADDY_MANAGED.en.md +15 -1
  13. package/docs/CADDY_MANAGED.md +15 -1
  14. package/docs/CLOUDFLARE_TUNNEL.en.md +2 -2
  15. package/docs/CLOUDFLARE_TUNNEL.md +3 -3
  16. package/docs/EXTENSION_WORKERS.en.md +49 -0
  17. package/docs/EXTENSION_WORKERS.md +49 -0
  18. package/docs/MOBILE_COMPOSER_TOOLBAR.en.md +27 -0
  19. package/docs/MOBILE_COMPOSER_TOOLBAR.md +27 -0
  20. package/docs/README.md +2 -0
  21. package/docs/SELF_HOSTED_FRP.en.md +4 -2
  22. package/docs/SELF_HOSTED_FRP.md +4 -2
  23. package/docs/SLOW_CONNECTIONS.en.md +6 -0
  24. package/docs/SLOW_CONNECTIONS.md +6 -0
  25. package/docs/TRUSTED_NETWORKS.en.md +1 -1
  26. package/docs/TRUSTED_NETWORKS.md +1 -1
  27. package/lib/cli.js +140 -19
  28. package/lib/cli.js.map +1 -1
  29. package/lib/client.js +1264 -106
  30. package/lib/client.js.map +1 -1
  31. package/lib/extension-worker-runtime.mjs +1646 -0
  32. package/lib/extension-worker-runtime.mjs.map +1 -0
  33. package/lib/index.d.mts +209 -12
  34. package/lib/index.mjs +2152 -811
  35. package/lib/index.mjs.map +1 -1
  36. package/lib/mobile-layout.js.map +1 -1
  37. package/package.json +17 -6
  38. package/packages/question-fixes/LICENSE +201 -0
  39. package/packages/question-fixes/package.json +9 -2
  40. package/node_modules/dsh-mobile-question-fixes/lib/client.js +0 -78
  41. package/node_modules/dsh-mobile-question-fixes/lib/client.js.map +0 -1
  42. package/node_modules/dsh-mobile-question-fixes/lib/index.mjs +0 -14
  43. package/node_modules/dsh-mobile-question-fixes/lib/index.mjs.map +0 -1
  44. package/node_modules/dsh-mobile-question-fixes/package.json +0 -25
package/lib/index.d.mts CHANGED
@@ -229,6 +229,37 @@ export declare class RequestTrustPolicy {
229
229
  canonicalOrigin(header: string | undefined): string | undefined;
230
230
  }
231
231
  //#endregion
232
+ //#region src/extension-worker-config.d.ts
233
+ /** Operator-owned limits for opt-in local extension worker execution. */
234
+ interface HostExecutionConfig {
235
+ readonly mode?: 'in-process' | 'worker';
236
+ /** Apply worker mode only to these exact local ids; omitted selects every local host. */
237
+ readonly extensions?: readonly string[] | undefined;
238
+ readonly maxWorkers?: number;
239
+ readonly maxRegistrations?: number;
240
+ readonly maxOldGenerationSizeMb?: number;
241
+ readonly maxYoungGenerationSizeMb?: number;
242
+ readonly stackSizeMb?: number;
243
+ readonly activationTimeoutMs?: number;
244
+ readonly operationTimeoutMs?: number;
245
+ readonly cancelGraceMs?: number;
246
+ readonly streamCancelGraceMs?: number;
247
+ readonly disposeGraceMs?: number;
248
+ readonly resultMaxBytes?: number;
249
+ readonly streamWindowBytes?: number;
250
+ readonly streamChunkBytes?: number;
251
+ readonly streamAggregateBytes?: number;
252
+ readonly logWindowMs?: number;
253
+ readonly logMessagesPerWindow?: number;
254
+ readonly logMessageBytes?: number;
255
+ }
256
+ /** Complete settings passed to each owned worker; Node limits do not isolate filesystem access. */
257
+ interface ResolvedHostExecutionConfig extends Required<Omit<HostExecutionConfig, 'extensions'>> {
258
+ readonly extensions: readonly string[] | undefined;
259
+ }
260
+ /** Resolve configuration once; reject malformed modes, ids and incoherent stream windows. */
261
+ export declare function resolveHostExecution(raw: unknown): ResolvedHostExecutionConfig;
262
+ //#endregion
232
263
  //#region src/config.d.ts
233
264
  /** Optional compression for exact, already authorized WebSocket paths. */
234
265
  interface WebSocketCompressionConfig {
@@ -264,6 +295,8 @@ interface DisabledTlsConfig {
264
295
  type TlsConfig = ProvidedTlsConfig | DisabledTlsConfig;
265
296
  /** Operator-facing plugin configuration. */
266
297
  interface PluginConfig {
298
+ /** Local host execution mode and owned worker budgets; defaults to in-process. */
299
+ hostExecution?: HostExecutionConfig;
267
300
  /** Optional setup JSON written by the packaged CLI. */
268
301
  setupFile?: string;
269
302
  /** Preferred HTTPS origin used to derive the public authority and listener port. */
@@ -319,6 +352,7 @@ interface PluginConfig {
319
352
  }
320
353
  /** Resolved, validated security and resource limits. */
321
354
  interface ResolvedGatewayConfig {
355
+ readonly hostExecution: ResolvedHostExecutionConfig;
322
356
  readonly listenHost: string;
323
357
  readonly listenPort: number;
324
358
  readonly upstreamOrigin: URL;
@@ -431,8 +465,8 @@ export declare class JsonMobileAccessControlStore implements MobileAccessControl
431
465
  private readonly file;
432
466
  private readonly initiallyEnabled;
433
467
  constructor(file: string, initiallyEnabled: boolean);
434
- /** Avoid writing an absent already-disabled state without changing recovery of existing files. */
435
- disableIfPresent(): Promise<void>;
468
+ /** Disable an existing preference, returning the state only after private-file preparation completes. */
469
+ disableIfPresent(): Promise<MobileAccessControlState>;
436
470
  load(): Promise<MobileAccessControlState>;
437
471
  save(state: MobileAccessControlState): Promise<void>;
438
472
  }
@@ -519,6 +553,117 @@ export declare class WebSocketPathStore {
519
553
  replace(paths: readonly string[]): Promise<string[]>;
520
554
  }
521
555
  //#endregion
556
+ //#region src/extension-worker-protocol.d.ts
557
+ /** Metadata for one action, crossing the boundary without its functions. */
558
+ interface WorkerActionMetadata {
559
+ readonly name: string;
560
+ readonly timeoutMs?: number;
561
+ }
562
+ /** Metadata for one route, crossing the boundary without its functions. */
563
+ interface WorkerRouteMetadata {
564
+ readonly method: string;
565
+ readonly path: string;
566
+ readonly kind?: 'exact' | 'prefix';
567
+ readonly timeoutMs?: number;
568
+ }
569
+ //#endregion
570
+ //#region src/extension-worker.d.ts
571
+ /** JSON bytes serialized and size-checked inside the worker. */
572
+ declare class PreparedJsonResult {
573
+ readonly bytes: Buffer;
574
+ constructor(bytes: Buffer);
575
+ }
576
+ /** Worker context is logger-only, never a Cordis Context or service proxy. */
577
+ type WorkerParentLogger = Record<'debug' | 'info' | 'warn' | 'error', (...args: unknown[]) => void>;
578
+ /** Every thread counts until actual exit, including activation, retirement and termination. */
579
+ declare class ExtensionWorkerBudget {
580
+ readonly maximum: number;
581
+ private count;
582
+ constructor(maximum: number);
583
+ get current(): number;
584
+ reserve(): () => void;
585
+ }
586
+ interface ExtensionWorkerHostOptions {
587
+ readonly workerModule: string | URL;
588
+ readonly hostFile: string;
589
+ readonly manifest: LocalExtensionManifest;
590
+ readonly generation: string;
591
+ readonly logger: WorkerParentLogger;
592
+ readonly activationTimeoutMs?: number;
593
+ readonly limits?: HostExecutionConfig;
594
+ readonly budget?: ExtensionWorkerBudget;
595
+ readonly onUnavailable?: (error: MobileExtensionError) => void;
596
+ }
597
+ interface ExtensionWorkerActivation {
598
+ readonly runtimeId: string;
599
+ readonly actions: readonly WorkerActionMetadata[];
600
+ readonly routes: readonly WorkerRouteMetadata[];
601
+ }
602
+ declare class ExtensionWorkerHost {
603
+ private readonly options;
604
+ private readonly limits;
605
+ private readonly worker;
606
+ private readonly pending;
607
+ private readonly routePending;
608
+ private readonly streams;
609
+ private readonly detachedRoutes;
610
+ private readonly executionGrace;
611
+ private readonly exited;
612
+ private readonly unavailableController;
613
+ private termination;
614
+ private activation;
615
+ private dead;
616
+ private disposed;
617
+ private maxBufferedBytes;
618
+ private cancelledStreams;
619
+ private logWindowStart;
620
+ private logCount;
621
+ private stdioBytes;
622
+ private stdioResume;
623
+ constructor(options: ExtensionWorkerHostOptions);
624
+ /** A stopped generation never silently respawns. */
625
+ available(): boolean;
626
+ /** Activate once and receive executable-free registration metadata. */
627
+ activate(): Promise<ExtensionWorkerActivation>;
628
+ actionMetadata(): readonly WorkerActionMetadata[];
629
+ routeMetadata(): readonly WorkerRouteMetadata[];
630
+ /** Underlying action: settles only when execution completes or the thread exits. */
631
+ invokeExecution(action: string, input: unknown, caller: {
632
+ readonly signal: AbortSignal;
633
+ readonly deviceId: string;
634
+ }): Promise<PreparedJsonResult>;
635
+ /** Direct caller budget; service dispatch observes invokeExecution separately. */
636
+ invoke(action: string, input: unknown, caller: {
637
+ readonly signal: AbortSignal;
638
+ readonly deviceId: string;
639
+ }): Promise<PreparedJsonResult>;
640
+ /** Underlying route: late streams are cancelled and observed to confirmed end. */
641
+ handleRouteExecution(routeIndex: number, request: MobileRouteRequest): Promise<MobileRouteResponse>;
642
+ /** Handler budget ends at stream-start; stream lifetime remains cancellation-bound. */
643
+ handleRoute(routeIndex: number, request: MobileRouteRequest): Promise<MobileRouteResponse>;
644
+ private callerBudget;
645
+ streamStats(): {
646
+ readonly activeStreams: number;
647
+ readonly maxBufferedBytes: number;
648
+ readonly cancelledStreams: number;
649
+ readonly bufferedBytes: number;
650
+ };
651
+ /** Graceful effects cleanup followed by termination; completion requires actual exit. */
652
+ dispose(): Promise<void>;
653
+ whenExited(): Promise<void>;
654
+ /** Stop admission now, retain execution/budget ownership until confirmed thread exit. */
655
+ terminate(reason: string): Promise<void>;
656
+ private unavailable;
657
+ private markUnavailable;
658
+ private armExecutionGrace;
659
+ private settleExecutionGrace;
660
+ private post;
661
+ private handleMessage;
662
+ private totalUnacked;
663
+ private openStream;
664
+ private cancelStream;
665
+ }
666
+ //#endregion
522
667
  //#region src/extensions.d.ts
523
668
  /** Maximum sizes enforced at the local-extension filesystem boundary. */
524
669
  export declare const EXTENSION_LIMITS: Readonly<{
@@ -625,6 +770,26 @@ interface ActiveLocalExtension {
625
770
  readonly controller: AbortController;
626
771
  readonly cleanups: readonly (() => void | Promise<void>)[];
627
772
  readonly digest: string;
773
+ readonly worker?: ExtensionWorkerHost;
774
+ }
775
+ /** Local execution options; the packaged worker entry is used unless a test supplies an override. */
776
+ interface LocalExecutionOptions {
777
+ readonly hostExecution?: HostExecutionConfig & {
778
+ readonly workerModule?: string;
779
+ };
780
+ readonly workerBudget?: ExtensionWorkerBudget;
781
+ }
782
+ /** Worker-host API: logger-only context, with no Cordis services or registrations crossing threads. */
783
+ interface MobileWorkerHostApi {
784
+ readonly manifest: LocalExtensionManifest;
785
+ readonly context: {
786
+ readonly logger: WorkerParentLogger;
787
+ };
788
+ readonly schema: typeof z;
789
+ readonly signal: AbortSignal;
790
+ action(name: string, spec: MobileHostAction): void;
791
+ route(spec: MobileHostRoute): void;
792
+ effect(setup: () => void | (() => void | Promise<void>) | Promise<void | (() => void | Promise<void>)>): void;
628
793
  }
629
794
  /** Validate a stable extension id. */
630
795
  export declare function assertExtensionId(value: unknown): string;
@@ -647,6 +812,11 @@ export declare class MobileAccessService extends Service {
647
812
  private localRefreshAbort;
648
813
  private localLifecycle;
649
814
  private localClosed;
815
+ private localExecution;
816
+ private localExecutionKey;
817
+ private workerBudget;
818
+ private readonly disposal;
819
+ private readonly recoveries;
650
820
  constructor(ctx: Context);
651
821
  /** Register a normal Cordis extension and return an idempotent disposer. */
652
822
  registerExtension(definition: MobileExtensionDefinition): () => void;
@@ -659,6 +829,23 @@ export declare class MobileAccessService extends Service {
659
829
  manifest(): readonly MobileExtensionClientEntry[];
660
830
  /** Return loaded and failed local extension counts without exposing host errors. */
661
831
  status(): MobileExtensionStatus;
832
+ /** Local Host status does not reveal filesystem paths, credentials or extension errors. */
833
+ hostStatus(): {
834
+ readonly hosts: readonly {
835
+ readonly id: string;
836
+ readonly name: string;
837
+ readonly mode: 'worker' | 'in-process';
838
+ readonly state: 'ready' | 'unavailable';
839
+ readonly generation: string;
840
+ }[];
841
+ readonly limits: {
842
+ readonly maxWorkers: number;
843
+ readonly workers: number;
844
+ };
845
+ };
846
+ /** Explicitly replace one unavailable worker without replaying requests or changing its files. */
847
+ recoverExtension(id: string): Promise<void>;
848
+ private queueDisposal;
662
849
  /** Locate one active extension. */
663
850
  extension(id: string, generation?: string): MobileExtensionDefinition | ActiveLocalExtension | undefined;
664
851
  /** Return the active local generation signal for gateway cancellation wiring. */
@@ -683,7 +870,7 @@ export declare class MobileAccessService extends Service {
683
870
  /** Match one route and invoke it with a generation-bound abort signal. */
684
871
  route(id: string, method: string, pathname: string, request: MobileRouteRequest, generation?: string): Promise<MobileRouteResponse>;
685
872
  /** Start the local directory watcher; an absent directory is intentionally inert. */
686
- startLocal(root: string, context: Context): Promise<void>;
873
+ startLocal(root: string, context: Context, options?: LocalExecutionOptions): Promise<void>;
687
874
  /** Stop the watcher and abort every local host generation. */
688
875
  stopLocal(): Promise<void>;
689
876
  /** Refresh all local extensions atomically; failures keep the previous snapshot. */
@@ -942,6 +1129,7 @@ export declare class FrpComponentManager {
942
1129
  readonly componentStorage: string;
943
1130
  readonly logRoot: string;
944
1131
  private readonly stagingRoot;
1132
+ private readonly stateDirectory;
945
1133
  private readonly artifact;
946
1134
  private readonly fetchArtifact;
947
1135
  private readonly extractArtifact;
@@ -1146,6 +1334,7 @@ export declare function createFrpcToml(settings: FrpSettings, localPort: number,
1146
1334
  export declare function createFrpServerTemplate(settings: FrpSettings): string;
1147
1335
  /** Owns private FRP settings and generation-specific frpc configuration. */
1148
1336
  export declare class FrpConfigStore {
1337
+ private readonly ownedRoot;
1149
1338
  readonly stateRoot: string;
1150
1339
  readonly settingsFile: string;
1151
1340
  readonly runtimeConfigFile: string;
@@ -1159,7 +1348,7 @@ export declare class FrpConfigStore {
1159
1348
  readonly proxyName: string;
1160
1349
  private settingsValue;
1161
1350
  private errorCode;
1162
- constructor(stateDirectory: string, proxyName?: string);
1351
+ constructor(stateDirectory: string, proxyName?: string, ownedRoot?: string);
1163
1352
  /** Load private settings while rejecting links, oversized files, and unknown fields. */
1164
1353
  initialize(): Promise<void>;
1165
1354
  /**
@@ -1372,14 +1561,14 @@ export declare function frpIngressPaths(stateFile: string): FrpIngressPaths;
1372
1561
  * replaced silently. The leaf is re-signed when expiring or no longer valid for
1373
1562
  * the public IPv4, and the running gateway reloads it after a renewal check.
1374
1563
  */
1375
- export declare function ensureFrpIngressCertificate(settings: FrpSettings, stateFile: string, now?: number, expectedCaFingerprint?: string): Promise<FrpIngressCertificate>;
1564
+ export declare function ensureFrpIngressCertificate(settings: FrpSettings, stateFile: string, now?: number, expectedCaFingerprint?: string, ownedRoot?: string): Promise<FrpIngressCertificate>;
1376
1565
  /**
1377
1566
  * Build the read-only self-check payload shown in the desktop panel.
1378
1567
  *
1379
1568
  * No secret ever leaves this function: the CA is reported by fingerprint only,
1380
1569
  * and the token is never read.
1381
1570
  */
1382
- export declare function frpIngressSelfCheck(settings: FrpSettings, stateFile: string): Promise<FrpIngressSelfCheck>;
1571
+ export declare function frpIngressSelfCheck(settings: FrpSettings, stateFile: string, ownedRoot?: string): Promise<FrpIngressSelfCheck>;
1383
1572
  //#endregion
1384
1573
  //#region src/managed-setup.d.ts
1385
1574
  /** One host a server leaf must be valid for: an IP literal, a DNS name, or both. */
@@ -1423,7 +1612,12 @@ interface RemoteProviderStatus {
1423
1612
  }
1424
1613
  /** Lifecycle shared by selectable remote providers. */
1425
1614
  interface RemoteProviderController {
1426
- initialize(): Promise<void>;
1615
+ /**
1616
+ * Initialize from the current startup preparation, without retaining a permission-success cache.
1617
+ * @param initialState - Fresh state prepared by this controller's own store; omission reads that store.
1618
+ * @returns Completion of the normal provider initialization and optional startup.
1619
+ */
1620
+ initialize(initialState?: MobileAccessControlState): Promise<void>;
1427
1621
  gateway(): MobileAccessGateway | undefined;
1428
1622
  status(): RemoteProviderStatus;
1429
1623
  setEnabled(enabled: boolean): Promise<RemoteProviderStatus>;
@@ -1531,7 +1725,7 @@ export declare class FrpController implements RemoteProviderController {
1531
1725
  private ingressCertificateTimer;
1532
1726
  constructor(options: FrpControllerOptions);
1533
1727
  /** Restore the remembered FRP switch without changing LAN or other providers. */
1534
- initialize(): Promise<void>;
1728
+ initialize(initialState?: MobileAccessControlState): Promise<void>;
1535
1729
  /** Return the active FRP-backed DSH gateway. */
1536
1730
  gateway(): MobileAccessGateway | undefined;
1537
1731
  /** Return state safe for the desktop control UI. */
@@ -1599,11 +1793,12 @@ export declare function validateOriginAllowedCidrs(value: unknown, listenHost: s
1599
1793
  export declare function parseOriginSettings(value: unknown): OriginSettings;
1600
1794
  /** Owns only origin settings; shared paired-device storage is never removed. */
1601
1795
  export declare class OriginConfigStore {
1796
+ private readonly ownedRoot;
1602
1797
  readonly stateRoot: string;
1603
1798
  readonly settingsFile: string;
1604
1799
  private settingsValue;
1605
1800
  private errorCode;
1606
- constructor(stateDirectory: string);
1801
+ constructor(stateDirectory: string, ownedRoot?: string);
1607
1802
  initialize(): Promise<void>;
1608
1803
  status(): OriginConfigurationStatus;
1609
1804
  settings(): OriginSettings | undefined;
@@ -1724,6 +1919,7 @@ export declare class CloudflaredComponentManager {
1724
1919
  readonly stateRoot: string;
1725
1920
  readonly logRoot: string;
1726
1921
  private readonly stagingRoot;
1922
+ private readonly stateDirectory;
1727
1923
  private readonly platform;
1728
1924
  private readonly arch;
1729
1925
  private readonly release;
@@ -1803,11 +1999,12 @@ export declare function parseCloudflaredTunnelSettings(value: unknown): Cloudfla
1803
1999
  export declare function mergeSavedCloudflaredTunnelSettings(partial: Readonly<Record<string, unknown>>, saved: CloudflaredTunnelSettings | undefined): CloudflaredTunnelSettings;
1804
2000
  /** Owns the private cloudflared tunnel configuration for one DSH installation. */
1805
2001
  export declare class CloudflaredTunnelStore {
2002
+ private readonly ownedRoot;
1806
2003
  readonly stateRoot: string;
1807
2004
  readonly settingsFile: string;
1808
2005
  private settingsValue;
1809
2006
  private errorCode;
1810
- constructor(stateDirectory: string);
2007
+ constructor(stateDirectory: string, ownedRoot?: string);
1811
2008
  /** Load private settings while rejecting links, oversized files and unknown fields. */
1812
2009
  initialize(): Promise<void>;
1813
2010
  /** Return configuration metadata without exposing the connector token. */
@@ -1893,7 +2090,7 @@ export declare class CloudflaredController implements RemoteProviderController {
1893
2090
  private startupRounds;
1894
2091
  constructor(options: CloudflaredControllerOptions);
1895
2092
  /** Restore the remembered cloudflared switch independently from LAN and other providers. */
1896
- initialize(): Promise<void>;
2093
+ initialize(initialState?: MobileAccessControlState): Promise<void>;
1897
2094
  /** Return the active cloudflared-backed DSH gateway. */
1898
2095
  gateway(): MobileAccessGateway | undefined;
1899
2096
  /** Return state safe for the desktop control UI. */
@@ -2009,5 +2206,5 @@ export declare function originGatewayConfig(template: ResolvedGatewayConfig, set
2009
2206
  /** Mount the resident control route and its optional authenticated LAN gateway. */
2010
2207
  export declare function apply(ctx: Context, config: PluginConfig): Promise<void>;
2011
2208
  //#endregion
2012
- export { type AccessControllerOptions, type AuthoritySpec, type BlockedUpgradePathEntry, type CaddySiteOptions, type CertRenewalStatus, type ClientModuleEntry, type ClientModulePreferenceSelection, type ClientModulePreferenceView, type CloudflaredComponentStatus, type CloudflaredControllerOptions, type CloudflaredState, type CloudflaredStatus, type CloudflaredTunnelMode, type CloudflaredTunnelSettings, type CloudflaredTunnelStatus, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, type DeviceProbeResult, type DeviceSnapshot, type DeviceStore, type DeviceSummary, type DisabledTlsConfig, type FrpAttachOptions, type FrpAttachPlan, type FrpAttachPlanLocal, type FrpAttachPlanStep, type FrpAttachStepId, type FrpAttachTemplate, type FrpAttachVpsParts, type FrpComponentStatus, type FrpConfigurationStatus, type FrpControllerOptions, type FrpEntryTls, type FrpIngressCertificate, type FrpIngressPaths, type FrpIngressSelfCheck, type FrpSettings, type FrpState, type FrpStatus, type LocalExtensionManifest, type MobileAccessControlState, type MobileAccessControlStore, type MobileAccessService as MobileAccessRegistry, type MobileAccessRuntime, type MobileActionContext, type MobileExtensionClientEntry, type MobileExtensionDefinition, type MobileExtensionManifest, type MobileExtensionStatus, type MobileHostAction, type MobileHostRoute, type MobileRouteRequest, type MobileRouteResponse, type OriginConfigurationStatus, type OriginControllerOptions, type OriginSettings, type OriginState, type OriginStatus, type PairingResult, type ParsedCidr, type PluginConfig, type ProvidedTlsConfig, type RemoteProvider, type RemoteProviderController, type RemoteProviderState, type RemoteProviderStatus, type RenewalResult, type ResolvedGatewayConfig, type ServerCertificateAuthority, type ServerCertificateFiles, type ServerCertificateTarget, type SessionAuthorization, type SessionEndReason, type StoredDevice, type TaskCompletionEvent, type TaskEventContext, type TaskEventSession, type TaskEventSink, type TaskEventWatcherOptions, type TaskTurnEvent, type TlsConfig };
2209
+ export { type AccessControllerOptions, type AuthoritySpec, type BlockedUpgradePathEntry, type CaddySiteOptions, type CertRenewalStatus, type ClientModuleEntry, type ClientModulePreferenceSelection, type ClientModulePreferenceView, type CloudflaredComponentStatus, type CloudflaredControllerOptions, type CloudflaredState, type CloudflaredStatus, type CloudflaredTunnelMode, type CloudflaredTunnelSettings, type CloudflaredTunnelStatus, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, type DeviceProbeResult, type DeviceSnapshot, type DeviceStore, type DeviceSummary, type DisabledTlsConfig, type FrpAttachOptions, type FrpAttachPlan, type FrpAttachPlanLocal, type FrpAttachPlanStep, type FrpAttachStepId, type FrpAttachTemplate, type FrpAttachVpsParts, type FrpComponentStatus, type FrpConfigurationStatus, type FrpControllerOptions, type FrpEntryTls, type FrpIngressCertificate, type FrpIngressPaths, type FrpIngressSelfCheck, type FrpSettings, type FrpState, type FrpStatus, type HostExecutionConfig, type LocalExtensionManifest, type MobileAccessControlState, type MobileAccessControlStore, type MobileAccessService as MobileAccessRegistry, type MobileAccessRuntime, type MobileActionContext, type MobileExtensionClientEntry, type MobileExtensionDefinition, type MobileExtensionManifest, type MobileExtensionStatus, type MobileHostAction, type MobileHostRoute, type MobileRouteRequest, type MobileRouteResponse, type MobileWorkerHostApi, type OriginConfigurationStatus, type OriginControllerOptions, type OriginSettings, type OriginState, type OriginStatus, type PairingResult, type ParsedCidr, type PluginConfig, type ProvidedTlsConfig, type RemoteProvider, type RemoteProviderController, type RemoteProviderState, type RemoteProviderStatus, type RenewalResult, type ResolvedGatewayConfig, type ResolvedHostExecutionConfig, type ServerCertificateAuthority, type ServerCertificateFiles, type ServerCertificateTarget, type SessionAuthorization, type SessionEndReason, type StoredDevice, type TaskCompletionEvent, type TaskEventContext, type TaskEventSession, type TaskEventSink, type TaskEventWatcherOptions, type TaskTurnEvent, type TlsConfig };
2013
2210
  //# sourceMappingURL=index.d.mts.map