@melra/browser-runtime 0.3.0-alpha.3

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 (58) hide show
  1. package/LICENSE +202 -0
  2. package/dist/browser-connection.d.ts +17 -0
  3. package/dist/browser-connection.d.ts.map +1 -0
  4. package/dist/browser-connection.js +95 -0
  5. package/dist/browser-connection.js.map +1 -0
  6. package/dist/browser-connection.test.d.ts +2 -0
  7. package/dist/browser-connection.test.d.ts.map +1 -0
  8. package/dist/browser-connection.test.js +123 -0
  9. package/dist/browser-connection.test.js.map +1 -0
  10. package/dist/dialogs.test.d.ts +2 -0
  11. package/dist/dialogs.test.d.ts.map +1 -0
  12. package/dist/dialogs.test.js +165 -0
  13. package/dist/dialogs.test.js.map +1 -0
  14. package/dist/frames.test.d.ts +2 -0
  15. package/dist/frames.test.d.ts.map +1 -0
  16. package/dist/frames.test.js +157 -0
  17. package/dist/frames.test.js.map +1 -0
  18. package/dist/history-tabs.test.d.ts +2 -0
  19. package/dist/history-tabs.test.d.ts.map +1 -0
  20. package/dist/history-tabs.test.js +171 -0
  21. package/dist/history-tabs.test.js.map +1 -0
  22. package/dist/index.d.ts +124 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +822 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/input-fidelity.test.d.ts +2 -0
  27. package/dist/input-fidelity.test.d.ts.map +1 -0
  28. package/dist/input-fidelity.test.js +260 -0
  29. package/dist/input-fidelity.test.js.map +1 -0
  30. package/dist/network-policy.d.ts +7 -0
  31. package/dist/network-policy.d.ts.map +1 -0
  32. package/dist/network-policy.js +112 -0
  33. package/dist/network-policy.js.map +1 -0
  34. package/dist/network-policy.test.d.ts +2 -0
  35. package/dist/network-policy.test.d.ts.map +1 -0
  36. package/dist/network-policy.test.js +21 -0
  37. package/dist/network-policy.test.js.map +1 -0
  38. package/dist/see-act.test.d.ts +2 -0
  39. package/dist/see-act.test.d.ts.map +1 -0
  40. package/dist/see-act.test.js +152 -0
  41. package/dist/see-act.test.js.map +1 -0
  42. package/dist/selector.d.ts +30 -0
  43. package/dist/selector.d.ts.map +1 -0
  44. package/dist/selector.js +39 -0
  45. package/dist/selector.js.map +1 -0
  46. package/dist/selector.test.d.ts +2 -0
  47. package/dist/selector.test.d.ts.map +1 -0
  48. package/dist/selector.test.js +34 -0
  49. package/dist/selector.test.js.map +1 -0
  50. package/dist/stable-dom.d.ts +21 -0
  51. package/dist/stable-dom.d.ts.map +1 -0
  52. package/dist/stable-dom.js +76 -0
  53. package/dist/stable-dom.js.map +1 -0
  54. package/dist/stable-dom.test.d.ts +2 -0
  55. package/dist/stable-dom.test.d.ts.map +1 -0
  56. package/dist/stable-dom.test.js +22 -0
  57. package/dist/stable-dom.test.js.map +1 -0
  58. package/package.json +33 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=input-fidelity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-fidelity.test.d.ts","sourceRoot":"","sources":["../src/input-fidelity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,260 @@
