@amalgm/browser 0.1.0 → 0.1.1

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.
@@ -0,0 +1,14 @@
1
+ export { ElectronBrowserDriver } from './drivers/electron/driver.js';
2
+ export { ElectronCookieAdapter, ELECTRON_COOKIE_ADAPTER_ID } from './drivers/electron/cookie-adapter.js';
3
+ export { writeHostAdvertisement, removeHostAdvertisement, isLoopbackCdpUrl, type WriteHostAdvertisementOptions, } from './drivers/electron/advertisement.js';
4
+ export { BROWSER_SESSION_PARTITION, BROWSER_SURFACE_PROTOCOL, BROWSER_SURFACE_PROTOCOLS, markerUrl, surfaceStamp, type ElectronSurfaceIdentity, type ElectronSurfaceState, type ElectronVisibleHost, } from './drivers/electron/contracts.js';
5
+ export { isolatedBrowserSession, type ElectronSessionModule } from './drivers/electron/session.js';
6
+ export { browserNavigationPolicy, normalizeBrowserLocation, permissionOrigin, safeDownloadName, } from './drivers/electron/policy.js';
7
+ export { createBrowserShell, type BrowserShell, type BrowserShellOptions } from './drivers/electron/native/shell.js';
8
+ export { createBrowserSurfaceController, type BrowserSurfaceController, type NativeBrowserSurface, } from './drivers/electron/native/surface-controller.js';
9
+ export { getBrowserSession } from './drivers/electron/native/session.js';
10
+ export { NativeAdBlocker, adBlockHostname, isNativeAdBlockDisabled } from './drivers/electron/native/adblock/index.js';
11
+ export { isAdBlockCacheFresh } from './drivers/electron/native/adblock/cache.js';
12
+ export * from './drivers/electron/native/contracts.js';
13
+ export * from './drivers/electron/native/policy.js';
14
+ export { setValueScript, insertTextScript, keyScript, codeFor } from './interaction/typing.js';
@@ -1,6 +1,6 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
- import { coerceRuntimeLabel, runtimeStateDir } from '@amalgm/core/identity';
3
+ import { runtimeBindingFromEnvironment, runtimeStateDir } from '@amalgm/core/identity';
4
4
  import { isLoopbackCdpUrl } from './drivers/electron/advertisement.js';
5
5
  import { BROWSER_SURFACE_PROTOCOLS } from './drivers/electron/contracts.js';
6
6
  export const ELECTRON_SURFACE_PROTOCOLS = BROWSER_SURFACE_PROTOCOLS;
@@ -16,18 +16,12 @@ export function pidIsRunning(pid) {
16
16
  }
17
17
  }
18
18
  export function bridgeFileCandidates(env = process.env) {
19
- const directories = [];
20
- if (env.AMALGM_RUNTIME_STATE_DIR)
21
- directories.push(env.AMALGM_RUNTIME_STATE_DIR);
22
- const root = env.AMALGM_DIR;
23
- const label = env.AMALGM_RUNTIME_LABEL || env.AMALGM_BRANCH;
24
- // The runtimes/<label> grammar lives in @amalgm/core: the raw value is
25
- // folded by the runtime label law, so junk can never name a directory.
26
- if (root && label)
27
- directories.push(runtimeStateDir(root, coerceRuntimeLabel(label)));
28
- if (root)
29
- directories.push(root);
30
- return [...new Set(directories)].map((directory) => path.join(directory, 'electron-browser-bridge.json'));
19
+ const binding = runtimeBindingFromEnvironment(env);
20
+ // The host supplies its reserved machine namespace. A shared user root is
21
+ // never a discovery fallback, and an unknown binding never selects main.
22
+ const directory = env.AMALGM_RUNTIME_STATE_DIR || (env.AMALGM_DIR && env.AMALGM_DEVICE_ID
23
+ ? runtimeStateDir(env.AMALGM_DIR, env.AMALGM_DEVICE_ID, binding.runtimeLabel) : null);
24
+ return directory ? [path.join(directory, 'electron-browser-bridge.json')] : [];
31
25
  }
