@safebrowse/daemon 0.1.2-rc.1 → 0.1.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 (39) hide show
  1. package/LICENSE +15 -15
  2. package/README.md +31 -31
  3. package/dist/cli.js +9 -9
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/parserIsolation.d.ts +12 -0
  9. package/dist/parserIsolation.d.ts.map +1 -0
  10. package/dist/parserIsolation.js +57 -0
  11. package/dist/parserIsolation.js.map +1 -0
  12. package/dist/parserWorker.d.ts +2 -0
  13. package/dist/parserWorker.d.ts.map +1 -0
  14. package/dist/parserWorker.js +89 -0
  15. package/dist/parserWorker.js.map +1 -0
  16. package/dist/runtime/config/auditor/v4_prompt_injection_coverage_suite.json +2789 -0
  17. package/dist/runtime/knowledge_base/safebrowse_vf_action_integrity_patterns.json +1411 -1411
  18. package/dist/runtime/knowledge_base/safebrowse_vf_artifact_surface_patterns.json +891 -891
  19. package/dist/runtime/knowledge_base/safebrowse_vf_evaluation_scenarios.json +217 -217
  20. package/dist/runtime/knowledge_base/safebrowse_vf_incident_response_playbooks.json +209 -209
  21. package/dist/runtime/knowledge_base/safebrowse_vf_knowledge_base_index.json +143 -143
  22. package/dist/runtime/knowledge_base/safebrowse_vf_knowledge_base_index.json.sig +1 -1
  23. package/dist/runtime/knowledge_base/safebrowse_vf_knowledge_bases.zip.sig +1 -1
  24. package/dist/runtime/knowledge_base/safebrowse_vf_memory_context_poisoning_patterns.json +803 -803
  25. package/dist/runtime/knowledge_base/safebrowse_vf_policy_controls_catalog.json +686 -686
  26. package/dist/runtime/knowledge_base/safebrowse_vf_prompt_injection_patterns.json +9930 -9930
  27. package/dist/runtime/knowledge_base/safebrowse_vf_source_registry.json +345 -345
  28. package/dist/runtime/knowledge_base/safebrowse_vf_tool_protocol_supply_chain_patterns.json +879 -879
  29. package/dist/runtime/knowledge_base/safebrowse_vf_trust_signals_provenance.json +480 -480
  30. package/dist/runtime/knowledge_base/signing/safebrowse_vf_ed25519_public.pem +3 -3
  31. package/dist/runtime/policies/base/research.yaml +43 -43
  32. package/dist/runtime/policies/emergency/default.yaml +14 -14
  33. package/dist/runtime/policies/project/default.yaml +13 -13
  34. package/dist/runtime/policies/tenant/default.yaml +12 -12
  35. package/dist/server.d.ts +1 -0
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +489 -22
  38. package/dist/server.js.map +1 -1
  39. package/package.json +53 -53
package/LICENSE CHANGED
@@ -1,15 +1,15 @@
1
- SafeBrowse Non-Commercial License 1.0
2
-
3
- Copyright (c) 2026 RobKang1234. All rights reserved.
4
-
5
- This package is licensed for non-commercial use only.
6
-
7
- You may use, copy, modify, and redistribute this package for
8
- non-commercial purposes only, provided that you preserve this license
9
- notice and all copyright notices.
10
-
11
- Commercial use is prohibited without prior written permission from the
12
- copyright holder.
13
-
14
- The full license text is distributed in the repository root `LICENSE`
15
- file for SafeBrowse.
1
+ SafeBrowse Non-Commercial License 1.0
2
+
3
+ Copyright (c) 2026 RobKang1234. All rights reserved.
4
+
5
+ This package is licensed for non-commercial use only.
6
+
7
+ You may use, copy, modify, and redistribute this package for
8
+ non-commercial purposes only, provided that you preserve this license
9
+ notice and all copyright notices.
10
+
11
+ Commercial use is prohibited without prior written permission from the
12
+ copyright holder.
13
+
14
+ The full license text is distributed in the repository root `LICENSE`
15
+ file for SafeBrowse.
package/README.md CHANGED
@@ -1,31 +1,31 @@
1
- # `@safebrowse/daemon`
2
-
3
- Localhost SafeBrowse daemon with built-in runtime assets for policy, registry, and KB loading.
4
-
5
- ## Install
6
-
7
- ```bash
8
- npm install @safebrowse/daemon
9
- ```
10
-
11
- ## Run
12
-
13
- ```bash
14
- npx @safebrowse/daemon --host 127.0.0.1 --port 8787
15
- ```
16
-
17
- Environment variables:
18
-
19
- - `SAFEBROWSE_HOST`
20
- - `SAFEBROWSE_PORT`
21
- - `SAFEBROWSE_ROOT_DIR`
22
-
23
- Health endpoint:
24
-
25
- ```text
26
- GET /health
27
- ```
28
-
29
- See the repository README for full daemon routes and operational guidance:
30
-
31
- - https://github.com/RobKang1234/safebrowse-sdk#readme
1
+ # `@safebrowse/daemon`
2
+
3
+ Localhost SafeBrowse daemon with built-in runtime assets for policy, registry, and KB loading.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @safebrowse/daemon
9
+ ```
10
+
11
+ ## Run
12
+
13
+ ```bash
14
+ npx @safebrowse/daemon --host 127.0.0.1 --port 8787
15
+ ```
16
+
17
+ Environment variables:
18
+
19
+ - `SAFEBROWSE_HOST`
20
+ - `SAFEBROWSE_PORT`
21
+ - `SAFEBROWSE_ROOT_DIR`
22
+
23
+ Health endpoint:
24
+
25
+ ```text
26
+ GET /health
27
+ ```
28
+
29
+ See the repository README for full daemon routes and operational guidance:
30
+
31
+ - https://github.com/RobKang1234/safebrowse-sdk#readme
package/dist/cli.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { resolve } from "node:path";
2
2
  import process from "node:process";
3
3
  import { startSafeBrowseDaemon } from "./server.js";
4
- const HELP_TEXT = `SafeBrowse daemon
5
-
6
- Usage:
7
- safebrowse-daemon [--host 127.0.0.1] [--port 8787] [--root-dir <path>]
8
-
9
- Environment:
10
- SAFEBROWSE_HOST
11
- SAFEBROWSE_PORT
12
- SAFEBROWSE_ROOT_DIR
4
+ const HELP_TEXT = `SafeBrowse daemon
5
+
6
+ Usage:
7
+ safebrowse-daemon [--host 127.0.0.1] [--port 8787] [--root-dir <path>]
8
+
9
+ Environment:
10
+ SAFEBROWSE_HOST
11
+ SAFEBROWSE_PORT
12
+ SAFEBROWSE_ROOT_DIR
13
13
  `;
