aws-runtime-bridge@1.9.137: Suspicious npm security report (Warn) | LPM Firewall
Flagged — allowed with a warning
Allowed by default policy, but 26 finding(s) warrant review before installing.
aws-runtime-bridge@1.9.137 AgentsWorkStudio runtime bridge service for machine-level agent runtime integration
AI Security Reviewscanned 3d ago · by lpm-firewall-ai Installation can modify the host operating system and download a browser without a separate user command. The actions are conditional but occur in automatic npm lifecycle hooks.
Static reason
High-risk behavior combination matched malicious policy.; previous stored version diff introduced dangerous source
Trigger
Running npm install, especially as root on Linux with missing build tools.
Impact
The install can update package indexes, install build or browser dependencies, and download Chromium.
Mechanism
Lifecycle hooks invoke system package managers and the Playwright installer.
Rationale
The package has a concrete high-impact lifecycle attack surface because installation can alter the operating system and fetch a browser. The inspected code does not meet the stated publish-block chain because it has no runtime registry self-dependency, obfuscation, or foreign AI-agent control-surface mutation.
Evidence
package.json scripts/ensure-build-tools.mjs scripts/ensure-playwright-browser.mjs
Network endpoints1
npmmirror.com /mirrors/playwright
Decision evidencepublic snapshot AI called this Suspicious at 91.0% confidence as Dangerous Capability with low false-positive risk.
Evidence for warning
The package runs preinstall and postinstall hooks automatically during npm installation. On Linux as root, preinstall updates package indexes and installs compiler toolchains through the detected system package manager. Postinstall invokes Playwright to download Chromium and, as root on Linux, requests its system dependencies. Evidence against
The system-package actions are conditional on Linux, root access, and missing build tools. No registry self-dependency was found; the only nested reference is a local file dependency. The inspected lifecycle code does not harvest credentials or send them to a fixed external endpoint. Behavioral surface
Source ChildProcess Crypto DynamicRequire EnvironmentVars Filesystem Network Shell
Supply chain HighEntropyStrings Minified PossibleObfuscation UrlStrings
scanned 228 file(s), 1.49 MB of source, external domains: 127.0.0.1, 192.168.1.100, npmmirror.com, registry.npmjs.org, www.apple.com
Source & flagged code16 flagged · loading source • scripts.postinstall = node scripts/ensure-bin-executable.mjs && node scripts/ensure-playwright-browser.mjs
High Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.json View on unpkg • scripts.postinstall = node scripts/ensure-bin-executable.mjs && node scripts/ensure-playwright-browser.mjs
Medium Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.json View on unpkg • matchType = previous_version_dangerous_delta
matchedPackage = aws-runtime-bridge@1.9.130
matchedIdentity = npm:YXdzLXJ1bnRpbWUtYnJpZGdl:1.9.130
similarity = 0.525
summary = stored previous version shares package body but lacks this dangerous source file
Critical Previous Version Dangerous Delta
This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.
dist/index.js View on unpkg 1 #!/usr/bin/env node
L2: import{existsSync as T,readFileSync as B}from"node:fs";import D from"node:os";import M from"node:path";import E from"cors";import S from"express";import{adapterRegistry as x}from"....
L3:
High Child Process
Package source references child process execution.
dist/index.js View on unpkg · L1 1 #!/usr/bin/env node
L2: import{existsSync as T,readFileSync as B}from"node:fs";import D from"node:os";import M from"node:path";import E from"cors";import S from"express";import{adapterRegistry as x}from"....
L3:
Medium Dynamic Require
Package source references dynamic require/import behavior.
dist/index.js View on unpkg · L1 1 import{spawn as A}from"node:child_process";import{createHash as W,timingSafeEqual as G}from"node:crypto";import I from"node:path";import{fileURLToPath as V}from"node:url";import _ ...
L2:
Low Weak Crypto
Package source references weak cryptographic algorithms.
dist/routes/instance.js View on unpkg · L1 1 Trigger-reachable persistence chain: scripts.start -> dist/index.js -> dist/services/cli-commands.js
L1: import{spawnSync as g}from"node:child_process";import{createInterface as X}from"node:readline/promises";import{existsSync as h,mkdirSync as I,readFileSync as Z,rmSync as ee,unlinkS...
L2: `)}function le(e){process.stderr.write(`${e}
...
L5: `)}function b(e,r){return e("systemctl",r)}function C(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl ...
L6: npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function O(e){const r=e.windowsServiceManager;if(!r&&!ie())return ve(e.stderr);const t=e.windowsServiceLogPath||B,...
L7:
High Trigger Reachable Persistence
A manifest entrypoint or package-local install chain reaches persistence behavior.
dist/services/cli-commands.js View on unpkg · L1 1 import{spawnSync as g}from"node:child_process";import{createInterface as X}from"node:readline/promises";import{existsSync as h,mkdirSync as I,readFileSync as Z,rmSync as ee,unlinkS...
L2: `)}function le(e){process.stderr.write(`${e}
...
L5: `)}function b(e,r){return e("systemctl",r)}function C(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl ...
L6: npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function O(e){const r=e.windowsServiceManager;if(!r&&!ie())return ve(e.stderr);const t=e.windowsServiceLogPath||B,...
L7:
Medium Install Persistence
Source writes installer persistence such as shell profile or service configuration.
dist/services/cli-commands.js View on unpkg · L1 1 import{spawn as A}from"node:child_process";import{EventEmitter as E}from"node:events";import*as w from"node:fs";import*as x from"node:net";import*as T from"node:os";import*as h fro...
L2: `)):t}return this.sdkModule}async waitForServer(t,e,o,r){const i=Date.now()+o;for(;Date.now()<i;){try{if((await t.session.list({query:{directory:e}})).data!==void 0)return}catch{}a...
High Same File Env Network Execution
A single source file combines environment access, network access, and code or shell execution; review context before blocking.
dist/adapter/OpencodeSdkAdapter.js View on unpkg · L1 scripts/ensure-playwright-browser.mjs View file 20 */
L21: import { execFile, spawnSync } from "node:child_process";
L22: import { createRequire } from "node:module";
...
L34: try {
L35: const packageJsonPath = require.resolve("playwright/package.json");
L36: return join(dirname(packageJsonPath), "cli.js");
...
L49: encoding: "utf-8",
L50: shell: process.platform === "win32",
L51: stdio: ["ignore", "pipe", "ignore"],
L52: });
L53: if (result.status === 0 && result.stdout) {
L54: const url = result.stdout.trim();
High Sandbox Evasion Gated Capability
Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
scripts/ensure-playwright-browser.mjs View on unpkg · L20 node_modules/playwright/lib/common/index.js View file 65 getFromCompilationCache: () => getFromCompilationCache,
L66: getUserData: () => getUserData,
L67: installSourceMapSupport: () => installSourceMapSupport,
...
L80: var { calculateSha1 } = require("playwright-core/lib/coreBundle").utils;
L81: var cacheDir = process.env.PWTEST_CACHE_DIR || (() => {
L82: if (process.platform === "win32")
L83: return import_path.default.join(import_os.default.tmpdir(), `playwright-transform-cache`);
...
L100: return {
L101: map: JSON.parse(import_fs.default.readFileSync(sourceMapPath, "utf-8")),
L102: url: source
...
L407: return file2;
L408: return import_path2.default.relative(process.cwd(), file2);
High Obfuscated Payload Loader
Source contains an obfuscated payload loader that reconstructs and executes hidden code.
node_modules/playwright/lib/common/index.js View on unpkg · L65 node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-By56iMx7.js View file 7 contains invisible/control Unicode U+200B (zero width space)
height: `+(r-t)+`px`))}function d(t,n,r){var a=K(i,t),o=a.text.length,d,f;function p(n,r){return wr(e,J(t,n),`div`,a,r)}function m(t,n,r){var i=Ar(e,a,null,t),o=n==`ltr`==(r==`after`)?`left`:`right`;return p(r==
Critical Trojan Source Unicode
Source contains bidi control or invisible Unicode characters associated with Trojan Source attacks.
node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-By56iMx7.js View on unpkg · L7 node_modules/playwright-core/lib/coreBundle.js View file 470 Cross-file remote execution chain: node_modules/playwright-core/lib/coreBundle.js spawns node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js; helper contains network access plus dynamic code execution.
L470:
L471: // packages/isomorphic/base64.ts
L472: function base64ByteLength(data) {
...
L587: }
L588: return { data: Buffer.from(buffer), width: size.width, height: size.height };
L589: }
...
L3829: ["BrowserContext.setNetworkInterceptionPatterns", { title: "Route requests", group: "route" }],
L3830: ["BrowserContext.[redacted]", { title: "Route WebSockets", group: "route" }],
L3831: ["BrowserContext.setOffline", { title: "Set offline mode" }],
...
L5592: }
L5593: case "stdout": {
L5594: contextEntry.stdio.push(event);
High Cross File Remote Execution Context
Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
node_modules/playwright-core/lib/coreBundle.js View on unpkg · L470 package/acode/dist/grammars/grammars/tree-sitter-go.wasm View file • path = [redacted]-sitter-go.wasm
kind = wasm_module
sizeBytes = 217182
magicHex = [redacted]
Medium Ships Wasm Module
Package ships WebAssembly modules.
package/acode/dist/grammars/grammars/tree-sitter-go.wasm View on unpkg node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 View file • path = node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1
kind = build_helper
sizeBytes = 869
magicHex = [redacted]
Medium Ships Build Helper
Package ships non-JavaScript build or shell helper files.
node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 View on unpkg dist/remote-desktop/system-backend.js#virtual:string-array:round1 View file • stage = ast_semantic_analysis; reason = ast_parse_error; limitedFiles = 8
High Semantic Analysis Limited
A bounded semantic-analysis stage reached its safety limit; remaining detectors completed, but this package requires AI review.
dist/remote-desktop/system-backend.js#virtual:string-array:round1 View on unpkg Findings2 Critical 9 High 8 Medium 7 Low
Critical Trojan Source Unicode node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-By56iMx7.js
Critical Previous Version Dangerous Delta dist/index.js
High Install Time Lifecycle Scripts package.json
High Child Process dist/index.js
High Shell
High Same File Env Network Execution dist/adapter/OpencodeSdkAdapter.js
High Sandbox Evasion Gated Capability scripts/ensure-playwright-browser.mjs
High Obfuscated Payload Loader node_modules/playwright/lib/common/index.js
High Cross File Remote Execution Context node_modules/playwright-core/lib/coreBundle.js
High Trigger Reachable Persistence dist/services/cli-commands.js
High Semantic Analysis Limited dist/remote-desktop/system-backend.js#virtual:string-array:round1
Medium Ambiguous Install Lifecycle Script package.json
Medium Dynamic Require dist/index.js
Medium Network
Medium Environment Vars
Medium Install Persistence dist/services/cli-commands.js
Medium Ships Wasm Module package/acode/dist/grammars/grammars/tree-sitter-go.wasm
Medium Ships Build Helper node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1
Medium Structural Risk Force Deep Review
Low Non Install Lifecycle Scripts
Low Scripts Present
Low Weak Crypto dist/routes/instance.js
Low Filesystem
Low High Entropy Strings
Low Url Strings
Low No License
LPM CLI
Source & flagged code16 flagged Lines 22-62 json
22 "package/acode/README.md"
24 "bundleDependencies" : [
27 "optionalDependencies" : {
28 "node-windows" : "^1.0.0-beta.8" ,
32 "node" : ">=20.0.0 <25"
35 "build:agent-mcp" : "npm run build --prefix package/aws-client-agent-mcp" ,
36 "build:acode" : "npm run build --prefix package/acode" ,
37 "build:desktop" : "node scripts/build-desktop-mcp.mjs" ,
38 "build:all" : "npm run build:acode && npm run build:agent-mcp" ,
39 "prebuild" : "npm run build:all" ,
40 "preinstall" : "node scripts/ensure-build-tools.mjs" ,
41 "build" : "tsc -p tsconfig.json && node scripts/minify-dist.mjs" ,
42 "postinstall" : "node scripts/ensure-bin-executable.mjs && node scripts/ensure-playwright-browser.mjs" ,
High Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.json View on unpkg · L42 Medium Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.json View on unpkg · L42 43 "pretypecheck" : "npm run build:all" ,
44 "typecheck" : "tsc -p tsconfig.json --noEmit" ,
45 "prestart" : "npm run build:agent-mcp && npm run build:acode" ,
46 "start" : "node dist/index.js" ,
47 "predev" : "npm run build:all" ,
48 "dev" : "tsc -p tsconfig.json && node scripts/dev-runner.mjs" ,
49 "prepublishOnly" : "npm run build" ,
50 "prepack" : "node scripts/prepack-guard.mjs" ,
51 "postpack" : "node scripts/postpack-restore.mjs" ,
52 "minify" : "node scripts/minify-dist.mjs" ,
53 "lint" : "eslint src --max-warnings 0" ,
54 "lint:fix" : "eslint src --fix" ,
55 "format" : "prettier --write \" src/**/*.ts \" " ,
56 "format:check" : "prettier --check \" src/**/*.ts \" " ,
58 "test:watch" : "vitest" ,
59 "test:coverage" : "vitest run --coverage"
62 "@agentswork/acode" : "file:package/acode" ,
Lines 1-4 javascript
2 import {existsSync as T,readFileSync as B} from "node:fs" ; import D from "node:os" ; import M from "node:path" ; import E from "cors" ; import S
Lines 1-3 javascript
1 import {spawn as A} from "node:child_process" ; import {createHash as W,timingSafeEqual as G} from "node:crypto" ; import I from "node:path" ; import {fileURLToPath as V} from "node:url" ;
Lines 1-8 javascript
1 import {spawnSync as g} from "node:child_process" ; import {createInterface as X} from "node:readline/promises" ; import {existsSync as h,mkdirSync as I,readFileSync as Z,rmSync as ee,unlinkSync as H,writeFileSync as
Lines 1-5 javascript
1 import {spawn as A} from "node:child_process" ; import {EventEmitter as E} from "node:events" ; import * as w from "node:fs" ; import * as x from "node:net" ; import *
scripts/ensure-playwright-browser.mjs View file Lines 1-40 javascript
3 * postinstall 钩子:确保 Playwright Chromium 已就绪。
5 * 背景:npm 包不携带浏览器二进制,Linux 上安装 bridge 后 agent 启动浏览器会报
6 * 「Playwright 浏览器没有安装」。本脚本在 npm install 时自动下载 Chromium,
7 * 保证 `npm install -g aws-runtime-bridge` 后浏览器立即可用。
10 * - Linux + root(如 sudo npm install -g):`install --with-deps chromium`,
node_modules/playwright/lib/common/index.js View file 65 getFromCompilationCache: () => getFromCompilationCache,
L66: getUserData: () => getUserData,
L67: installSourceMapSupport: () => installSourceMapSupport,
...
L80: var { calculateSha1 } = require("playwright-core/lib/coreBundle").utils;
L81: var cacheDir = process.env.PWTEST_CACHE_DIR || (() => {
L82: if (process.platform === "win32")
L83: return import_path.default.join(import_os.default.tmpdir(), `playwright-transform-cache`);
...
L100: return {
L101: map: JSON.parse(import_fs.default.readFileSync(sourceMapPath, "utf-8")),
L102: url: source
...
L407: return file2;
L408: return import_path2.default.relative(process.cwd(), file2);
High Obfuscated Payload Loader
Source contains an obfuscated payload loader that reconstructs and executes hidden code.
node_modules/playwright/lib/common/index.js View on unpkg · L65 node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-By56iMx7.js View file 7 contains invisible/control Unicode U+200B (zero width space)
height: `+(r-t)+`px`))}function d(t,n,r){var a=K(i,t),o=a.text.length,d,f;function p(n,r){return wr(e,J(t,n),`div`,a,r)}function m(t,n,r){var i=Ar(e,a,null,t),o=n==`ltr`==(r==`after`)?`left`:`right`;return p(r==
Critical Trojan Source Unicode
Source contains bidi control or invisible Unicode characters associated with Trojan Source attacks.
node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-By56iMx7.js View on unpkg · L7 node_modules/playwright-core/lib/coreBundle.js View file 470 Cross-file remote execution chain: node_modules/playwright-core/lib/coreBundle.js spawns node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js; helper contains network access plus dynamic code execution.
L470:
L471: // packages/isomorphic/base64.ts
L472: function base64ByteLength(data) {
...
L587: }
L588: return { data: Buffer.from(buffer), width: size.width, height: size.height };
L589: }
...
L3829: ["BrowserContext.setNetworkInterceptionPatterns", { title: "Route requests", group: "route" }],
L3830: ["BrowserContext.[redacted]", { title: "Route WebSockets", group: "route" }],
L3831: ["BrowserContext.setOffline", { title: "Set offline mode" }],
...
L5592: }
L5593: case "stdout": {
L5594: contextEntry.stdio.push(event);
High Cross File Remote Execution Context
Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
node_modules/playwright-core/lib/coreBundle.js View on unpkg · L470 package/acode/dist/grammars/grammars/tree-sitter-go.wasm View file • path = [redacted]-sitter-go.wasm
kind = wasm_module
sizeBytes = 217182
magicHex = [redacted]
Medium Ships Wasm Module
Package ships WebAssembly modules.
package/acode/dist/grammars/grammars/tree-sitter-go.wasm View on unpkg node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 View file • path = node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1
kind = build_helper
sizeBytes = 869
magicHex = [redacted]
Medium Ships Build Helper
Package ships non-JavaScript build or shell helper files.
node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 View on unpkg dist/remote-desktop/system-backend.js#virtual:string-array:round1 View file • stage = ast_semantic_analysis; reason = ast_parse_error; limitedFiles = 8
High Semantic Analysis Limited
A bounded semantic-analysis stage reached its safety limit; remaining detectors completed, but this package requires AI review.
dist/remote-desktop/system-backend.js#virtual:string-array:round1 View on unpkg from
"express"
;
import
{adapterRegistry
as
x}
from
"./adapter/index.js"
;
import
{attachBrowserWebSocketServer
as
F}
from
"./browser/browser-ws-bridge.js"
;
import
{getAcodeDataHome
as
G,getAcodePluginDataHome
as
O,getActiveBridgeHttpPort
as
P,getAutoRegisterConfigFilePath
as
_,getBridgeRuntimePropertiesFilePath
as
K,reserveBridgeListenPort
as
L,validateProductionToken
as
N,writeBridgeRuntimePropertiesFile
as
j}
from
"./config.js"
;
import
{attachRemoteDesktopWebSocketServer
as
W}f ...
3
High Child Process
Package source references child process execution.
dist/index.js View on unpkg · L1 Medium Dynamic Require
Package source references dynamic require/import behavior.
dist/index.js View on unpkg · L1 Long lines were clipped for display.
• matchType = previous_version_dangerous_delta
matchedPackage = aws-runtime-bridge@1.9.130
matchedIdentity = npm:YXdzLXJ1bnRpbWUtYnJpZGdl:1.9.130
similarity = 0.525
summary = stored previous version shares package body but lacks this dangerous source file
Critical Previous Version Dangerous Delta
This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.
dist/index.js View on unpkg import
_
from
"axios"
;
import
{Router
as
J}
from
"express"
;
import
{adapterRegistry
as
Q}
from
"../adapter/index.js"
;
import
{getBridgeVersion
as
R,resolveSchedulerBaseUrlFrom
as
Y}
from
"../config.js"
;
import
{validateToken
as
h,validateTokenOrPanelSession
as
T}
from
"../middleware/auth.js"
;
import
{getConfiguredConnectionKeys
as
O,getRegistrationState
as
Z,requestRuntimeAccessTokenRefreshForServer
as
ee,resolveSchedulerBaseUrlFromToken
as
te} ...
2
Low Weak Crypto
Package source references weak cryptographic algorithms.
dist/routes/instance.js View on unpkg · L1 Long lines were clipped for display.
G}
from
"node:fs"
;
import
m
from
"node:path"
;
import
D
from
"node:os"
;
import
{fileURLToPath
as
j}
from
"node:url"
;
import
{configureStartupConfig
as
re,printConfigExampleCommand
as
te}
from
"./startup-config-wizard.js"
;
import
{getRuntimeHomeDir
as
ne}
from
"../config.js"
;
import
{createWindowsServiceManager
as
se,isNodeWindowsAvailable
as
ie}
from
"./windows-service-manager.js"
;
const
w
=
"awsb.service"
,
N
=
`/etc/sy ...
2 ` )} function le ( e ){process.stderr. write ( `${ e }
3 ` )} function me ( e ){ return e === "-v" || e === "--version" || e === "version" } function fe ( e ){ return `"${ e . replace ( / \\ / g , " \\\\ " ). replace ( /"/ g , ' \\ "' ) }"` } function K (){ return process.argv[ 1 ] ? m. resolve (process.argv[ 1 ]) : j ( import . meta .url)} function ge ( e ){ return [ "[Unit]" , "Description=AgentsWorkStudio Runtime Bridge" , "After=network-online.target" , "Wants=network-online.target" , "" , "[Service]" , "Type=simple" , "Environment=AWS_BRIDGE_SKIP_SETUP=true" , `ExecStart=${ [ process . execPath , e ]. map ( t => fe ( t )). join ( " " ) }` , "Restart=on-failure" , "RestartSec=5s" , "" , "[Install]" , "WantedBy=multi-user.target" , "" ]. join ( `
4 ` )} function P ( e ){ return e. replace ( /&/ g , "&" ). replace ( /</ g , "<" ). replace ( />/ g , ">" )} function he ( e , r = {}){ const t = r.userHomeDir ?? D . homedir (), s = r.logPath ?? U , i = s. replace ( / \. out \. log $ / , ".err.log" ); return [ '<?xml version="1.0" encoding="UTF-8"?>' , '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' , '<plist version="1.0">' , "<dict>" , " <key>Label</key>" , ` <string>${ P ( L ) }</string>` , " <key>ProgramArguments</key>" , " <array>" , ` <string>${ P ( process . execPath ) }</string>` , ` <string>${ P ( e ) }</string>` , " </array>" , " <key>EnvironmentVariables</ke .. .
5 `)}function b(e,r){return e("systemctl",r)}function C(e,r){return r.error?` [runtime - bridge] ${e}\u5931\u8D25: ${r.error.message} `:` [runtime - bridge] ${e}\u5931\u8D25\uFF0Csystemctl \u9000\u51FA\u7801: ${r.status?? "unknown" } `}function o(e){return!e.error&&e.status===0}function $(e,r){return e==="linux"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd \u73AF\u5883\u3002 "),!1)}function R(e,r){return e==="darwin"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 macOS launchd \u73AF\u5883\u3002 "),!1)}function Y(e){e("Usage: awsb service <install|uninstall|st ...
6 npm install -g aws-runtime-bridge` ),{handled: ! 0 ,exitCode: 1 }} async function O ( e ){ const r = e.windowsServiceManager; if ( ! r &&! ie ()) return ve (e.stderr); const t = e.windowsServiceLogPath || B , s = m. dirname (e.executablePath), i = D . homedir (); try { await (r || se ()). install ({name:q,description: "awsb runtime bridge" ,script:e.executablePath,workingDirectory:s,env:[{name: "AWS_BRIDGE_SKIP_SETUP" ,value: "true" },{name: "AWS_RUNTIME_HOME_DIR" ,value:i}],logpath: A ()})} catch (u){ const l = u instanceof Error ? u :new Error ( String (u)); return e. stderr ( `[runtime-bridge] \u5B89\u88C5 Windows \u670D\u52A1\u5931\u8D25 : ${ l . message }` ),{ha ...
7
Medium Install Persistence
Source writes installer persistence such as shell profile or service configuration.
dist/services/cli-commands.js View on unpkg · L1 Long lines were clipped for display.
1 Trigger-reachable persistence chain: scripts.start -> dist/index.js -> dist/services/cli-commands.js
L1: import{spawnSync as g}from"node:child_process";import{createInterface as X}from"node:readline/promises";import{existsSync as h,mkdirSync as I,readFileSync as Z,rmSync as ee,unlinkS...
L2: `)}function le(e){process.stderr.write(`${e}
...
L5: `)}function b(e,r){return e("systemctl",r)}function C(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl ...
L6: npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function O(e){const r=e.windowsServiceManager;if(!r&&!ie())return ve(e.stderr);const t=e.windowsServiceLogPath||B,...
L7:
High Trigger Reachable Persistence
A manifest entrypoint or package-local install chain reaches persistence behavior.
dist/services/cli-commands.js View on unpkg · L1 as T
from
"node:os"
;
import
*
as h
from
"node:path"
;
import
{v4
as
y}
from
"uuid"
;
import
{BRIDGE_PACKAGE_ROOT
as
_,importBridgeSdkPackage
as
$}
from
"../utils/sdk-package-loader.js"
;
import
{getAcodeDataHome
as
M}
from
"../config.js"
;
import
{logger
as
L}
from
"../utils/logger.js"
;
import
{IdlePollLoop
as
O}
from
"./idle-poll-loop.js"
;
import
{getToolActionInfo
as
D,redactTransientClipboardPastePaths
as
P,redactTransientClipboardPastePathsInValue
as
C}
from
"./types.js"
;
import
{ ...
2 `)):t}return this.sdkModule}async waitForServer(t,e,o,r){const i=Date.now()+o;for(;Date.now()<i;){try{if((await t.session.list({query:{directory:e}})).data!==void 0)return}catch{}await new Promise(s=>setTimeout(s,300))}throw new Error(` OpenCode server (port ${r}) did not start within ${o} ms `)}recordStartupOutput(t,e){const o=e.trim();o&&(t.startupOutput=[...t.startupOutput??[],o].slice(-8))}formatStartupExitMessage(t,e){const o=t.signal?` signal ${t.signal} `:` code ${t.code?? "unknown" } `,r=(e??[]).join(`
High Same File Env Network Execution
A single source file combines environment access, network access, and code or shell execution; review context before blocking.
dist/adapter/OpencodeSdkAdapter.js View on unpkg · L1 3 `).trim();return r?` OpenCode server exited during startup (${o}): ${r} `:` OpenCode server exited during startup (${o}). Please check whether opencode serve can run in this workspace. `}dispatchInitialPrompt(t,e){this.sendMessage(t,e).catch(o=>{const r=o instanceof Error?o.message:String(o);this.emitEvent({type:"error",sessionId:t,timestamp:new Date().toISOString(),data:{text:` OpenCode initial prompt failed: ${r} `}})})}startSseLoop(t,e){e.sseActive=!0;const o=new AbortController;e.sseAbortController=o,this.runSseLoop(t,e,o).catch(r=>{o.signal.aborted||console.error("[OpencodeSdkAdapter] SSE loop ...
Long lines were clipped for display.
* 浏览器内核与系统依赖(libnss3 等)一步到位;--with-deps 失败时回退为仅下载内核。
12 * - Linux 非 root:仅下载内核,缺系统库时输出可操作的 sudo 提示。
13 * - 其他平台(Windows/macOS):`install chromium`(系统库由系统自带)。
14 * - 下载源:动态读取当前 npm registry 配置,若为 npmmirror/taobao 系镜像则自动
15 * 推导对应的 Playwright 二进制镜像加速下载;官方源或其他源走 playwright 默认 CDN。
16 * 用户显式设置 PLAYWRIGHT_DOWNLOAD_HOST 时优先尊重用户选择。
17 * - 幂等:playwright 检测到浏览器已安装时直接跳过,重复安装无副作用。
18 * - 容错:任何失败仅警告并给出手动命令,绝不阻断 npm 安装。
19 * - 跳过:设置环境变量 AWS_BRIDGE_SKIP_PLAYWRIGHT_INSTALL=1。
21 import { execFile, spawnSync } from "node:child_process" ;
22 import { createRequire } from "node:module" ;
23 import { dirname, join } from "node:path" ;
24 import { promisify } from "node:util" ;
26 const execFileAsync = promisify (execFile);
27 const require = createRequire ( import . meta .url);
29 /** 下载超时:Chromium 约 150MB,慢网络下允许 15 分钟。 */
30 const INSTALL_TIMEOUT_MS = 15 * 60 * 1000 ;
32 /** 定位 playwright 包的 CLI 入口(兼容 npm hoist 与嵌套安装两种布局)。 */
33 function resolvePlaywrightCliPath () {
35 const packageJsonPath = require. resolve ( "playwright/package.json" );
36 return join ( dirname (packageJsonPath), "cli.js" );
High Sandbox Evasion Gated Capability
Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
scripts/ensure-playwright-browser.mjs View on unpkg · L20