dsh-mobile 0.8.0 → 0.8.2
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 +29 -0
- package/CONTRIBUTORS.md +24 -2
- package/README.en.md +8 -5
- package/README.md +10 -5
- package/SECURITY.md +1 -1
- package/apps/mobile/README.md +8 -4
- package/apps/mobile/README.zh-CN.md +8 -4
- package/apps/mobile/release.json +3 -3
- package/docs/CLIENT_MODULES.en.md +6 -2
- package/docs/CLIENT_MODULES.md +6 -2
- package/docs/CONNECTION_DIAGNOSTICS.en.md +50 -0
- package/docs/CONNECTION_DIAGNOSTICS.md +50 -0
- package/docs/IROH.en.md +6 -0
- package/docs/IROH.md +6 -0
- package/docs/MOBILE_PLUGIN_ADAPTATION.en.md +18 -0
- package/docs/MOBILE_PLUGIN_ADAPTATION.md +18 -0
- package/docs/MOBILE_PLUGIN_BASELINE.en.md +117 -0
- package/docs/MOBILE_PLUGIN_BASELINE.md +117 -0
- package/docs/README.md +2 -0
- package/docs/SKIN_COMPATIBILITY.en.md +1 -1
- package/docs/SKIN_COMPATIBILITY.md +1 -1
- package/docs/SLOW_CONNECTIONS.en.md +3 -1
- package/docs/SLOW_CONNECTIONS.md +3 -1
- package/lib/cli.js +6 -12
- package/lib/cli.js.map +1 -1
- package/lib/client.js +428 -126
- package/lib/client.js.map +1 -1
- package/lib/extension-worker-runtime.mjs +4 -8
- package/lib/extension-worker-runtime.mjs.map +1 -1
- package/lib/index.d.mts +16 -89
- package/lib/index.mjs +519 -253
- package/lib/index.mjs.map +1 -1
- package/lib/mobile-compat.js +2 -2
- package/lib/mobile-compat.js.map +1 -1
- package/lib/mobile-layout.js +13 -6
- package/lib/mobile-layout.js.map +1 -1
- package/package.json +10 -6
- package/packages/question-fixes/lib/client.js +1 -2
- package/packages/question-fixes/lib/index.mjs +1 -2
- package/packages/question-fixes/package.json +1 -1
package/lib/index.d.mts
CHANGED
|
@@ -6,7 +6,6 @@ import { Readable } from "node:stream";
|
|
|
6
6
|
import { Context, Service } from "@deepseek-ai/cordis";
|
|
7
7
|
import "zod";
|
|
8
8
|
import { WebRoute } from "@deepseek-ai/dsh-host-webserver";
|
|
9
|
-
//#region src/storage.d.ts
|
|
10
9
|
/** Persistent record containing only a digest of the long-lived device credential. */
|
|
11
10
|
interface StoredDevice {
|
|
12
11
|
readonly id: string;
|
|
@@ -51,8 +50,6 @@ export declare class MemoryDeviceStore implements DeviceStore {
|
|
|
51
50
|
/** Return a defensive copy for assertions or administrative export. */
|
|
52
51
|
inspect(): DeviceSnapshot;
|
|
53
52
|
}
|
|
54
|
-
//#endregion
|
|
55
|
-
//#region src/access.d.ts
|
|
56
53
|
/** Stable error categories converted to deliberately terse HTTP responses. */
|
|
57
54
|
export declare class AccessError extends Error {
|
|
58
55
|
readonly status: number;
|
|
@@ -216,8 +213,6 @@ export declare class AccessController {
|
|
|
216
213
|
rateLimitKeys: number;
|
|
217
214
|
};
|
|
218
215
|
}
|
|
219
|
-
//#endregion
|
|
220
|
-
//#region src/network.d.ts
|
|
221
216
|
/** A parsed IP network used to authorize directly connected clients. */
|
|
222
217
|
interface ParsedCidr {
|
|
223
218
|
readonly bits: 32 | 128;
|
|
@@ -262,8 +257,6 @@ export declare class RequestTrustPolicy {
|
|
|
262
257
|
/** Return the canonical accepted Origin, otherwise undefined. */
|
|
263
258
|
canonicalOrigin(header: string | undefined): string | undefined;
|
|
264
259
|
}
|
|
265
|
-
//#endregion
|
|
266
|
-
//#region src/extension-worker-config.d.ts
|
|
267
260
|
/** Operator-owned limits for opt-in local extension worker execution. */
|
|
268
261
|
interface HostExecutionConfig {
|
|
269
262
|
readonly mode?: 'in-process' | 'worker';
|
|
@@ -293,8 +286,6 @@ interface ResolvedHostExecutionConfig extends Required<Omit<HostExecutionConfig,
|
|
|
293
286
|
}
|
|
294
287
|
/** Resolve configuration once; reject malformed modes, ids and incoherent stream windows. */
|
|
295
288
|
export declare function resolveHostExecution(raw: unknown): ResolvedHostExecutionConfig;
|
|
296
|
-
//#endregion
|
|
297
|
-
//#region src/config.d.ts
|
|
298
289
|
/** Optional compression for exact, already authorized WebSocket paths. */
|
|
299
290
|
interface WebSocketCompressionConfig {
|
|
300
291
|
paths?: string[];
|
|
@@ -445,8 +436,6 @@ export declare const Config: z<PluginConfig>;
|
|
|
445
436
|
export declare function parseControlFile(value: unknown): string;
|
|
446
437
|
/** Parse configuration and reject unsafe topology, credential, and resource combinations. */
|
|
447
438
|
export declare function parseGatewayConfig(raw: unknown): ResolvedGatewayConfig;
|
|
448
|
-
//#endregion
|
|
449
|
-
//#region src/client-module-preferences.d.ts
|
|
450
439
|
/** Installed client module metadata, without upstream URLs or host paths. */
|
|
451
440
|
interface ClientModuleEntry {
|
|
452
441
|
readonly id: string;
|
|
@@ -462,6 +451,8 @@ interface ClientModuleEntry {
|
|
|
462
451
|
/** Selection returned to the computer administrator or the authenticated device. */
|
|
463
452
|
interface ClientModulePreferenceView {
|
|
464
453
|
readonly entries: readonly ClientModuleEntry[];
|
|
454
|
+
/** Canonical fingerprint of this catalog. A write that carries a different one is stale. */
|
|
455
|
+
readonly revision: string;
|
|
465
456
|
readonly excludedClientModules: readonly string[];
|
|
466
457
|
readonly defaultExcludedClientModules: readonly string[];
|
|
467
458
|
readonly source: 'device' | 'computer' | 'plugin';
|
|
@@ -498,8 +489,6 @@ export declare class ClientModulePreferenceStore {
|
|
|
498
489
|
removeDevices(deviceIds: readonly string[]): Promise<void>;
|
|
499
490
|
private save;
|
|
500
491
|
}
|
|
501
|
-
//#endregion
|
|
502
|
-
//#region src/control.d.ts
|
|
503
492
|
/** Versioned durable preference for the resident mobile-access runtime. */
|
|
504
493
|
interface MobileAccessControlState {
|
|
505
494
|
readonly version: 1;
|
|
@@ -542,14 +531,17 @@ export declare class MobileAccessGatewayController {
|
|
|
542
531
|
isRunning(): boolean;
|
|
543
532
|
/** Start or stop the runtime and persist only a successfully committed transition. */
|
|
544
533
|
setRunning(running: boolean): Promise<void>;
|
|
534
|
+
/** Change configuration with the runtime stopped, without changing its durable enabled preference. */
|
|
535
|
+
reconfigure<T>(change: () => Promise<T>, restore: () => Promise<void>): Promise<{
|
|
536
|
+
value: T;
|
|
537
|
+
running: boolean;
|
|
538
|
+
}>;
|
|
545
539
|
/** Stop the runtime after earlier transitions without changing the restart preference. */
|
|
546
540
|
close(): Promise<void>;
|
|
547
541
|
private enable;
|
|
548
542
|
private disable;
|
|
549
543
|
private enqueue;
|
|
550
544
|
}
|
|
551
|
-
//#endregion
|
|
552
|
-
//#region src/auth-failure-log.d.ts
|
|
553
545
|
/** One rejected HTTP request, with presence/count fields instead of credential values. */
|
|
554
546
|
interface AuthFailureEntry {
|
|
555
547
|
readonly kind: 'authorize' | 'csrf';
|
|
@@ -567,21 +559,24 @@ interface AuthFailureEntry {
|
|
|
567
559
|
/** Earlier failures of this kind suppressed since its preceding recorded request. */
|
|
568
560
|
readonly suppressed?: number;
|
|
569
561
|
}
|
|
570
|
-
//#endregion
|
|
571
|
-
//#region src/http-failure-log.d.ts
|
|
572
562
|
/** Fixed parser details safe to record without Node's raw packet, message or request headers. */
|
|
573
|
-
type HttpParserCode = 'ERR_HTTP_REQUEST_TIMEOUT' | 'HPE_HEADER_OVERFLOW' | 'HPE_INVALID_CHUNK_SIZE' | 'HPE_INVALID_CONTENT_LENGTH' | 'HPE_INVALID_EOF_STATE' | 'HPE_INVALID_HEADER_TOKEN' | 'HPE_INVALID_TRANSFER_ENCODING' | 'HPE_UNEXPECTED_CONTENT_LENGTH' | 'other';
|
|
563
|
+
type HttpParserCode = 'ERR_HTTP_REQUEST_TIMEOUT' | 'HPE_HEADER_OVERFLOW' | 'HPE_INVALID_METHOD' | 'HPE_INVALID_CONSTANT' | 'HPE_INVALID_URL' | 'HPE_INVALID_VERSION' | 'HPE_LF_EXPECTED' | 'HPE_PAUSED_H2_UPGRADE' | 'HPE_INVALID_CHUNK_SIZE' | 'HPE_INVALID_CONTENT_LENGTH' | 'HPE_INVALID_EOF_STATE' | 'HPE_INVALID_HEADER_TOKEN' | 'HPE_INVALID_TRANSFER_ENCODING' | 'HPE_UNEXPECTED_CONTENT_LENGTH' | 'other';
|
|
574
564
|
/** A rejected inbound HTTP message's public response and bounded diagnostic category. */
|
|
575
565
|
interface HttpParserFailure {
|
|
576
566
|
readonly status: 400 | 408 | 431;
|
|
577
567
|
readonly code: 'bad_request' | 'request_timeout' | 'headers_too_large';
|
|
578
568
|
readonly parserCode: HttpParserCode;
|
|
579
569
|
}
|
|
570
|
+
/** Socket failures do not establish that an HTTP request was rejected. */
|
|
571
|
+
type HttpTransportCode = 'ECONNRESET' | 'EPIPE' | 'ETIMEDOUT' | 'ERR_STREAM_PREMATURE_CLOSE';
|
|
580
572
|
/** One sampled rejection. Arbitrary paths, query strings, body data and credentials are excluded. */
|
|
581
573
|
type HttpFailureEntry = ({
|
|
582
574
|
readonly kind: 'parser';
|
|
583
575
|
readonly status: HttpParserFailure['status'];
|
|
584
576
|
readonly code: HttpParserCode;
|
|
577
|
+
} | {
|
|
578
|
+
readonly kind: 'transport';
|
|
579
|
+
readonly code: HttpTransportCode;
|
|
585
580
|
} | {
|
|
586
581
|
readonly kind: 'target';
|
|
587
582
|
readonly status: 400;
|
|
@@ -594,8 +589,6 @@ type HttpFailureEntry = ({
|
|
|
594
589
|
}) & {
|
|
595
590
|
readonly suppressed?: number;
|
|
596
591
|
};
|
|
597
|
-
//#endregion
|
|
598
|
-
//#region src/api-latency-log.d.ts
|
|
599
592
|
/** One sampled API wait; `durationMs` spans the client's request to response close. */
|
|
600
593
|
type ApiLatencyEntry = {
|
|
601
594
|
readonly kind: 'api';
|
|
@@ -606,8 +599,6 @@ type ApiLatencyEntry = {
|
|
|
606
599
|
} & {
|
|
607
600
|
readonly suppressed?: number;
|
|
608
601
|
};
|
|
609
|
-
//#endregion
|
|
610
|
-
//#region src/upstream-auth-log.d.ts
|
|
611
602
|
/** Fixed outcomes of the Gateway's private DSH launch-token exchange. */
|
|
612
603
|
type UpstreamAuthOutcome = 'accepted' | 'invalid-target' | 'unexpected-status' | 'invalid-cookie' | 'timeout' | 'transport-error';
|
|
613
604
|
/** Exchange metadata only: no URL, header, Cookie, Token or raw error is retained. */
|
|
@@ -621,8 +612,6 @@ interface UpstreamAuthEntry {
|
|
|
621
612
|
/** Earlier exchanges with the same success/failure category omitted by sampling. */
|
|
622
613
|
readonly suppressed?: number;
|
|
623
614
|
}
|
|
624
|
-
//#endregion
|
|
625
|
-
//#region src/http-security.d.ts
|
|
626
615
|
export declare const DEVICE_COOKIE = "dsh_ma_device";
|
|
627
616
|
export declare const SESSION_COOKIE = "dsh_ma_session";
|
|
628
617
|
export declare const CSRF_COOKIE = "dsh_ma_csrf";
|
|
@@ -636,8 +625,6 @@ declare class HttpError extends Error {
|
|
|
636
625
|
readonly code: string;
|
|
637
626
|
constructor(status: number, code: string);
|
|
638
627
|
}
|
|
639
|
-
//#endregion
|
|
640
|
-
//#region src/websocket-paths.d.ts
|
|
641
628
|
/** Cap the admin-approved extra WebSocket upgrade paths (exact pathnames). */
|
|
642
629
|
export declare const MAX_EXTRA_WEBSOCKET_PATHS = 16;
|
|
643
630
|
export declare const MAX_WEBSOCKET_PATH_LENGTH = 256;
|
|
@@ -681,8 +668,6 @@ export declare class WebSocketPathStore {
|
|
|
681
668
|
/** Replace the whole list after validating; persists atomically. */
|
|
682
669
|
replace(paths: readonly string[]): Promise<string[]>;
|
|
683
670
|
}
|
|
684
|
-
//#endregion
|
|
685
|
-
//#region src/extension-worker-protocol.d.ts
|
|
686
671
|
/** Metadata for one action, crossing the boundary without its functions. */
|
|
687
672
|
interface WorkerActionMetadata {
|
|
688
673
|
readonly name: string;
|
|
@@ -695,8 +680,6 @@ interface WorkerRouteMetadata {
|
|
|
695
680
|
readonly kind?: 'exact' | 'prefix';
|
|
696
681
|
readonly timeoutMs?: number;
|
|
697
682
|
}
|
|
698
|
-
//#endregion
|
|
699
|
-
//#region src/extension-worker.d.ts
|
|
700
683
|
/** JSON bytes serialized and size-checked inside the worker. */
|
|
701
684
|
declare class PreparedJsonResult {
|
|
702
685
|
readonly bytes: Buffer;
|
|
@@ -792,8 +775,6 @@ declare class ExtensionWorkerHost {
|
|
|
792
775
|
private openStream;
|
|
793
776
|
private cancelStream;
|
|
794
777
|
}
|
|
795
|
-
//#endregion
|
|
796
|
-
//#region src/extension-limits.d.ts
|
|
797
778
|
/** Maximum sizes enforced when reading local extension files. */
|
|
798
779
|
export declare const EXTENSION_LIMITS: Readonly<{
|
|
799
780
|
manifest: number;
|
|
@@ -804,8 +785,6 @@ export declare const EXTENSION_LIMITS: Readonly<{
|
|
|
804
785
|
assetBytes: number;
|
|
805
786
|
assetDepth: 8;
|
|
806
787
|
}>;
|
|
807
|
-
//#endregion
|
|
808
|
-
//#region src/extensions.d.ts
|
|
809
788
|
/** A controlled business failure returned by an extension action or route. */
|
|
810
789
|
export declare class MobileExtensionError extends Error {
|
|
811
790
|
readonly code: string;
|
|
@@ -1011,8 +990,6 @@ export declare class MobileAccessService extends Service {
|
|
|
1011
990
|
}
|
|
1012
991
|
/** Construct the service in a Cordis plugin without importing DSH internals. */
|
|
1013
992
|
export declare function createMobileAccessService(ctx: Context): MobileAccessService;
|
|
1014
|
-
//#endregion
|
|
1015
|
-
//#region src/mobile-push/contracts.d.ts
|
|
1016
993
|
type PushCategory = 'question' | 'plan' | 'approval' | 'response' | 'goal' | 'failure' | 'test';
|
|
1017
994
|
type PushPreferences = Readonly<Record<Exclude<PushCategory, 'test'>, boolean>>;
|
|
1018
995
|
type PushLocale = 'en' | 'zh-CN' | 'it';
|
|
@@ -1069,8 +1046,6 @@ interface PushConfig {
|
|
|
1069
1046
|
readonly status: 'disabled' | 'enabled' | 'suspended' | 'repair-required';
|
|
1070
1047
|
readonly preferences: PushPreferences;
|
|
1071
1048
|
}
|
|
1072
|
-
//#endregion
|
|
1073
|
-
//#region src/mobile-push/gateway.d.ts
|
|
1074
1049
|
/** Trusted per-Gateway binding; authorization is freshly loaded from durable device storage. */
|
|
1075
1050
|
interface PushGatewayOriginBinding {
|
|
1076
1051
|
readonly scopeId: string;
|
|
@@ -1096,12 +1071,10 @@ interface PushGatewayService {
|
|
|
1096
1071
|
test(owner: PushOwner, installationId: string): Promise<void>;
|
|
1097
1072
|
resolve(owner: PushOwner, reference: string): Promise<PushTarget | undefined>;
|
|
1098
1073
|
}
|
|
1099
|
-
//#endregion
|
|
1100
|
-
//#region src/gateway.d.ts
|
|
1101
1074
|
/** A graph-selection conflict with a bounded diagnostic safe for authenticated callers. */
|
|
1102
1075
|
export declare class ClientModuleConflictError extends HttpError {
|
|
1103
1076
|
readonly detail: string;
|
|
1104
|
-
constructor(detail: string);
|
|
1077
|
+
constructor(detail: string, code?: string);
|
|
1105
1078
|
}
|
|
1106
1079
|
/** Rewrite the dedicated mobile graph; exclusions are opt-in and leave stock DSH unchanged. */
|
|
1107
1080
|
export declare function rewriteMobileIndex(html: string, excludedClientModules?: readonly string[]): string;
|
|
@@ -1259,9 +1232,10 @@ export declare class MobileAccessGateway {
|
|
|
1259
1232
|
* @param excluded - Untrusted module IDs to validate against the current boot graph.
|
|
1260
1233
|
* @param deviceId - Authenticated device identity; omitted for computer defaults.
|
|
1261
1234
|
* @param callerSignal - Cancels fetching and validation, not an atomic write already started.
|
|
1235
|
+
* @param revision - Catalog fingerprint the selection was computed against; a mismatch is rejected.
|
|
1262
1236
|
* @returns The catalog and saved selection without reloading clients.
|
|
1263
1237
|
*/
|
|
1264
|
-
configureClientModules(excluded: unknown, deviceId?: string, callerSignal?: AbortSignal): Promise<ClientModulePreferenceView>;
|
|
1238
|
+
configureClientModules(excluded: unknown, deviceId?: string, callerSignal?: AbortSignal, revision?: string): Promise<ClientModulePreferenceView>;
|
|
1265
1239
|
/** Reset one override without reloading connected clients.
|
|
1266
1240
|
* @param deviceId - Authenticated device identity; omitted to reset computer defaults.
|
|
1267
1241
|
* @param callerSignal - Cancels fetching and validation, not an atomic write already started.
|
|
@@ -1376,8 +1350,6 @@ export declare class MobileAccessGateway {
|
|
|
1376
1350
|
readonly failed: number;
|
|
1377
1351
|
};
|
|
1378
1352
|
}
|
|
1379
|
-
//#endregion
|
|
1380
|
-
//#region src/frp-component.d.ts
|
|
1381
1353
|
interface FrpArtifact {
|
|
1382
1354
|
readonly platform: NodeJS.Platform;
|
|
1383
1355
|
readonly arch: string;
|
|
@@ -1436,8 +1408,6 @@ export declare class FrpComponentManager {
|
|
|
1436
1408
|
purge(): Promise<FrpComponentStatus>;
|
|
1437
1409
|
private enqueue;
|
|
1438
1410
|
}
|
|
1439
|
-
//#endregion
|
|
1440
|
-
//#region src/cpolar-component.d.ts
|
|
1441
1411
|
/** Pinned cpolar components fetched only after an explicit user action. */
|
|
1442
1412
|
interface CpolarArtifact {
|
|
1443
1413
|
readonly version: string;
|
|
@@ -1515,8 +1485,6 @@ export declare class CpolarComponentManager {
|
|
|
1515
1485
|
purge(): Promise<CpolarComponentStatus>;
|
|
1516
1486
|
private enqueue;
|
|
1517
1487
|
}
|
|
1518
|
-
//#endregion
|
|
1519
|
-
//#region src/frp-template.d.ts
|
|
1520
1488
|
/** Loopback-only HTTP vhost port used between Caddy and frps. */
|
|
1521
1489
|
export declare const FRP_VHOST_HTTP_PORT = 7080;
|
|
1522
1490
|
/** Caddy snippet owned entirely by DSH Mobile; the main Caddyfile only imports it. */
|
|
@@ -1562,8 +1530,6 @@ export declare function createCaddySite(publicHost: string, options?: CaddySiteO
|
|
|
1562
1530
|
* mode publishes a raw TCP proxy instead of an HTTP vhost.
|
|
1563
1531
|
*/
|
|
1564
1532
|
export declare function createRestrictedFrpServerTemplate(serverPort: number, token: string, publicOrigin: string, options?: CaddySiteOptions): string;
|
|
1565
|
-
//#endregion
|
|
1566
|
-
//#region src/frp-config.d.ts
|
|
1567
1533
|
/** How the restricted FRP channel is provisioned on the VPS. */
|
|
1568
1534
|
type FrpMode = 'deploy' | 'attach';
|
|
1569
1535
|
/** Public entry port used by the self-signed TCP passthrough (never 443 by requirement). */
|
|
@@ -1734,8 +1700,6 @@ export declare class FrpConfigStore {
|
|
|
1734
1700
|
/** Remove only configuration files owned by the FRP provider. */
|
|
1735
1701
|
purge(): Promise<FrpConfigurationStatus>;
|
|
1736
1702
|
}
|
|
1737
|
-
//#endregion
|
|
1738
|
-
//#region src/frp-attach.d.ts
|
|
1739
1703
|
/** Default proof path used to confirm the public entry answered from this computer. */
|
|
1740
1704
|
export declare const FRP_ATTACH_DISCOVERY_PATH = "/mobile-access/discovery";
|
|
1741
1705
|
/** Declaration printed above the VPS half of an attach template. */
|
|
@@ -1810,8 +1774,6 @@ export declare function frpAttachVpsParts(settings: FrpSettings, options?: FrpAt
|
|
|
1810
1774
|
export declare function createFrpAttachTemplateParts(settings: FrpSettings, options?: FrpAttachOptions): FrpAttachTemplate;
|
|
1811
1775
|
/** Combined attach artefact, ready for the clipboard. */
|
|
1812
1776
|
export declare function createFrpAttachTemplate(settings: FrpSettings, options?: FrpAttachOptions): string;
|
|
1813
|
-
//#endregion
|
|
1814
|
-
//#region src/frp-attach-plan.d.ts
|
|
1815
1777
|
/** Stable step identifiers; the panel maps each one to a translated title. */
|
|
1816
1778
|
type FrpAttachStepId = 'write-snippet' | 'add-import' | 'issue-ip-cert' | 'enable-cert-timer' | 'verify-https' | 'open-public-port' | 'verify-frps' | 'verify-entry';
|
|
1817
1779
|
/** One actionable VPS-side step; `title` is a message key, `label` the copied text. */
|
|
@@ -1849,8 +1811,6 @@ interface FrpAttachPlan {
|
|
|
1849
1811
|
* configuration is written by the ordinary provider lifecycle.
|
|
1850
1812
|
*/
|
|
1851
1813
|
export declare function createFrpAttachPlan(settings: FrpSettings, options?: FrpAttachOptions): FrpAttachPlan;
|
|
1852
|
-
//#endregion
|
|
1853
|
-
//#region src/cert-renewal.d.ts
|
|
1854
1814
|
/** Days left below which the entry certificate is reported as expiring. */
|
|
1855
1815
|
export declare const CERT_EXPIRING_DAYS = 2;
|
|
1856
1816
|
/** Read-only lifetime verdict for one certificate; never mutates or renews anything. */
|
|
@@ -1880,8 +1840,6 @@ export declare function readCertificateRenewal(file: string, now?: number): Prom
|
|
|
1880
1840
|
* leaf is the expected answer for the passthrough entry.
|
|
1881
1841
|
*/
|
|
1882
1842
|
export declare function probeOriginCertificate(host: string, port: number, timeoutMs?: number): Promise<CertRenewalStatus>;
|
|
1883
|
-
//#endregion
|
|
1884
|
-
//#region src/frp-ingress.d.ts
|
|
1885
1843
|
/** Private files owned by the self-signed FRP ingress. */
|
|
1886
1844
|
interface FrpIngressPaths {
|
|
1887
1845
|
readonly directory: string;
|
|
@@ -1935,8 +1893,6 @@ export declare function ensureFrpIngressCertificate(settings: FrpSettings, state
|
|
|
1935
1893
|
* and the token is never read.
|
|
1936
1894
|
*/
|
|
1937
1895
|
export declare function frpIngressSelfCheck(settings: FrpSettings, stateFile: string, ownedRoot?: string): Promise<FrpIngressSelfCheck>;
|
|
1938
|
-
//#endregion
|
|
1939
|
-
//#region src/managed-setup.d.ts
|
|
1940
1896
|
/** One host a server leaf must be valid for: an IP literal, a DNS name, or both. */
|
|
1941
1897
|
interface ServerCertificateTarget {
|
|
1942
1898
|
readonly commonName: string;
|
|
@@ -1962,8 +1918,6 @@ interface ServerCertificateAuthority {
|
|
|
1962
1918
|
* hosts; the Android client accepts either through its pinned CA.
|
|
1963
1919
|
*/
|
|
1964
1920
|
export declare function issueServerCertificate(authority: ServerCertificateAuthority, target: ServerCertificateTarget, output: ServerCertificateFiles, lifetimeDays?: number): Promise<void>;
|
|
1965
|
-
//#endregion
|
|
1966
|
-
//#region src/remote.d.ts
|
|
1967
1921
|
/** Remote transports supported by the desktop plugin and Android client. */
|
|
1968
1922
|
type RemoteProvider = 'tailscale' | 'cpolar' | 'cloudflared' | 'frp' | 'origin' | 'iroh';
|
|
1969
1923
|
/** Common safe status returned by every remote provider controller. */
|
|
@@ -2009,8 +1963,6 @@ export declare class JsonRemoteProviderStore {
|
|
|
2009
1963
|
}
|
|
2010
1964
|
/** Resolve the first-run provider without letting environment values bypass validation. */
|
|
2011
1965
|
export declare function configuredRemoteProvider(environment: NodeJS.ProcessEnv): RemoteProvider;
|
|
2012
|
-
//#endregion
|
|
2013
|
-
//#region src/frp.d.ts
|
|
2014
1966
|
/** Product-facing states for the restricted self-hosted FRP transport. */
|
|
2015
1967
|
type FrpState = 'off' | 'unavailable' | 'starting' | 'connecting' | 'ready' | 'error';
|
|
2016
1968
|
/** Safe FRP state returned only through the loopback DSH control route. */
|
|
@@ -2126,8 +2078,6 @@ export declare class FrpController implements RemoteProviderController {
|
|
|
2126
2078
|
private stop;
|
|
2127
2079
|
private stopProcessAndGateway;
|
|
2128
2080
|
}
|
|
2129
|
-
//#endregion
|
|
2130
|
-
//#region src/origin-proxy-config.d.ts
|
|
2131
2081
|
export declare const DEFAULT_ORIGIN_LISTEN_PORT = 3444;
|
|
2132
2082
|
/** A private HTTP listener behind a user-managed HTTPS reverse proxy. */
|
|
2133
2083
|
interface OriginSettings {
|
|
@@ -2171,8 +2121,6 @@ export declare class OriginConfigStore {
|
|
|
2171
2121
|
configure(value: unknown): Promise<OriginConfigurationStatus>;
|
|
2172
2122
|
purge(): Promise<OriginConfigurationStatus>;
|
|
2173
2123
|
}
|
|
2174
|
-
//#endregion
|
|
2175
|
-
//#region src/origin-proxy.d.ts
|
|
2176
2124
|
type OriginState = 'off' | 'unavailable' | 'starting' | 'ready' | 'error';
|
|
2177
2125
|
/** Ready means the private listener is ready, not that public ingress was tested. */
|
|
2178
2126
|
interface OriginStatus {
|
|
@@ -2213,8 +2161,6 @@ export declare class OriginController implements RemoteProviderController {
|
|
|
2213
2161
|
private start;
|
|
2214
2162
|
private stop;
|
|
2215
2163
|
}
|
|
2216
|
-
//#endregion
|
|
2217
|
-
//#region src/cloudflared-component.d.ts
|
|
2218
2164
|
/**
|
|
2219
2165
|
* Pinned cloudflared components fetched only after an explicit user action.
|
|
2220
2166
|
*
|
|
@@ -2305,8 +2251,6 @@ export declare class CloudflaredComponentManager {
|
|
|
2305
2251
|
purge(): Promise<CloudflaredComponentStatus>;
|
|
2306
2252
|
private enqueue;
|
|
2307
2253
|
}
|
|
2308
|
-
//#endregion
|
|
2309
|
-
//#region src/cloudflared-tunnel.d.ts
|
|
2310
2254
|
/** Which tunnel flavour the cloudflared provider runs. */
|
|
2311
2255
|
type CloudflaredTunnelMode = 'quick' | 'named';
|
|
2312
2256
|
/**
|
|
@@ -2382,8 +2326,6 @@ export declare class CloudflaredTunnelStore {
|
|
|
2382
2326
|
/** Forget a named tunnel and its connector token. */
|
|
2383
2327
|
purge(): Promise<CloudflaredTunnelStatus>;
|
|
2384
2328
|
}
|
|
2385
|
-
//#endregion
|
|
2386
|
-
//#region src/cloudflared.d.ts
|
|
2387
2329
|
/** Product-facing states for the optional cloudflared remote transport. */
|
|
2388
2330
|
type CloudflaredState = 'off' | 'unavailable' | 'starting' | 'connecting' | 'ready' | 'error';
|
|
2389
2331
|
/** Safe cloudflared state returned only through the loopback DSH control route. */
|
|
@@ -2489,8 +2431,6 @@ export declare class CloudflaredController implements RemoteProviderController {
|
|
|
2489
2431
|
private stop;
|
|
2490
2432
|
private stopProcessAndGateway;
|
|
2491
2433
|
}
|
|
2492
|
-
//#endregion
|
|
2493
|
-
//#region src/iroh-component.d.ts
|
|
2494
2434
|
export declare const IROH_VERSION = "0.1.0-alpha.1";
|
|
2495
2435
|
/** A size- and content-pinned sidecar release asset with independent wire and installed-byte checks. */
|
|
2496
2436
|
interface IrohArtifact {
|
|
@@ -2578,8 +2518,6 @@ export declare class IrohComponentManager {
|
|
|
2578
2518
|
purge(): Promise<IrohComponentStatus>;
|
|
2579
2519
|
private refresh;
|
|
2580
2520
|
}
|
|
2581
|
-
//#endregion
|
|
2582
|
-
//#region src/iroh-pairing.d.ts
|
|
2583
2521
|
export declare const PAIRING_DESCRIPTOR_VERSION = 1;
|
|
2584
2522
|
export declare const PAIRING_DESCRIPTOR_TYPE = "dsh-mobile-iroh-pairing";
|
|
2585
2523
|
export declare const MAX_PAIRING_DESCRIPTOR_BYTES = 2200;
|
|
@@ -2620,8 +2558,6 @@ export declare function decodePairingDescriptor(encoded: string, options?: {
|
|
|
2620
2558
|
}): IrohPairingDescriptor;
|
|
2621
2559
|
/** Phone-side listener port advertised in QR codes minted by this computer. */
|
|
2622
2560
|
export declare const PAIRING_DESCRIPTOR_LOCAL_PORT = 25443;
|
|
2623
|
-
//#endregion
|
|
2624
|
-
//#region src/iroh.d.ts
|
|
2625
2561
|
/** Product-facing states for the experimental iroh transport. */
|
|
2626
2562
|
type IrohState = 'off' | 'unavailable' | 'starting' | 'connecting' | 'ready' | 'error';
|
|
2627
2563
|
/** Safe iroh state returned only through the loopback DSH control route. */
|
|
@@ -2700,8 +2636,6 @@ export declare class IrohController implements RemoteProviderController {
|
|
|
2700
2636
|
private waitForReady;
|
|
2701
2637
|
private waitForPairingCode;
|
|
2702
2638
|
}
|
|
2703
|
-
//#endregion
|
|
2704
|
-
//#region src/iroh-origin.d.ts
|
|
2705
2639
|
/** Identity-derived browser origins for the raw TLS-over-iroh carrier.
|
|
2706
2640
|
*
|
|
2707
2641
|
* Ported from the independent `dsh-mobile-iroh` companion's origin contract.
|
|
@@ -2715,8 +2649,6 @@ export declare function irohHostname(endpointId: string): string;
|
|
|
2715
2649
|
export declare function irohOrigin(endpointId: string, localPort?: number): string;
|
|
2716
2650
|
/** Reject an Origin that does not belong to the selected cryptographic host identity. */
|
|
2717
2651
|
export declare function validateIrohOrigin(value: unknown, endpointId: string, localPort?: number): string;
|
|
2718
|
-
//#endregion
|
|
2719
|
-
//#region src/iroh-tls.d.ts
|
|
2720
2652
|
/** Leaf lifetime and renewal headroom, matching the companion's native policy. */
|
|
2721
2653
|
export declare const IROH_LEAF_VALIDITY_DAYS = 90;
|
|
2722
2654
|
export declare const IROH_LEAF_RENEW_BEFORE_DAYS = 30;
|
|
@@ -2757,8 +2689,6 @@ export declare function ensureIrohTls(endpointId: string, stateFile: string, own
|
|
|
2757
2689
|
* the public path is the iroh transport, never a direct bind.
|
|
2758
2690
|
*/
|
|
2759
2691
|
export declare function irohGatewayConfig(template: ResolvedGatewayConfig, endpointId: string, stateFile: string, tls: Pick<FrpIngressCertificate, 'paths' | 'caFingerprint'>, listenPort?: number): ResolvedGatewayConfig;
|
|
2760
|
-
//#endregion
|
|
2761
|
-
//#region src/task-events.d.ts
|
|
2762
2692
|
/**
|
|
2763
2693
|
* Host-side task-completion fan-out for phone notifications.
|
|
2764
2694
|
*
|
|
@@ -2820,8 +2750,6 @@ export declare class TaskEventHub {
|
|
|
2820
2750
|
/** Visible for tests. */
|
|
2821
2751
|
get size(): number;
|
|
2822
2752
|
}
|
|
2823
|
-
//#endregion
|
|
2824
|
-
//#region src/plugin.d.ts
|
|
2825
2753
|
declare module '@deepseek-ai/dsh-llm' {
|
|
2826
2754
|
interface MessageSourceMap {
|
|
2827
2755
|
'plugin:dsh-mobile': {
|
|
@@ -2839,6 +2767,5 @@ export declare const inject: string[];
|
|
|
2839
2767
|
export declare function originGatewayConfig(template: ResolvedGatewayConfig, settings: OriginSettings, stateFile: string, instanceId: string, listenPort?: number, legacyInstanceId?: string): ResolvedGatewayConfig;
|
|
2840
2768
|
/** Mount the resident control route and its optional authenticated LAN gateway. */
|
|
2841
2769
|
export declare function apply(ctx: Context, config: PluginConfig): Promise<void>;
|
|
2842
|
-
//#endregion
|
|
2843
2770
|
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 IrohArtifact, type IrohComponentManagerOptions, type IrohComponentStatus, type IrohControllerOptions, type IrohPairingDescriptor, type IrohState, type IrohStatus, type IrohTlsCertificate, type IrohTlsPaths, 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 PairingDescriptorField, 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 };
|
|
2844
2771
|
//# sourceMappingURL=index.d.mts.map
|