14
14
  function parsePort(value) {
15
15
  const port = Number.parseInt(value, 10);
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  export { formatDaemonHelp, parseDaemonOptions, runDaemonCli } from "./cli.js";
3
+ export { compileObservationInIsolation, probeParserIsolation } from "./parserIsolation.js";
3
4
  export { createSafeBrowseServer, startSafeBrowseDaemon } from "./server.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -2,8 +2,10 @@
2
2
  import { resolve } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { formatDaemonHelp, parseDaemonOptions, runDaemonCli } from "./cli.js";
5
+ import { compileObservationInIsolation, probeParserIsolation } from "./parserIsolation.js";
5
6
  import { createSafeBrowseServer, startSafeBrowseDaemon } from "./server.js";
6
7
  export { formatDaemonHelp, parseDaemonOptions, runDaemonCli } from "./cli.js";
8
+ export { compileObservationInIsolation, probeParserIsolation } from "./parserIsolation.js";
7
9
  export { createSafeBrowseServer, startSafeBrowseDaemon } from "./server.js";
8
10
  function isDirectExecution() {
9
11
  if (!process.argv[1]) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE5E,SAAS,iBAAiB;IACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,IAAI,iBAAiB,EAAE,EAAE,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE5E,SAAS,iBAAiB;IACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,IAAI,iBAAiB,EAAE,EAAE,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { CompiledObservation, ParserWorkerProbe, RuntimeContext, StructuredPlannerInput, SurfaceCapture } from "@safebrowse/core";
2
+ export declare function compileObservationInIsolation(input: {
3
+ capture: SurfaceCapture;
4
+ workflowHash?: string;
5
+ allowlistedEgress?: string[];
6
+ runtime?: Partial<RuntimeContext>;
7
+ }): Promise<{
8
+ compiledObservation: CompiledObservation;
9
+ plannerInput: StructuredPlannerInput;
10
+ }>;
11
+ export declare function probeParserIsolation(): Promise<ParserWorkerProbe>;
12
+ //# sourceMappingURL=parserIsolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserIsolation.d.ts","sourceRoot":"","sources":["../src/parserIsolation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAwE1B,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACnC,GAAG,OAAO,CAAC;IACV,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,sBAAsB,CAAC;CACtC,CAAC,CAQD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAIjE"}
@@ -0,0 +1,57 @@
1
+ import { existsSync } from "node:fs";
2
+ import { fork } from "node:child_process";
3
+ import { fileURLToPath } from "node:url";
4
+ import { resolve, dirname } from "node:path";
5
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
6
+ const compiledWorkerPath = resolve(moduleDir, "parserWorker.js");
7
+ const sourceWorkerPath = resolve(moduleDir, "parserWorker.ts");
8
+ const workerPath = existsSync(compiledWorkerPath) ? compiledWorkerPath : sourceWorkerPath;
9
+ function runWorker(payload) {
10
+ return new Promise((resolvePromise, rejectPromise) => {
11
+ const child = fork(workerPath, [], {
12
+ env: {},
13
+ stdio: ["ignore", "ignore", "ignore", "ipc"],
14
+ execArgv: workerPath.endsWith(".ts")
15
+ ? [...process.execArgv, "--import", "tsx"]
16
+ : process.execArgv
17
+ });
18
+ const finish = (error, value) => {
19
+ child.removeAllListeners();
20
+ child.kill();
21
+ if (error) {
22
+ rejectPromise(error);
23
+ return;
24
+ }
25
+ resolvePromise(value);
26
+ };
27
+ child.once("error", (error) => finish(error));
28
+ child.once("message", (message) => {
29
+ if (!message.ok) {
30
+ finish(new Error(message.error));
31
+ return;
32
+ }
33
+ finish(undefined, (message.probe ?? message.result));
34
+ });
35
+ child.once("exit", (code) => {
36
+ if (code && code !== 0) {
37
+ finish(new Error(`parser worker exited with code ${code}`));
38
+ }
39
+ });
40
+ child.send(payload);
41
+ });
42
+ }
43
+ export function compileObservationInIsolation(input) {
44
+ return runWorker({
45
+ kind: "parse",
46
+ capture: input.capture,
47
+ workflowHash: input.workflowHash,
48
+ allowlistedEgress: input.allowlistedEgress,
49
+ runtime: input.runtime
50
+ });
51
+ }
52
+ export function probeParserIsolation() {
53
+ return runWorker({
54
+ kind: "probe"
55
+ });
56
+ }
57
+ //# sourceMappingURL=parserIsolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserIsolation.js","sourceRoot":"","sources":["../src/parserIsolation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAU7C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC/D,MAAM,UAAU,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC;AA4B1F,SAAS,SAAS,CAAI,OAAsB;IAC1C,OAAO,IAAI,OAAO,CAAI,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE;YACjC,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;YAC5C,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;gBAC1C,CAAC,CAAC,OAAO,CAAC,QAAQ;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAS,EAAE,EAAE;YAC1C,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,cAAc,CAAC,KAAU,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAuB,EAAE,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAM,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAK7C;IAIC,OAAO,SAAS,CAAC;QACf,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,SAAS,CAAC;QACf,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parserWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserWorker.d.ts","sourceRoot":"","sources":["../src/parserWorker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import { createRequire } from "node:module";
2
+ import process from "node:process";
3
+ const require = createRequire(import.meta.url);
4
+ function denyNetwork(message = "Parser worker egress denied") {
5
+ const denial = () => {
6
+ throw new Error(message);
7
+ };
8
+ const http = require("node:http");
9
+ const https = require("node:https");
10
+ const net = require("node:net");
11
+ const tls = require("node:tls");
12
+ const dns = require("node:dns");
13
+ http.request = denial;
14
+ http.get = denial;
15
+ https.request = denial;
16
+ https.get = denial;
17
+ net.connect = denial;
18
+ net.createConnection = denial;
19
+ tls.connect = denial;
20
+ dns.lookup = denial;
21
+ dns.resolve = denial;
22
+ dns.resolve4 = denial;
23
+ dns.resolve6 = denial;
24
+ Object.assign(globalThis, {
25
+ fetch: async () => {
26
+ throw new Error(message);
27
+ }
28
+ });
29
+ }
30
+ function lockDownEnvironment() {
31
+ for (const key of Object.keys(process.env)) {
32
+ delete process.env[key];
33
+ }
34
+ denyNetwork();
35
+ }
36
+ async function probeIsolation() {
37
+ let egressDenied = false;
38
+ try {
39
+ await globalThis.fetch("https://example.com");
40
+ }
41
+ catch {
42
+ egressDenied = true;
43
+ }
44
+ return {
45
+ envKeys: Object.keys(process.env),
46
+ egressDenied,
47
+ processIsolated: true
48
+ };
49
+ }
50
+ lockDownEnvironment();
51
+ async function loadCoreRuntime() {
52
+ if (import.meta.url.endsWith(".ts")) {
53
+ const sourceEntryUrl = new URL("../../core/src/index.ts", import.meta.url).href;
54
+ return import(sourceEntryUrl);
55
+ }
56
+ return import("@safebrowse/core");
57
+ }
58
+ process.on("message", async (message) => {
59
+ try {
60
+ const { compileObservation } = await loadCoreRuntime();
61
+ if (message.kind === "probe") {
62
+ process.send?.({
63
+ ok: true,
64
+ probe: await probeIsolation()
65
+ });
66
+ return;
67
+ }
68
+ const result = compileObservation(message.capture, message.runtime ?? {}, {
69
+ workflowHash: message.workflowHash,
70
+ parserIsolation: {
71
+ processIsolated: true,
72
+ secretAccess: false,
73
+ arbitraryEgress: false,
74
+ allowlistedEgress: message.allowlistedEgress ?? []
75
+ }
76
+ });
77
+ process.send?.({
78
+ ok: true,
79
+ result
80
+ });
81
+ }
82
+ catch (error) {
83
+ process.send?.({
84
+ ok: false,
85
+ error: error instanceof Error ? error.message : String(error)
86
+ });
87
+ }
88
+ });
89
+ //# sourceMappingURL=parserWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserWorker.js","sourceRoot":"","sources":["../src/parserWorker.ts"],"names":[],"mappings":"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"}