1
+ // Copyright 2026 XAGI Labs Private Limited
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { createServer } from "node:http";
4
+ import { mkdtemp, rm } from "node:fs/promises";
5
+ import { tmpdir } from "node:os";
6
+ import { join } from "node:path";
7
+ import { BrowserOperationSchema } from "@melra/protocol";
8
+ import { afterEach, describe, expect, it } from "vitest";
9
+ import { BrowserRuntime, detectBrowserExecutable } from "./index.js";
10
+ /**
11
+ * Typing went through `.fill()`, which assigns the value and fires one `input`
12
+ * event. Every widget that listens for keystrokes — autocomplete, comboboxes,
13
+ * submit buttons enabled on `keyup` — saw nothing. There was also no way to wait
14
+ * for the page to reach a state, so callers padded `settleTimeoutMs` and hoped.
15
+ */
16
+ const roots = [];
17
+ const servers = [];
18
+ afterEach(async () => {
19
+ await Promise.all(servers.splice(0).map((server) => new Promise((done) => {
20
+ server.close(() => done());
21
+ })));
22
+ await Promise.all(roots.splice(0).map((root) => rm(root, { recursive: true, force: true })));
23
+ });
24
+ /**
25
+ * A form that records the keystrokes it receives, a panel that appears late,
26
+ * and enough height to scroll. `/done` is where submitting lands.
27
+ */
28
+ const PAGE = `<!doctype html><html><head><title>form</title></head><body>
29
+ <form action="/done" method="get">
30
+ <input id="email" name="email">
31
+ <input id="password" name="password">
32
+ <button id="sign-in" type="submit">Sign in</button>
33
+ </form>
34
+ <div id="keys">keys: 0</div>
35
+ <div style="height: 4000px"></div>
36
+ <script>
37
+ let keys = 0;
38
+ for (const field of document.querySelectorAll('input')) {
39
+ field.addEventListener('keydown', () => {
40
+ keys += 1;
41
+ document.getElementById('keys').textContent = 'keys: ' + keys;
42
+ });
43
+ }
44
+ setTimeout(() => {
45
+ const panel = document.createElement('div');
46
+ panel.id = 'late';
47
+ panel.textContent = 'ready at last';
48
+ document.body.append(panel);
49
+ }, 400);
50
+ </script>
51
+ </body></html>`;
52
+ async function fixture() {
53
+ const executablePath = await detectBrowserExecutable();
54
+ if (executablePath === undefined)
55
+ return undefined;
56
+ const server = createServer((request, response) => {
57
+ response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
58
+ response.end((request.url ?? "/").startsWith("/done")
59
+ ? "<!doctype html><html><head><title>done</title></head><body><h1>done</h1></body></html>"
60
+ : PAGE);
61
+ });
62
+ servers.push(server);
63
+ await new Promise((done) => {
64
+ server.listen(0, "127.0.0.1", done);
65
+ });
66
+ const address = server.address();
67
+ if (address === null || typeof address === "string") {
68
+ throw new Error("fixture_server_address_unavailable");
69
+ }
70
+ const root = await mkdtemp(join(tmpdir(), "melra-input-fidelity-"));
71
+ roots.push(root);
72
+ return {
73
+ runtime: new BrowserRuntime({
74
+ workspaceRoot: root,
75
+ artifactDirectory: join(root, "artifacts"),
76
+ executablePath,
77
+ allowedDomains: ["127.0.0.1"],
78
+ allowLocalhost: true,
79
+ }),
80
+ url: `http://127.0.0.1:${address.port}`,
81
+ };
82
+ }
83
+ const op = (fields) => BrowserOperationSchema.parse({ kind: "browser", ...fields });
84
+ const valueOf = (result, id) => result.elements.find((element) => element.id === id)?.value ?? null;
85
+ describe("browser typing", () => {
86
+ it("dispatches one key event per character", async () => {
87
+ const context = await fixture();
88
+ if (context === undefined)
89
+ return;
90
+ const { runtime, url } = context;
91
+ try {
92
+ await runtime.execute(op({ action: "navigate", url }));
93
+ const typed = await runtime.execute(op({
94
+ action: "type",
95
+ target: { selector: "#email" },
96
+ value: "hello",
97
+ // Clearing an empty field costs a `Delete` keystroke of its own, so
98
+ // skip it here to make the count exactly the text.
99
+ clearFirst: false,
100
+ }));
101
+ expect(valueOf(typed, "email")).toBe("hello");
102
+ // `.fill()` would leave this at 0: the page would have the text but no
103
+ // idea anyone had typed it.
104
+ expect(typed.text).toContain("keys: 5");
105
+ }
106
+ finally {
107
+ await runtime.close();
108
+ }
109
+ }, 120_000);
110
+ it("replaces the field by default and appends when told not to clear", async () => {
111
+ const context = await fixture();
112
+ if (context === undefined)
113
+ return;
114
+ const { runtime, url } = context;
115
+ try {
116
+ await runtime.execute(op({ action: "navigate", url }));
117
+ await runtime.execute(op({ action: "type", target: { selector: "#email" }, value: "first" }));
118
+ const replaced = await runtime.execute(op({ action: "type", target: { selector: "#email" }, value: "second" }));
119
+ expect(valueOf(replaced, "email")).toBe("second");
120
+ const appended = await runtime.execute(op({
121
+ action: "type",
122
+ target: { selector: "#email" },
123
+ value: "-more",
124
+ clearFirst: false,
125
+ }));
126
+ expect(valueOf(appended, "email")).toBe("second-more");
127
+ }
128
+ finally {
129
+ await runtime.close();
130
+ }
131
+ }, 120_000);
132
+ it("fills a whole form and submits it as one action", async () => {
133
+ const context = await fixture();
134
+ if (context === undefined)
135
+ return;
136
+ const { runtime, url } = context;
137
+ try {
138
+ await runtime.execute(op({ action: "navigate", url }));
139
+ const filled = await runtime.execute(op({
140
+ action: "fill_form",
141
+ fields: [
142
+ { target: { selector: "#email" }, value: "user@example.com" },
143
+ { target: { selector: "#password" }, value: "hunter2" },
144
+ ],
145
+ target: { selector: "#sign-in" },
146
+ }));
147
+ expect(filled.filled).toBe(2);
148
+ expect(filled.submitted).toBe(true);
149
+ expect(filled.title).toBe("done");
150
+ }
151
+ finally {
152
+ await runtime.close();
153
+ }
154
+ }, 120_000);
155
+ it("fills without submitting when no submit target is given", async () => {
156
+ const context = await fixture();
157
+ if (context === undefined)
158
+ return;
159
+ const { runtime, url } = context;
160
+ try {
161
+ await runtime.execute(op({ action: "navigate", url }));
162
+ const filled = await runtime.execute(op({
163
+ action: "fill_form",
164
+ fields: [{ target: { selector: "#password" }, value: "hunter2" }],
165
+ }));
166
+ expect(filled.submitted).toBe(false);
167
+ expect(valueOf(filled, "password")).toBe("hunter2");
168
+ }
169
+ finally {
170
+ await runtime.close();
171
+ }
172
+ }, 120_000);
173
+ });
174
+ describe("browser wait", () => {
175
+ it("waits for an element that has not rendered yet", async () => {
176
+ const context = await fixture();
177
+ if (context === undefined)
178
+ return;
179
+ const { runtime, url } = context;
180
+ try {
181
+ await runtime.execute(op({ action: "navigate", url }));
182
+ // The panel is added 400ms in, which is past the DOM-settle window, so
183
+ // acting on it without waiting is a race.
184
+ const waited = await runtime.execute(op({ action: "wait", target: { selector: "#late" }, state: "visible" }));
185
+ expect(waited.waited).toBe(true);
186
+ expect(waited.text).toContain("ready at last");
187
+ }
188
+ finally {
189
+ await runtime.close();
190
+ }
191
+ }, 120_000);
192
+ it("waits for a URL substring and for page text", async () => {
193
+ const context = await fixture();
194
+ if (context === undefined)
195
+ return;
196
+ const { runtime, url } = context;
197
+ try {
198
+ await runtime.execute(op({ action: "navigate", url }));
199
+ await runtime.execute(op({ action: "click", target: { selector: "#sign-in" } }));
200
+ const arrived = await runtime.execute(op({ action: "wait", urlContains: "/done" }));
201
+ expect(arrived.url).toContain("/done");
202
+ const text = await runtime.execute(op({ action: "wait", value: "done" }));
203
+ expect(text.waited).toBe(true);
204
+ }
205
+ finally {
206
+ await runtime.close();
207
+ }
208
+ }, 120_000);
209
+ it("refuses a wait with no condition", async () => {
210
+ const context = await fixture();
211
+ if (context === undefined)
212
+ return;
213
+ const { runtime, url } = context;
214
+ try {
215
+ await runtime.execute(op({ action: "navigate", url }));
216
+ await expect(runtime.execute(op({ action: "wait" }))).rejects.toThrow("browser_wait_requires_target_url_contains_or_value");
217
+ }
218
+ finally {
219
+ await runtime.close();
220
+ }
221
+ }, 120_000);
222
+ });
223
+ describe("browser scroll", () => {
224
+ it("scrolls by the requested distance and reports where it landed", async () => {
225
+ const context = await fixture();
226
+ if (context === undefined)
227
+ return;
228
+ const { runtime, url } = context;
229
+ try {
230
+ await runtime.execute(op({ action: "navigate", url }));
231
+ const scrolled = await runtime.execute(op({ action: "scroll", direction: "down", pixels: 1_200 }));
232
+ expect(scrolled.scrollY).toBe(1_200);
233
+ const back = await runtime.execute(op({ action: "scroll", direction: "top" }));
234
+ expect(back.scrollY).toBe(0);
235
+ }
236
+ finally {
237
+ await runtime.close();
238
+ }
239
+ }, 120_000);
240
+ });
241
+ describe("browser results", () => {
242
+ it("reports success, which is what derived evidence checks", async () => {
243
+ const context = await fixture();
244
+ if (context === undefined)
245
+ return;
246
+ const { runtime, url } = context;
247
+ try {
248
+ // Policy derives `result_equals success true` for a browser mutation the
249
+ // caller declared no evidence for. Without the flag every such task
250
+ // verified as `partial` however well it went.
251
+ expect((await runtime.execute(op({ action: "navigate", url }))).success).toBe(true);
252
+ expect((await runtime.execute(op({ action: "click", target: { selector: "#sign-in" } })))
253
+ .success).toBe(true);
254
+ }
255
+ finally {
256
+ await runtime.close();
257
+ }
258
+ }, 120_000);
259
+ });
260
+ //# sourceMappingURL=input-fidelity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-fidelity.test.js","sourceRoot":"","sources":["../src/input-fidelity.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function isPrivateAddress(address: string): boolean;
2
+ export interface NetworkPolicy {
3
+ allowedDomains: string[];
4
+ allowLocalhost: boolean;
5
+ }
6
+ export declare function assertSafeUrl(rawUrl: string, policy: NetworkPolicy): Promise<URL>;
7
+ //# sourceMappingURL=network-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.d.ts","sourceRoot":"","sources":["../src/network-policy.ts"],"names":[],"mappings":"AAqCA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAkCzD;AASD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB;AAWD,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,GAAG,CAAC,CAqCd"}
@@ -0,0 +1,112 @@
1
+ // Copyright 2026 XAGI Labs Private Limited
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { isIP } from "node:net";
4
+ import { lookup } from "node:dns/promises";
5
+ function ipv4Number(address) {
6
+ return address
7
+ .split(".")
8
+ .map(Number)
9
+ .reduce((value, octet) => (value << 8) + octet, 0) >>> 0;
10
+ }
11
+ function inIpv4Range(address, base, bits) {
12
+ const mask = bits === 0 ? 0 : (0xffffffff << (32 - bits)) >>> 0;
13
+ return (ipv4Number(address) & mask) === (ipv4Number(base) & mask);
14
+ }
15
+ function mappedIpv4Address(address) {
16
+ const normalized = address.toLowerCase();
17
+ if (!normalized.startsWith("::ffff:"))
18
+ return undefined;
19
+ const suffix = normalized.slice("::ffff:".length);
20
+ if (isIP(suffix) === 4)
21
+ return suffix;
22
+ const groups = suffix.split(":");
23
+ if (groups.length !== 2 || groups.some((group) => !/^[a-f0-9]{1,4}$/.test(group))) {
24
+ return undefined;
25
+ }
26
+ const high = Number.parseInt(groups[0], 16);
27
+ const low = Number.parseInt(groups[1], 16);
28
+ return [
29
+ high >>> 8,
30
+ high & 0xff,
31
+ low >>> 8,
32
+ low & 0xff,
33
+ ].join(".");
34
+ }
35
+ export function isPrivateAddress(address) {
36
+ const version = isIP(address);
37
+ if (version === 4) {
38
+ return [
39
+ ["0.0.0.0", 8],
40
+ ["10.0.0.0", 8],
41
+ ["100.64.0.0", 10],
42
+ ["127.0.0.0", 8],
43
+ ["169.254.0.0", 16],
44
+ ["172.16.0.0", 12],
45
+ ["192.0.0.0", 24],
46
+ ["192.168.0.0", 16],
47
+ ["198.18.0.0", 15],
48
+ ["224.0.0.0", 4],
49
+ ["240.0.0.0", 4],
50
+ ].some(([base, bits]) => inIpv4Range(address, base, bits));
51
+ }
52
+ if (version === 6) {
53
+ const normalized = address.toLowerCase();
54
+ const mapped = mappedIpv4Address(normalized);
55
+ if (mapped !== undefined)
56
+ return isPrivateAddress(mapped);
57
+ return (normalized === "::" ||
58
+ normalized === "::1" ||
59
+ normalized.startsWith("fc") ||
60
+ normalized.startsWith("fd") ||
61
+ normalized.startsWith("fe8") ||
62
+ normalized.startsWith("fe9") ||
63
+ normalized.startsWith("fea") ||
64
+ normalized.startsWith("feb") ||
65
+ normalized.startsWith("ff"));
66
+ }
67
+ return false;
68
+ }
69
+ function isLoopbackAddress(address) {
70
+ if (isIP(address) === 4)
71
+ return inIpv4Range(address, "127.0.0.0", 8);
72
+ const normalized = address.toLowerCase();
73
+ const mapped = mappedIpv4Address(normalized);
74
+ return normalized === "::1" || (mapped !== undefined && isLoopbackAddress(mapped));
75
+ }
76
+ function domainAllowed(host, allowed) {
77
+ return allowed.some((entry) => entry === "*" ||
78
+ host === entry.toLowerCase() ||
79
+ host.endsWith(`.${entry.toLowerCase()}`));
80
+ }
81
+ export async function assertSafeUrl(rawUrl, policy) {
82
+ const url = new URL(rawUrl);
83
+ if (!["http:", "https:"].includes(url.protocol)) {
84
+ throw new Error("browser_protocol_not_allowed");
85
+ }
86
+ if (url.username !== "" || url.password !== "") {
87
+ throw new Error("browser_url_credentials_not_allowed");
88
+ }
89
+ const host = url.hostname.toLowerCase();
90
+ const localName = host === "localhost" || host.endsWith(".localhost");
91
+ if (localName && !policy.allowLocalhost) {
92
+ throw new Error("browser_private_destination_blocked");
93
+ }
94
+ if (!domainAllowed(host, policy.allowedDomains)) {
95
+ throw new Error("browser_domain_not_allowed");
96
+ }
97
+ if (isIP(host)) {
98
+ if (isPrivateAddress(host) &&
99
+ !(policy.allowLocalhost && isLoopbackAddress(host))) {
100
+ throw new Error("browser_private_destination_blocked");
101
+ }
102
+ return url;
103
+ }
104
+ const addresses = await lookup(host, { all: true, verbatim: true });
105
+ if (addresses.length === 0 ||
106
+ addresses.some((item) => isPrivateAddress(item.address) &&
107
+ !(policy.allowLocalhost && isLoopbackAddress(item.address)))) {
108
+ throw new Error("browser_private_destination_blocked");
109
+ }
110
+ return url;
111
+ }
112
+ //# sourceMappingURL=network-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.js","sourceRoot":"","sources":["../src/network-policy.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,sCAAsC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,MAAM,CAAC;SACX,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,IAAY;IAC9D,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,KAAK,CAAC;QACV,IAAI,GAAG,IAAI;QACX,GAAG,KAAK,CAAC;QACT,GAAG,GAAG,IAAI;KACX,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,CAAC,SAAS,EAAE,CAAC,CAAC;YACd,CAAC,UAAU,EAAE,CAAC,CAAC;YACf,CAAC,YAAY,EAAE,EAAE,CAAC;YAClB,CAAC,WAAW,EAAE,CAAC,CAAC;YAChB,CAAC,aAAa,EAAE,EAAE,CAAC;YACnB,CAAC,YAAY,EAAE,EAAE,CAAC;YAClB,CAAC,WAAW,EAAE,EAAE,CAAC;YACjB,CAAC,aAAa,EAAE,EAAE,CAAC;YACnB,CAAC,YAAY,EAAE,EAAE,CAAC;YAClB,CAAC,WAAW,EAAE,CAAC,CAAC;YAChB,CAAC,WAAW,EAAE,CAAC,CAAC;SACjB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAc,EAAE,IAAc,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,CACL,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,KAAK;YACpB,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;YAC5B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;YAC5B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;YAC5B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;YAC5B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAC5B,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,UAAU,KAAK,KAAK,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACrF,CAAC;AAOD,SAAS,aAAa,CAAC,IAAY,EAAE,OAAiB;IACpD,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,GAAG;QACb,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,MAAqB;IAErB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtE,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACf,IACE,gBAAgB,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,EACnD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,SAAS,CAAC,IAAI,CACZ,CAAC,IAAI,EAAE,EAAE,CACP,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAC9D,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=network-policy.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.test.d.ts","sourceRoot":"","sources":["../src/network-policy.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ // Copyright 2026 XAGI Labs Private Limited
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { describe, expect, it } from "vitest";
4
+ import { assertSafeUrl, isPrivateAddress } from "./network-policy.js";
5
+ describe("browser network policy", () => {
6
+ it("classifies private IPv4 and IPv6 destinations", () => {
7
+ expect(isPrivateAddress("127.0.0.1")).toBe(true);
8
+ expect(isPrivateAddress("169.254.169.254")).toBe(true);
9
+ expect(isPrivateAddress("10.1.2.3")).toBe(true);
10
+ expect(isPrivateAddress("::1")).toBe(true);
11
+ expect(isPrivateAddress("::ffff:ac10:1")).toBe(true);
12
+ expect(isPrivateAddress("::ffff:192.168.1.1")).toBe(true);
13
+ expect(isPrivateAddress("8.8.8.8")).toBe(false);
14
+ });
15
+ it("blocks credentials and localhost by default", async () => {
16
+ const policy = { allowedDomains: ["*"], allowLocalhost: false };
17
+ await expect(assertSafeUrl("http://127.0.0.1", policy)).rejects.toThrow("browser_private_destination_blocked");
18
+ await expect(assertSafeUrl("https://user:pass@example.com", policy)).rejects.toThrow("browser_url_credentials_not_allowed");
19
+ });
20
+ });
21
+ //# sourceMappingURL=network-policy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.test.js","sourceRoot":"","sources":["../src/network-policy.test.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,sCAAsC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAChE,MAAM,MAAM,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACrE,qCAAqC,CACtC,CAAC;QACF,MAAM,MAAM,CACV,aAAa,CAAC,+BAA+B,EAAE,MAAM,CAAC,CACvD,CAAC,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=see-act.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"see-act.test.d.ts","sourceRoot":"","sources":["../src/see-act.test.ts"],"names":[],"mappings":""}