@hyperdreamer/pi-webui 1.8.0 → 1.9.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/README.md +1 -1
- package/dist/client/assets/{CodeViewer-DWIKbHl0.js → CodeViewer-Bpvsp0pk.js} +1 -1
- package/dist/client/assets/{UnifiedDiffViewer-BSrL6IvO.js → UnifiedDiffViewer-iSh_gYQc.js} +1 -1
- package/dist/client/assets/{index-CrFrPrnQ.js → index-DCPkewJK.js} +427 -435
- package/dist/client/index.html +1 -1
- package/dist/server/app.js +1 -8
- package/dist/server/app.js.map +1 -1
- package/dist/server/models/modelsConfigService.js +1 -1
- package/dist/server/models/modelsConfigService.js.map +1 -1
- package/dist/server/sessions/authService.js +3 -3
- package/dist/server/sessions/authService.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +3 -3
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionDefaultsService.js +1 -1
- package/dist/server/sessions/sessionDefaultsService.js.map +1 -1
- package/package.json +7 -7
- package/dist/server/browser/browserCapabilities.js +0 -74
- package/dist/server/browser/browserCapabilities.js.map +0 -1
- package/dist/server/browser/browserCapabilityRoutes.js +0 -34
- package/dist/server/browser/browserCapabilityRoutes.js.map +0 -1
- package/dist/server/browser/browserPolicy.js +0 -382
- package/dist/server/browser/browserPolicy.js.map +0 -1
- package/dist/server/browser/browserRuntime.js +0 -16
- package/dist/server/browser/browserRuntime.js.map +0 -1
|
@@ -47,7 +47,7 @@ export class SessionDefaultsService {
|
|
|
47
47
|
return responseFor(models, model, thinkingLevel, thinkingLevels);
|
|
48
48
|
}
|
|
49
49
|
async availableModels() {
|
|
50
|
-
await this.deps.modelRuntime.
|
|
50
|
+
await this.deps.modelRuntime.refresh({ allowNetwork: false });
|
|
51
51
|
return [...this.deps.modelRuntime.getAvailableSnapshot()];
|
|
52
52
|
}
|
|
53
53
|
response(settings, models) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionDefaultsService.js","sourceRoot":"","sources":["../../../src/server/sessions/sessionDefaultsService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sessionDefaultsService.js","sourceRoot":"","sources":["../../../src/server/sessions/sessionDefaultsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAwB,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAsB,MAAM,gCAAgC,CAAC;AAyBjH,2FAA2F;AAC3F,MAAM,OAAO,sBAAsB;IAIjC,YAA6B,IAAwC;QAAxC,SAAI,GAAJ,IAAI,CAAoC;QACnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,6BAA6B,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,MAA6B;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,IAAI,SAAS,CAAC,EAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC;YAC9H,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;YACtH,IAAI,QAAQ,CAAC,kBAAkB,EAAE,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;gBAChG,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9D,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,uBAAuB,GAAG,QAAQ,CAAC,uBAAuB,EAAE,IAAI,KAAK,CAAC;QAC5E,IAAI,aAAa,GAAG,sBAAsB,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YACpH,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,aAAa,wCAAwC,CAAC,CAAC;YACpJ,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QACvC,CAAC;QACD,IAAI,aAAa,KAAK,uBAAuB,EAAE,CAAC;YAC9C,QAAQ,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAChD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO;YAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEO,QAAQ,CAAC,QAAiC,EAAE,MAA+B;QACjF,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,KAAK,EAAE,cAAc,CAAC,CAAC;QAC1G,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnE,CAAC;CACF;AAED,SAAS,6BAA6B,CAAC,KAA+B;IACpE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAiC,EAAE,MAA+B;IAChG,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAyB,EAAE,MAAgC;IACzF,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,WAAW,CAClB,MAA+B,EAC/B,KAA+B,EAC/B,aAA4B,EAC5B,cAAwC;IAExC,OAAO;QACL,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,aAAa;QACb,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACtC,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmB;IAC7C,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperdreamer/pi-webui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Web UI for persistent Pi Coding Agent sessions in real workspaces.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Federico Jaramillo Martinez and HyperDreamer",
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@changesets/cli": "^2.31.0",
|
|
84
|
-
"@earendil-works/pi-agent-core": "^0.
|
|
85
|
-
"@earendil-works/pi-ai": "^0.
|
|
86
|
-
"@earendil-works/pi-coding-agent": "^0.
|
|
84
|
+
"@earendil-works/pi-agent-core": "^0.82.1",
|
|
85
|
+
"@earendil-works/pi-ai": "^0.82.1",
|
|
86
|
+
"@earendil-works/pi-coding-agent": "^0.82.1",
|
|
87
87
|
"@eslint/js": "^10.0.1",
|
|
88
88
|
"@types/node": "^24.13.3",
|
|
89
89
|
"@types/ws": "^8.18.1",
|
|
@@ -112,9 +112,9 @@
|
|
|
112
112
|
"homepage": "https://pi-webui.dev/",
|
|
113
113
|
"packageManager": "npm@11.11.0",
|
|
114
114
|
"peerDependencies": {
|
|
115
|
-
"@earendil-works/pi-agent-core": ">=0.
|
|
116
|
-
"@earendil-works/pi-ai": ">=0.
|
|
117
|
-
"@earendil-works/pi-coding-agent": ">=0.
|
|
115
|
+
"@earendil-works/pi-agent-core": ">=0.82.1 <0.83",
|
|
116
|
+
"@earendil-works/pi-ai": ">=0.82.1 <0.83",
|
|
117
|
+
"@earendil-works/pi-coding-agent": ">=0.82.1 <0.83"
|
|
118
118
|
},
|
|
119
119
|
"keywords": [
|
|
120
120
|
"pi-package",
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
const BROWSER_PROTOCOL_VERSION = 1;
|
|
2
|
-
const MAX_TABS_PER_SESSION = 10;
|
|
3
|
-
const MAX_SESSIONS_PER_PRINCIPAL = 2;
|
|
4
|
-
/**
|
|
5
|
-
* Pure feature gate for the browser capability. The runtime adapter must prove
|
|
6
|
-
* every isolation property; partial readiness never becomes browser access.
|
|
7
|
-
*/
|
|
8
|
-
export function evaluateBrowserRemoteCapability(principal, readiness) {
|
|
9
|
-
if (!hasTrustedPrincipal(principal))
|
|
10
|
-
return unavailable("BROWSER_AUTH_REQUIRED", false);
|
|
11
|
-
if (!principal.permissions.includes("browser.use"))
|
|
12
|
-
return unavailable("BROWSER_FORBIDDEN", false);
|
|
13
|
-
if (!hasSafeRuntime(readiness))
|
|
14
|
-
return unavailableBrowserRemoteCapability();
|
|
15
|
-
return {
|
|
16
|
-
available: true,
|
|
17
|
-
protocolVersions: [BROWSER_PROTOCOL_VERSION],
|
|
18
|
-
profileModes: ["ephemeral"],
|
|
19
|
-
limits: {
|
|
20
|
-
maxTabsPerSession: readiness.limits.maxTabsPerSession,
|
|
21
|
-
maxSessionsPerPrincipal: readiness.limits.maxSessionsPerPrincipal,
|
|
22
|
-
},
|
|
23
|
-
egress: {
|
|
24
|
-
mode: readiness.egress.mode,
|
|
25
|
-
privateNetworksBlocked: true,
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
function hasTrustedPrincipal(principal) {
|
|
30
|
-
if (!isRecord(principal) || typeof principal["subject"] !== "string" || !Array.isArray(principal["permissions"]))
|
|
31
|
-
return false;
|
|
32
|
-
return principal["subject"].trim() !== "" && principal["permissions"].every(isBrowserPermission);
|
|
33
|
-
}
|
|
34
|
-
function isBrowserPermission(value) {
|
|
35
|
-
return value === "browser.use" || value === "browser.admin" || value === "browser.persistent-profile";
|
|
36
|
-
}
|
|
37
|
-
function hasSafeRuntime(readiness) {
|
|
38
|
-
if (!isRecord(readiness) || !isRecord(readiness["egress"]) || !Array.isArray(readiness["protocolVersions"]))
|
|
39
|
-
return false;
|
|
40
|
-
const egress = readiness["egress"];
|
|
41
|
-
return readiness["controlChannel"] === "authenticated-private"
|
|
42
|
-
&& readiness["chromiumSandbox"] === "enforced"
|
|
43
|
-
&& readiness["profileIsolation"] === "ephemeral-per-principal"
|
|
44
|
-
&& readiness["hostIsolation"] === "enforced"
|
|
45
|
-
&& readiness["debuggingTransport"] === "pipe-private"
|
|
46
|
-
&& egress["state"] === "enforced"
|
|
47
|
-
&& (egress["mode"] === "public-web" || egress["mode"] === "domain-allowlist")
|
|
48
|
-
&& egress["privateNetworksBlocked"] === true
|
|
49
|
-
&& readiness["protocolVersions"].includes(BROWSER_PROTOCOL_VERSION)
|
|
50
|
-
&& hasBoundedLimits(readiness["limits"]);
|
|
51
|
-
}
|
|
52
|
-
function hasBoundedLimits(limits) {
|
|
53
|
-
if (!isRecord(limits))
|
|
54
|
-
return false;
|
|
55
|
-
const maxTabsPerSession = limits["maxTabsPerSession"];
|
|
56
|
-
const maxSessionsPerPrincipal = limits["maxSessionsPerPrincipal"];
|
|
57
|
-
return typeof maxTabsPerSession === "number"
|
|
58
|
-
&& typeof maxSessionsPerPrincipal === "number"
|
|
59
|
-
&& isPositiveIntegerAtMost(maxTabsPerSession, MAX_TABS_PER_SESSION)
|
|
60
|
-
&& isPositiveIntegerAtMost(maxSessionsPerPrincipal, MAX_SESSIONS_PER_PRINCIPAL);
|
|
61
|
-
}
|
|
62
|
-
function isPositiveIntegerAtMost(value, maximum) {
|
|
63
|
-
return Number.isSafeInteger(value) && value > 0 && value <= maximum;
|
|
64
|
-
}
|
|
65
|
-
export function unavailableBrowserRemoteCapability() {
|
|
66
|
-
return unavailable("BROWSER_UNAVAILABLE", true);
|
|
67
|
-
}
|
|
68
|
-
function unavailable(code, retryable) {
|
|
69
|
-
return { available: false, code, retryable };
|
|
70
|
-
}
|
|
71
|
-
function isRecord(value) {
|
|
72
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=browserCapabilities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browserCapabilities.js","sourceRoot":"","sources":["../../../src/server/browser/browserCapabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { evaluateBrowserRemoteCapability, unavailableBrowserRemoteCapability } from "./browserCapabilities.js";
|
|
2
|
-
import { unavailableBrowserRuntimeReadiness } from "./browserRuntime.js";
|
|
3
|
-
/**
|
|
4
|
-
* This foundation intentionally registers capability discovery only. Browser
|
|
5
|
-
* controls and remote federation wait for the required runtime/delegation work.
|
|
6
|
-
*/
|
|
7
|
-
export function registerLocalBrowserCapabilityRoutes(app, deps) {
|
|
8
|
-
app.get("/api/machines/local/browser/capabilities", async (request) => {
|
|
9
|
-
const principal = await resolveBrowserPrincipal(request, deps.principalProvider);
|
|
10
|
-
if (principal.status === "unavailable")
|
|
11
|
-
return unavailableBrowserRemoteCapability();
|
|
12
|
-
if (principal.status === "absent")
|
|
13
|
-
return evaluateBrowserRemoteCapability(undefined, unavailableBrowserRuntimeReadiness());
|
|
14
|
-
try {
|
|
15
|
-
return evaluateBrowserRemoteCapability(principal.value, await deps.runtime.readiness());
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return evaluateBrowserRemoteCapability(principal.value, unavailableBrowserRuntimeReadiness());
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
async function resolveBrowserPrincipal(request, provider) {
|
|
23
|
-
if (provider === undefined)
|
|
24
|
-
return { status: "absent" };
|
|
25
|
-
try {
|
|
26
|
-
const principal = await provider.principalFor(request);
|
|
27
|
-
return principal === undefined ? { status: "absent" } : { status: "available", value: principal };
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
request.log.warn({ dependency: "browser-principal-provider" }, "browser principal provider unavailable");
|
|
31
|
-
return { status: "unavailable" };
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=browserCapabilityRoutes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browserCapabilityRoutes.js","sourceRoot":"","sources":["../../../src/server/browser/browserCapabilityRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,kCAAkC,EAAyB,MAAM,0BAA0B,CAAC;AACtI,OAAO,EAAE,kCAAkC,EAA6B,MAAM,qBAAqB,CAAC;AAgBpG;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAAC,GAAoB,EAAE,IAAwC;IACjH,GAAG,CAAC,GAAG,CAAC,0CAA0C,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpE,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjF,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa;YAAE,OAAO,kCAAkC,EAAE,CAAC;QACpF,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,+BAA+B,CAAC,SAAS,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAE3H,IAAI,CAAC;YACH,OAAO,+BAA+B,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,+BAA+B,CAAC,SAAS,CAAC,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,KAAK,UAAU,uBAAuB,CAAC,OAAuB,EAAE,QAA8C;IAC5G,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,4BAA4B,EAAE,EAAE,wCAAwC,CAAC,CAAC;QACzG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
import { isIP } from "node:net";
|
|
2
|
-
const MAX_BROWSER_URL_LENGTH = 8_192;
|
|
3
|
-
const MAX_ALLOWED_DOMAIN_COUNT = 64;
|
|
4
|
-
const MAX_ALLOWED_PORT_COUNT = 16;
|
|
5
|
-
const MAX_DNS_ANSWER_COUNT = 16;
|
|
6
|
-
const DEFAULT_RESOLVER_DEADLINE_MS = 2_000;
|
|
7
|
-
const MAX_RESOLVER_DEADLINE_MS = 10_000;
|
|
8
|
-
const BROWSER_EGRESS_MODES = new Set(["public-web", "domain-allowlist"]);
|
|
9
|
-
const NON_PUBLIC_HOSTS = new Set([
|
|
10
|
-
"localhost",
|
|
11
|
-
"metadata",
|
|
12
|
-
"metadata.google.internal",
|
|
13
|
-
"instance-data",
|
|
14
|
-
"instance-data.ec2.internal",
|
|
15
|
-
]);
|
|
16
|
-
const VALIDATED_BROWSER_EGRESS_POLICIES = new WeakSet();
|
|
17
|
-
const SYSTEM_BROWSER_POLICY_CLOCK = { now: () => Date.now() };
|
|
18
|
-
const SYSTEM_BROWSER_POLICY_TIMER = {
|
|
19
|
-
setTimeout: (callback, delayMs) => setTimeout(callback, delayMs),
|
|
20
|
-
clearTimeout: (handle) => {
|
|
21
|
-
clearTimeout(handle);
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Compile trusted machine configuration once at browser-runtime load/reload.
|
|
26
|
-
* Invalid configuration must keep the runtime unavailable; navigation checks
|
|
27
|
-
* only accept this immutable compiled output and never re-normalize list data.
|
|
28
|
-
*/
|
|
29
|
-
export function compileBrowserEgressPolicy(config) {
|
|
30
|
-
if (!isRecord(config))
|
|
31
|
-
return undefined;
|
|
32
|
-
const mode = config["mode"];
|
|
33
|
-
const allowedDomains = config["allowedDomains"];
|
|
34
|
-
const allowedPorts = config["allowedPorts"];
|
|
35
|
-
if (!isBrowserEgressMode(mode))
|
|
36
|
-
return undefined;
|
|
37
|
-
if (!Array.isArray(allowedDomains) || allowedDomains.length > MAX_ALLOWED_DOMAIN_COUNT)
|
|
38
|
-
return undefined;
|
|
39
|
-
if (!Array.isArray(allowedPorts) || allowedPorts.length > MAX_ALLOWED_PORT_COUNT)
|
|
40
|
-
return undefined;
|
|
41
|
-
const normalizedDomains = [];
|
|
42
|
-
for (const entry of allowedDomains) {
|
|
43
|
-
const normalized = normalizeAllowedDomain(entry);
|
|
44
|
-
if (normalized === undefined)
|
|
45
|
-
return undefined;
|
|
46
|
-
if (!normalizedDomains.includes(normalized))
|
|
47
|
-
normalizedDomains.push(normalized);
|
|
48
|
-
}
|
|
49
|
-
const normalizedPorts = [];
|
|
50
|
-
for (const entry of allowedPorts) {
|
|
51
|
-
if (!isAllowedPort(entry))
|
|
52
|
-
return undefined;
|
|
53
|
-
if (!normalizedPorts.includes(entry))
|
|
54
|
-
normalizedPorts.push(entry);
|
|
55
|
-
}
|
|
56
|
-
if (mode === "domain-allowlist" && normalizedDomains.length === 0)
|
|
57
|
-
return undefined;
|
|
58
|
-
const policy = Object.freeze({
|
|
59
|
-
mode,
|
|
60
|
-
allowedDomains: Object.freeze(normalizedDomains),
|
|
61
|
-
allowedPorts: Object.freeze(normalizedPorts),
|
|
62
|
-
});
|
|
63
|
-
VALIDATED_BROWSER_EGRESS_POLICIES.add(policy);
|
|
64
|
-
return policy;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Parse and constrain an initial browser navigation without making a network
|
|
68
|
-
* request. This module never fetches or proxies a destination; Chromium must
|
|
69
|
-
* invoke the companion egress check for every request.
|
|
70
|
-
*/
|
|
71
|
-
export function evaluateBrowserNavigation(input, policy) {
|
|
72
|
-
if (!isCompiledBrowserEgressPolicy(policy))
|
|
73
|
-
return blocked("policy-invalid");
|
|
74
|
-
if (!isValidUrlInput(input))
|
|
75
|
-
return blocked("invalid-url");
|
|
76
|
-
let url;
|
|
77
|
-
try {
|
|
78
|
-
url = new URL(input);
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
return blocked("invalid-url");
|
|
82
|
-
}
|
|
83
|
-
if (url.protocol !== "http:" && url.protocol !== "https:")
|
|
84
|
-
return blocked("unsupported-scheme");
|
|
85
|
-
if (url.username !== "" || url.password !== "")
|
|
86
|
-
return blocked("userinfo-not-allowed");
|
|
87
|
-
const host = normalizeHostname(url.hostname);
|
|
88
|
-
if (host === undefined)
|
|
89
|
-
return blocked("invalid-url");
|
|
90
|
-
if (isNonPublicHostname(host))
|
|
91
|
-
return blocked("non-public-host");
|
|
92
|
-
const port = effectivePort(url);
|
|
93
|
-
if (!policy.allowedPorts.includes(port))
|
|
94
|
-
return blocked("port-not-allowed");
|
|
95
|
-
const hostAddressKind = isIP(host);
|
|
96
|
-
if (policy.mode === "domain-allowlist") {
|
|
97
|
-
if (hostAddressKind !== 0)
|
|
98
|
-
return blocked("literal-ip-not-allowed");
|
|
99
|
-
if (!isAllowedDomain(host, policy.allowedDomains))
|
|
100
|
-
return blocked("domain-not-allowed");
|
|
101
|
-
}
|
|
102
|
-
else if (hostAddressKind !== 0 && !isPublicInternetAddress(host)) {
|
|
103
|
-
return blocked("non-public-host");
|
|
104
|
-
}
|
|
105
|
-
url.hostname = host;
|
|
106
|
-
return { allowed: true, url: url.href, host, port, auditOrigin: url.origin };
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Resolve a permitted hostname through an injected controlled resolver. This
|
|
110
|
-
* bounded preflight is defense in depth only: a future runtime still needs
|
|
111
|
-
* connection-time interception, a network boundary, and a concurrency budget
|
|
112
|
-
* to defeat rebinding and renderer paths.
|
|
113
|
-
*/
|
|
114
|
-
export async function evaluateBrowserEgress(input, policy, resolver, evaluationOptions) {
|
|
115
|
-
const navigation = evaluateBrowserNavigation(input, policy);
|
|
116
|
-
if (!navigation.allowed)
|
|
117
|
-
return navigation;
|
|
118
|
-
if (isIP(navigation.host) !== 0)
|
|
119
|
-
return navigation;
|
|
120
|
-
const options = resolveEgressEvaluationOptions(evaluationOptions);
|
|
121
|
-
if (options === undefined)
|
|
122
|
-
return blockedWithOrigin("dns-unavailable", navigation.auditOrigin);
|
|
123
|
-
const addresses = await resolveDnsWithDeadline(navigation.host, resolver, options);
|
|
124
|
-
if (!Array.isArray(addresses))
|
|
125
|
-
return blockedWithOrigin("dns-unavailable", navigation.auditOrigin);
|
|
126
|
-
if (addresses.length === 0)
|
|
127
|
-
return blockedWithOrigin("dns-no-addresses", navigation.auditOrigin);
|
|
128
|
-
if (addresses.length > MAX_DNS_ANSWER_COUNT)
|
|
129
|
-
return blockedWithOrigin("dns-answer-limit-exceeded", navigation.auditOrigin);
|
|
130
|
-
for (const address of addresses) {
|
|
131
|
-
if (typeof address !== "string" || !isPublicInternetAddress(address))
|
|
132
|
-
return blockedWithOrigin("non-public-address", navigation.auditOrigin);
|
|
133
|
-
}
|
|
134
|
-
return navigation;
|
|
135
|
-
}
|
|
136
|
-
/** Classify a DNS result or literal destination without exposing it to callers. */
|
|
137
|
-
export function isPublicInternetAddress(address) {
|
|
138
|
-
const normalized = stripIpv6Brackets(address);
|
|
139
|
-
const version = isIP(normalized);
|
|
140
|
-
if (version === 4)
|
|
141
|
-
return isPublicIpv4(normalized);
|
|
142
|
-
if (version !== 6)
|
|
143
|
-
return false;
|
|
144
|
-
const value = parseIpv6(normalized);
|
|
145
|
-
return value !== undefined && isPublicIpv6(value);
|
|
146
|
-
}
|
|
147
|
-
function isCompiledBrowserEgressPolicy(policy) {
|
|
148
|
-
return typeof policy === "object" && policy !== null && VALIDATED_BROWSER_EGRESS_POLICIES.has(policy);
|
|
149
|
-
}
|
|
150
|
-
function isBrowserEgressMode(value) {
|
|
151
|
-
return typeof value === "string" && BROWSER_EGRESS_MODES.has(value);
|
|
152
|
-
}
|
|
153
|
-
function resolveEgressEvaluationOptions(evaluationOptions) {
|
|
154
|
-
const clock = evaluationOptions?.clock ?? SYSTEM_BROWSER_POLICY_CLOCK;
|
|
155
|
-
const timer = evaluationOptions?.timer ?? SYSTEM_BROWSER_POLICY_TIMER;
|
|
156
|
-
const resolverDeadlineMs = evaluationOptions?.resolverDeadlineMs ?? DEFAULT_RESOLVER_DEADLINE_MS;
|
|
157
|
-
if (typeof clock.now !== "function" || typeof timer.setTimeout !== "function" || typeof timer.clearTimeout !== "function")
|
|
158
|
-
return undefined;
|
|
159
|
-
if (!Number.isSafeInteger(resolverDeadlineMs) || resolverDeadlineMs < 1 || resolverDeadlineMs > MAX_RESOLVER_DEADLINE_MS)
|
|
160
|
-
return undefined;
|
|
161
|
-
return { clock, timer, resolverDeadlineMs };
|
|
162
|
-
}
|
|
163
|
-
async function resolveDnsWithDeadline(host, resolver, options) {
|
|
164
|
-
const controller = new AbortController();
|
|
165
|
-
let timerHandle;
|
|
166
|
-
try {
|
|
167
|
-
const startedAtMs = options.clock.now();
|
|
168
|
-
const deadlineAtMs = startedAtMs + options.resolverDeadlineMs;
|
|
169
|
-
if (!Number.isSafeInteger(startedAtMs) || !Number.isSafeInteger(deadlineAtMs))
|
|
170
|
-
return undefined;
|
|
171
|
-
const timeout = new Promise((resolve) => {
|
|
172
|
-
timerHandle = options.timer.setTimeout(() => {
|
|
173
|
-
controller.abort();
|
|
174
|
-
resolve(undefined);
|
|
175
|
-
}, options.resolverDeadlineMs);
|
|
176
|
-
});
|
|
177
|
-
// The race remains bounded even when a resolver ignores the abort signal.
|
|
178
|
-
const resolution = Promise.resolve()
|
|
179
|
-
.then(() => resolver.resolve(host, { signal: controller.signal, deadlineAtMs }))
|
|
180
|
-
.catch(() => undefined);
|
|
181
|
-
return await Promise.race([resolution, timeout]);
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
return undefined;
|
|
185
|
-
}
|
|
186
|
-
finally {
|
|
187
|
-
controller.abort();
|
|
188
|
-
if (timerHandle !== undefined) {
|
|
189
|
-
try {
|
|
190
|
-
options.timer.clearTimeout(timerHandle);
|
|
191
|
-
}
|
|
192
|
-
catch {
|
|
193
|
-
// The resolver is already aborted and the bounded timer can no longer affect the decision.
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
function isAllowedPort(value) {
|
|
199
|
-
return typeof value === "number" && Number.isSafeInteger(value) && value >= 1 && value <= 65_535;
|
|
200
|
-
}
|
|
201
|
-
function isRecord(value) {
|
|
202
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
203
|
-
}
|
|
204
|
-
function isValidUrlInput(input) {
|
|
205
|
-
return input.length > 0
|
|
206
|
-
&& input.length <= MAX_BROWSER_URL_LENGTH
|
|
207
|
-
&& input === input.trim()
|
|
208
|
-
&& !hasControlCharacter(input);
|
|
209
|
-
}
|
|
210
|
-
function hasControlCharacter(value) {
|
|
211
|
-
for (const character of value) {
|
|
212
|
-
const code = character.charCodeAt(0);
|
|
213
|
-
if (code < 32 || code === 127)
|
|
214
|
-
return true;
|
|
215
|
-
}
|
|
216
|
-
return false;
|
|
217
|
-
}
|
|
218
|
-
function normalizeHostname(value) {
|
|
219
|
-
const host = stripIpv6Brackets(value).toLowerCase().replace(/\.+$/u, "");
|
|
220
|
-
if (host === "")
|
|
221
|
-
return undefined;
|
|
222
|
-
if (isIP(host) !== 0)
|
|
223
|
-
return host;
|
|
224
|
-
if (host.length > 253)
|
|
225
|
-
return undefined;
|
|
226
|
-
const labels = host.split(".");
|
|
227
|
-
if (labels.some((label) => label.length === 0 || label.length > 63 || !/^[a-z\d](?:[a-z\d-]*[a-z\d])?$/u.test(label)))
|
|
228
|
-
return undefined;
|
|
229
|
-
return host;
|
|
230
|
-
}
|
|
231
|
-
function stripIpv6Brackets(value) {
|
|
232
|
-
return value.startsWith("[") && value.endsWith("]") ? value.slice(1, -1) : value;
|
|
233
|
-
}
|
|
234
|
-
function isNonPublicHostname(host) {
|
|
235
|
-
return isIP(host) === 0 && (!host.includes(".")
|
|
236
|
-
|| NON_PUBLIC_HOSTS.has(host)
|
|
237
|
-
|| host.endsWith(".localhost")
|
|
238
|
-
|| host.endsWith(".local")
|
|
239
|
-
|| host.endsWith(".internal"));
|
|
240
|
-
}
|
|
241
|
-
function effectivePort(url) {
|
|
242
|
-
if (url.port !== "")
|
|
243
|
-
return Number(url.port);
|
|
244
|
-
return url.protocol === "http:" ? 80 : 443;
|
|
245
|
-
}
|
|
246
|
-
function normalizeAllowedDomain(value) {
|
|
247
|
-
if (typeof value !== "string" || value.trim() !== value || value === "")
|
|
248
|
-
return undefined;
|
|
249
|
-
const wildcard = value.startsWith("*.");
|
|
250
|
-
const rawHost = wildcard ? value.slice(2) : value;
|
|
251
|
-
const host = normalizeHostname(rawHost);
|
|
252
|
-
if (host === undefined || !host.includes(".") || isIP(host) !== 0)
|
|
253
|
-
return undefined;
|
|
254
|
-
return wildcard ? `*.${host}` : host;
|
|
255
|
-
}
|
|
256
|
-
function isAllowedDomain(host, allowedDomains) {
|
|
257
|
-
return allowedDomains.some((normalized) => {
|
|
258
|
-
if (!normalized.startsWith("*."))
|
|
259
|
-
return host === normalized;
|
|
260
|
-
const suffix = normalized.slice(2);
|
|
261
|
-
return host !== suffix && host.endsWith(`.${suffix}`);
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
function blocked(reason) {
|
|
265
|
-
return { allowed: false, reason };
|
|
266
|
-
}
|
|
267
|
-
function blockedWithOrigin(reason, auditOrigin) {
|
|
268
|
-
return { allowed: false, reason, auditOrigin };
|
|
269
|
-
}
|
|
270
|
-
function isPublicIpv4(address) {
|
|
271
|
-
const octets = parseIpv4Octets(address);
|
|
272
|
-
if (octets === undefined)
|
|
273
|
-
return false;
|
|
274
|
-
const [first, second, third, fourth] = octets;
|
|
275
|
-
const value = ((first << 24) | (second << 16) | (third << 8) | fourth) >>> 0;
|
|
276
|
-
return !NON_PUBLIC_IPV4_PREFIXES.some(([prefix, bits]) => isIpv4Prefix(value, prefix, bits));
|
|
277
|
-
}
|
|
278
|
-
const NON_PUBLIC_IPV4_PREFIXES = [
|
|
279
|
-
[0x0000_0000, 8], // unspecified and "this" network
|
|
280
|
-
[0x0a00_0000, 8], // RFC1918
|
|
281
|
-
[0x6440_0000, 10], // carrier-grade NAT
|
|
282
|
-
[0x7f00_0000, 8], // loopback
|
|
283
|
-
[0xa9fe_0000, 16], // link-local / cloud metadata
|
|
284
|
-
[0xac10_0000, 12], // RFC1918
|
|
285
|
-
[0xc000_0000, 24], // IETF protocol assignments
|
|
286
|
-
[0xc000_0200, 24], // documentation
|
|
287
|
-
[0xc0a8_0000, 16], // RFC1918
|
|
288
|
-
[0xc612_0000, 15], // benchmarking
|
|
289
|
-
[0xc633_6400, 24], // documentation
|
|
290
|
-
[0xcb00_7100, 24], // documentation
|
|
291
|
-
[0xe000_0000, 4], // multicast and reserved
|
|
292
|
-
];
|
|
293
|
-
function isIpv4Prefix(value, prefix, bits) {
|
|
294
|
-
const mask = (0xffff_ffff << (32 - bits)) >>> 0;
|
|
295
|
-
return (value & mask) === (prefix & mask);
|
|
296
|
-
}
|
|
297
|
-
function isPublicIpv6(value) {
|
|
298
|
-
const embeddedIpv4 = embeddedIpv4Address(value);
|
|
299
|
-
if (embeddedIpv4 !== undefined)
|
|
300
|
-
return isPublicIpv4(integerToIpv4(embeddedIpv4));
|
|
301
|
-
if (isIpv6Prefix(value, IPV4_IPV6_TRANSLATION_ALLOCATION.prefix, IPV4_IPV6_TRANSLATION_ALLOCATION.bits))
|
|
302
|
-
return false;
|
|
303
|
-
if (!isIpv6Prefix(value, PUBLIC_NATIVE_IPV6_GLOBAL_UNICAST.prefix, PUBLIC_NATIVE_IPV6_GLOBAL_UNICAST.bits))
|
|
304
|
-
return false;
|
|
305
|
-
return !UNSUPPORTED_NATIVE_IPV6_PREFIXES.some(({ prefix, bits }) => isIpv6Prefix(value, prefix, bits));
|
|
306
|
-
}
|
|
307
|
-
function embeddedIpv4Address(value) {
|
|
308
|
-
if (!IPV4_EMBEDDED_IPV6_PREFIXES.some(({ prefix, bits }) => isIpv6Prefix(value, prefix, bits)))
|
|
309
|
-
return undefined;
|
|
310
|
-
return Number(value & 0xffffffffn);
|
|
311
|
-
}
|
|
312
|
-
function integerToIpv4(value) {
|
|
313
|
-
return [value >>> 24, (value >>> 16) & 255, (value >>> 8) & 255, value & 255].join(".");
|
|
314
|
-
}
|
|
315
|
-
function isIpv6Prefix(value, prefix, bits) {
|
|
316
|
-
return value >> BigInt(128 - bits) === prefix >> BigInt(128 - bits);
|
|
317
|
-
}
|
|
318
|
-
function parseIpv6(address) {
|
|
319
|
-
let normalized = address.toLowerCase();
|
|
320
|
-
const ipv4 = /\d+\.\d+\.\d+\.\d+$/u.exec(normalized)?.[0];
|
|
321
|
-
if (ipv4 !== undefined) {
|
|
322
|
-
const octets = parseIpv4Octets(ipv4);
|
|
323
|
-
if (octets === undefined)
|
|
324
|
-
return undefined;
|
|
325
|
-
const [first, second, third, fourth] = octets;
|
|
326
|
-
const highGroup = ((first << 8) | second).toString(16);
|
|
327
|
-
const lowGroup = ((third << 8) | fourth).toString(16);
|
|
328
|
-
normalized = `${normalized.slice(0, -ipv4.length)}${highGroup}:${lowGroup}`;
|
|
329
|
-
}
|
|
330
|
-
const halves = normalized.split("::");
|
|
331
|
-
if (halves.length > 2)
|
|
332
|
-
return undefined;
|
|
333
|
-
const [leftHalf, rightHalf] = halves;
|
|
334
|
-
if (leftHalf === undefined)
|
|
335
|
-
return undefined;
|
|
336
|
-
const left = leftHalf === "" ? [] : leftHalf.split(":");
|
|
337
|
-
const right = rightHalf === undefined || rightHalf === "" ? [] : rightHalf.split(":");
|
|
338
|
-
const missing = 8 - left.length - right.length;
|
|
339
|
-
if ((rightHalf === undefined && missing !== 0) || (rightHalf !== undefined && missing < 1))
|
|
340
|
-
return undefined;
|
|
341
|
-
const groups = [...left, ...Array.from({ length: missing }, () => "0"), ...right];
|
|
342
|
-
if (groups.length !== 8 || groups.some((group) => !/^[\da-f]{1,4}$/u.test(group)))
|
|
343
|
-
return undefined;
|
|
344
|
-
return groups.reduce((result, group) => (result << 16n) | BigInt(`0x${group}`), 0n);
|
|
345
|
-
}
|
|
346
|
-
function parseIpv4Octets(address) {
|
|
347
|
-
const parts = address.split(".").map(Number);
|
|
348
|
-
const [first, second, third, fourth] = parts;
|
|
349
|
-
if (parts.length !== 4 || first === undefined || second === undefined || third === undefined || fourth === undefined)
|
|
350
|
-
return undefined;
|
|
351
|
-
if (![first, second, third, fourth].every((part) => Number.isInteger(part) && part >= 0 && part <= 255))
|
|
352
|
-
return undefined;
|
|
353
|
-
return [first, second, third, fourth];
|
|
354
|
-
}
|
|
355
|
-
const IPV4_EMBEDDED_IPV6_PREFIXES = [
|
|
356
|
-
ipv6Prefix("::", 96), // IPv4-compatible
|
|
357
|
-
ipv6Prefix("::ffff:0:0", 96), // IPv4-mapped
|
|
358
|
-
ipv6Prefix("::ffff:0:0:0", 96), // IPv4-translated
|
|
359
|
-
ipv6Prefix("64:ff9b::", 96), // well-known NAT64
|
|
360
|
-
];
|
|
361
|
-
// Only the well-known /96 translation prefix is understood by this pure
|
|
362
|
-
// classifier. Other addresses in the IANA translation allocation fail closed.
|
|
363
|
-
const IPV4_IPV6_TRANSLATION_ALLOCATION = ipv6Prefix("64:ff9b::", 32);
|
|
364
|
-
// Native IPv6 is public only in the ordinary global-unicast /3. This rejects
|
|
365
|
-
// site-local, ULA, link-local, multicast, and non-GUA/unallocated 4000::/3.
|
|
366
|
-
const PUBLIC_NATIVE_IPV6_GLOBAL_UNICAST = ipv6Prefix("2000::", 3);
|
|
367
|
-
const UNSUPPORTED_NATIVE_IPV6_PREFIXES = [
|
|
368
|
-
// IETF protocol assignments include Teredo (2001::/32) and ORCHIDv2
|
|
369
|
-
// (2001:20::/28). Do not decode or permit any Teredo endpoint fields.
|
|
370
|
-
ipv6Prefix("2001::", 23),
|
|
371
|
-
ipv6Prefix("2001:db8::", 32), // documentation
|
|
372
|
-
ipv6Prefix("2002::", 16), // 6to4 transition addresses
|
|
373
|
-
ipv6Prefix("2620:4f:8000::", 48), // AS112 direct delegation
|
|
374
|
-
ipv6Prefix("3fff::", 20), // documentation
|
|
375
|
-
];
|
|
376
|
-
function ipv6Prefix(address, bits) {
|
|
377
|
-
const prefix = parseIpv6(address);
|
|
378
|
-
if (prefix === undefined)
|
|
379
|
-
throw new Error(`Invalid built-in IPv6 prefix: ${address}`);
|
|
380
|
-
return { prefix, bits };
|
|
381
|
-
}
|
|
382
|
-
//# sourceMappingURL=browserPolicy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browserPolicy.js","sourceRoot":"","sources":["../../../src/server/browser/browserPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export function unavailableBrowserRuntimeReadiness() {
|
|
2
|
-
return {
|
|
3
|
-
controlChannel: "unavailable",
|
|
4
|
-
chromiumSandbox: "unavailable",
|
|
5
|
-
profileIsolation: "unavailable",
|
|
6
|
-
hostIsolation: "unavailable",
|
|
7
|
-
debuggingTransport: "unavailable",
|
|
8
|
-
egress: { state: "unavailable", mode: "domain-allowlist", privateNetworksBlocked: false },
|
|
9
|
-
protocolVersions: [],
|
|
10
|
-
limits: { maxTabsPerSession: 0, maxSessionsPerPrincipal: 0 },
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export function unavailableBrowserRuntime() {
|
|
14
|
-
return { readiness: () => Promise.resolve(unavailableBrowserRuntimeReadiness()) };
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=browserRuntime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browserRuntime.js","sourceRoot":"","sources":["../../../src/server/browser/browserRuntime.ts"],"names":[],"mappings":"AA0CA,MAAM,UAAU,kCAAkC;IAChD,OAAO;QACL,cAAc,EAAE,aAAa;QAC7B,eAAe,EAAE,aAAa;QAC9B,gBAAgB,EAAE,aAAa;QAC/B,aAAa,EAAE,aAAa;QAC5B,kBAAkB,EAAE,aAAa;QACjC,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,KAAK,EAAE;QACzF,gBAAgB,EAAE,EAAE;QACpB,MAAM,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC,EAAE,CAAC;AACpF,CAAC"}
|