32
26
  export function readHostAdvertisement(files = bridgeFileCandidates()) {
33
27
  for (const file of files) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-selector.js","sourceRoot":"","sources":["../../src/runtime-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,MAAM,CAAC,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AAEpE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAC1C,OAAO,KAAK,EAAE,CAAC;QAAC,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,GAAG,CAAC,wBAAwB;QAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,aAAa,CAAC;IAC5D,uEAAuE;IACvE,uEAAuE;IACvE,IAAI,IAAI,IAAI,KAAK;QAAE,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,IAAI;QAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAK,GAAG,oBAAoB,EAAE;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4B,CAAC;YACjF,MAAM,GAAG,GAAG,GAAG,CAAC,GAA0C,CAAC;YAC3D,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5F,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;gBAC3D,CAAC,CAAC,GAAG,CAAC,yBAAyB;gBAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,IAAI,SAAS,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAA+B,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC;YACrH,OAAO;gBACL,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI;gBAC7D,GAAG,CAAC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,sBAAsB;IAEtB;IACA;IAFX,YACW,gBAAuD,qBAAqB,EAC5E,MAAyB,OAAO,CAAC,GAAG;QADpC,kBAAa,GAAb,aAAa,CAA+D;QAC5E,QAAG,GAAH,GAAG,CAAiC;IAC5C,CAAC;IAEJ,MAAM,CAAC,OAA8B;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3E,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,UAAU,CAAC;QACpF,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,UAAU,CAAC;QAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,sBAAsB;YAAE,OAAO,UAAU,CAAC;QACvD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,OAAO,IAAI,IAAK,0BAAgD,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtF,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"runtime-selector.js","sourceRoot":"","sources":["../../src/runtime-selector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,26 +1,66 @@
1
1
  {
2
2
  "name": "@amalgm/browser",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Safe persistent browser automation across headless Chromium and visible Electron surfaces.",
5
- "repository": { "type": "git", "url": "git+https://github.com/amalgm-inc/amalgm-browser.git" },
6
- "bugs": { "url": "https://github.com/amalgm-inc/amalgm-browser/issues" },
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/amalgm-inc/amalgm-browser.git"
8
+ },
9
+ "bugs": {
10
+ "url": "https://github.com/amalgm-inc/amalgm-browser/issues"
11
+ },
7
12
  "homepage": "https://github.com/amalgm-inc/amalgm-browser#readme",
8
13
  "license": "UNLICENSED",
9
14
  "type": "module",
10
15
  "private": false,
11
- "publishConfig": { "access": "public" },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
12
19
  "main": "./dist/src/index.js",
13
20
  "types": "./dist/src/index.d.ts",
14
21
  "exports": {
15
- ".": { "types": "./dist/src/index.d.ts", "import": "./dist/src/index.js" },
16
- "./headless": { "types": "./dist/src/headless.d.ts", "import": "./dist/src/headless.js" },
17
- "./electron": { "types": "./dist/src/electron.d.ts", "import": "./dist/src/electron.js" },
18
- "./cookies": { "types": "./dist/src/cookies.d.ts", "import": "./dist/src/cookies.js" },
19
- "./recording": { "types": "./dist/src/recording.d.ts", "import": "./dist/src/recording.js" },
20
- "./toolbox": { "types": "./dist/src/toolbox.d.ts", "import": "./dist/src/toolbox.js" },
21
- "./mcp": { "types": "./dist/src/mcp.d.ts", "import": "./dist/src/mcp.js" },
22
- "./http": { "types": "./dist/src/http.d.ts", "import": "./dist/src/http.js" },
23
- "./testing": { "types": "./dist/src/testing.d.ts", "import": "./dist/src/testing.js" }
22
+ ".": {
23
+ "types": "./dist/src/index.d.ts",
24
+ "import": "./dist/src/index.js"
25
+ },
26
+ "./headless": {
27
+ "types": "./dist/src/headless.d.ts",
28
+ "import": "./dist/src/headless.js"
29
+ },
30
+ "./electron": {
31
+ "import": {
32
+ "types": "./dist/src/electron.d.ts",
33
+ "default": "./dist/src/electron.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/src/electron.d.cts",
37
+ "default": "./dist/src/electron.cjs"
38
+ }
39
+ },
40
+ "./cookies": {
41
+ "types": "./dist/src/cookies.d.ts",
42
+ "import": "./dist/src/cookies.js"
43
+ },
44
+ "./recording": {
45
+ "types": "./dist/src/recording.d.ts",
46
+ "import": "./dist/src/recording.js"
47
+ },
48
+ "./toolbox": {
49
+ "types": "./dist/src/toolbox.d.ts",
50
+ "import": "./dist/src/toolbox.js"
51
+ },
52
+ "./mcp": {
53
+ "types": "./dist/src/mcp.d.ts",
54
+ "import": "./dist/src/mcp.js"
55
+ },
56
+ "./http": {
57
+ "types": "./dist/src/http.d.ts",
58
+ "import": "./dist/src/http.js"
59
+ },
60
+ "./testing": {
61
+ "types": "./dist/src/testing.d.ts",
62
+ "import": "./dist/src/testing.js"
63
+ }
24
64
  },
25
65
  "bin": {
26
66
  "amalgm-browser": "./dist/bin/amalgm-browser.js",
@@ -39,7 +79,8 @@
39
79
  "SECURITY.md"
40
80
  ],
41
81
  "scripts": {
42
- "build": "rm -rf dist && tsc -p tsconfig.build.json && tsx scripts/mark-executables.ts",
82
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json && npm run build:electron-cjs && tsx scripts/finalize-build.ts",
83
+ "build:electron-cjs": "esbuild src/electron.ts --bundle --platform=node --format=cjs --target=node20 --define:import.meta.dirname=__dirname --define:__AMALGM_BROWSER_ADBLOCK_PRELOAD__=\\\"electron-preload.cjs\\\" --outfile=dist/src/electron.cjs --external:electron && esbuild src/drivers/electron/native/adblock/preload.ts --bundle --platform=node --format=cjs --target=node20 --outfile=dist/src/electron-preload.cjs --external:electron",
43
84
  "check": "tsx scripts/check-tree.ts && tsc -p tsconfig.json && tsc -p tsconfig.test.json",
44
85
  "test": "tsx --test --test-concurrency=1 --test-timeout=30000 test/*.test.ts",
45
86
  "test:real": "cross-env AMALGM_BROWSER_REAL=1 tsx --test --test-timeout=60000 test/real-headless.test.ts",
@@ -49,9 +90,11 @@
49
90
  "verify:pack": "tsx scripts/verify-package.ts",
50
91
  "prepack": "npm run build"
51
92
  },
52
- "engines": { "node": ">=20" },
93
+ "engines": {
94
+ "node": ">=24"
95
+ },
53
96
  "dependencies": {
54
- "@amalgm/core": "^0.1.0",
97
+ "@amalgm/core": "0.4.7",
55
98
  "@ghostery/adblocker": "^2.18.1",
56
99
  "agent-browser": "0.26.0",
57
100
  "better-sqlite3": "^12.10.1",
@@ -63,15 +106,18 @@
63
106
  "electron": ">=33"
64
107
  },
65
108
  "peerDependenciesMeta": {
66
- "electron": { "optional": true }
109
+ "electron": {
110
+ "optional": true
111
+ }
67
112
  },
68
113
  "devDependencies": {
114
+ "@types/better-sqlite3": "^7.6.13",
69
115
  "@types/ffmpeg-static": "^3.0.3",
70
116
  "@types/node": "^20.19.43",
71
- "@types/better-sqlite3": "^7.6.13",
72
117
  "@types/ws": "^8.18.1",
73
118
  "cross-env": "^7.0.3",
74
119
  "electron": "41.7.1",
120
+ "esbuild": "0.27.4",
75
121
  "tsx": "^4.23.1",
76
122
  "typescript": "^5.9.3"
77
123
  }