github TypeScript re-analysis due

kalebteccom/browxai

github

A browser, built for agents. MCP-native, model-agnostic browser control over Chromium, Firefox, WebKit, Android Chrome, and Safari — a curated, token-efficient tool surface that is safe by default.

maintainer
kalebteccom
licence
MIT
first seen
2026-07-30
last seen
2026-09-17
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 13 tools
transport stdio · http counts 13 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • ${api.namespace}.add_element
  • ${api.namespace}.create_rectangle
  • ${api.namespace}.create_shape
  • ${api.namespace}.delete_element
  • ${api.namespace}.delete_shape
  • ${api.namespace}.get_scene_state
  • ${api.namespace}.get_selected_shapes
  • ${api.namespace}.get_selection
  • ${api.namespace}.get_viewport
  • ${api.namespace}.move_node
  • ${api.namespace}.select_node
  • ${api.namespace}.select_shapes
  • ${api.namespace}.set_scroll
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 797c059 · analyzer v33 · 3d ago

skills & prompt files 26

danger signals8

code evidence vv0.10.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 666

filesystem 150

  • fs (weak) kalebteccom-browxai-797c059/docs/rfcs/references/safari-probe/safari-substrate-spike.mjs :4 import { readFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/config.ts :2 import { existsSync, readFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/mock/mock-mcp-server.ts :2 import { unlink } from "node:fs/promises";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/report/generator.ts :1 import { mkdir, writeFile } from "node:fs/promises";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runner.ts :2 import { mkdir, readFile } from "node:fs/promises";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runtime/processes.ts :2 import { access, mkdir, readdir, stat } from "node:fs/promises";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/trace/diagnostics-reader.ts :1 import { readFile, readdir, stat } from "node:fs/promises";
  • fs kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/trace/trace-record.ts :1 import { mkdir, writeFile } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/test/report-generator.test.ts :3 import { mkdtemp, rm } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/test/runner-bounds.test.ts :3 import { mkdtemp, readFile, rm } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/src/harness/exercises/action-network.ts :1 import { readFile, stat } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/src/harness/exercises/extensions.ts :1 import { mkdir, writeFile } from "node:fs/promises";
show 28 more
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/src/harness/exercises/file-io.ts :1 import { readFile, stat } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/src/harness/exercises/read-core.ts :1 import { mkdir, writeFile } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/src/harness/mcp-client.ts :1 import { existsSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/packages/capability-testbed/src/harness/run-report.ts :1 import { mkdir, mkdtemp, writeFile } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/scripts/audit-package-contents.mjs :28 import { readFileSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/scripts/build-replay-player.ts :20 import { readFile, mkdir, writeFile } from "node:fs/promises";
  • fs (weak) kalebteccom-browxai-797c059/scripts/lockfile-lint.mjs :23 import { readFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/chrome.ts :13 import { existsSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/doctor-engines.ts :15 import { existsSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/doctor-plugins-scan.ts :11 import { existsSync, readFileSync, readdirSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/cli/doctor-plugins.test.ts :9 import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/doctor-plugins.ts :15 import { existsSync, readFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/doctor.ts :7 import { existsSync, statSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/init.ts :11 import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/cli/serve.ts :16 import { chmodSync, existsSync, unlinkSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/engine/adapters/chromium.engine.test.ts :2 import { mkdtempSync, rmSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/engine/adapters/safari/launch.ts :16 import { statSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/page/archive-assets.ts :7 import { statSync, readdirSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/page/archive-emit.ts :16 import { mkdirSync, writeFileSync, statSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/page/archive.test.ts :2 import { mkdtempSync, rmSync, existsSync, readFileSync, readdirSync, statSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/page/asset-export.test.ts :2 import { mkdtempSync, readFileSync, rmSync, existsSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/page/asset-export.ts :23 import { mkdirSync, writeFileSync, statSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/page/dom-export.test.ts :3 import { mkdtempSync, rmSync, existsSync, readFileSync, statSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/page/dom-export.ts :35 import { mkdirSync, writeFileSync, statSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/page/downloads.test.ts :2 import { mkdtempSync, readFileSync, rmSync, writeFileSync, existsSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/page/downloads.ts :22 import { mkdirSync, readFileSync, statSync, unlinkSync } from "node:fs";
  • fs (weak) kalebteccom-browxai-797c059/src/page/drop-files.test.ts :9 import { writeFileSync, mkdirSync, rmSync, existsSync } from "node:fs";
  • fs kalebteccom-browxai-797c059/src/page/drop-files.ts :32 import { readFileSync } from "node:fs";

110 more not shown — this panel samples each group; the count above is the real total.

shell / exec 18

  • shell kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/bin/dogfood.js :2 import { spawnSync } from "node:child_process";
  • shell kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runner.ts :1 import { execFile } from "node:child_process";
  • shell kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runtime/codex-app-server-own.ts :1 import { spawn as nodeSpawn } from "node:child_process";
  • shell kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runtime/processes.ts :1 import { spawn, type ChildProcess } from "node:child_process";
  • shell (weak) kalebteccom-browxai-797c059/scripts/audit-package-contents.mjs :27 import { execFileSync } from "node:child_process";
  • shell kalebteccom-browxai-797c059/src/cli/chrome.ts :12 import { spawn } from "node:child_process";
  • shell kalebteccom-browxai-797c059/src/engine/adapters/adb.ts :22 import { execFile } from "node:child_process";
  • shell kalebteccom-browxai-797c059/src/engine/adapters/safari/launch.ts :15 import { execFile } from "node:child_process";
  • shell kalebteccom-browxai-797c059/src/page/clipboard.ts :12 import { spawn } from "node:child_process";
  • shell kalebteccom-browxai-797c059/src/page/dom-walk.ts :167 const raw = await exec(`return (${PAGE_SCRIPT})(arguments[0], arguments[1], arguments[2])`, [
  • shell kalebteccom-browxai-797c059/src/page/snapshot-substrate-safari.ts :30 exec(scriptBody: string, args: unknown[]): Promise<unknown>;
  • shell kalebteccom-browxai-797c059/src/plugin/pm-runner.ts :12 import { spawn, spawnSync } from "node:child_process";
show 6 more
  • shell (weak) kalebteccom-browxai-797c059/src/replay/artifact.test.ts :5 import { execFileSync } from "node:child_process";
  • shell kalebteccom-browxai-797c059/src/util/credentials-contract.ts :14 import { spawn } from "node:child_process";
  • shell (weak) kalebteccom-browxai-797c059/test/architecture/gate-bootstrap.test.ts :25 import { execFileSync } from "node:child_process";
  • shell (weak) kalebteccom-browxai-797c059/test/keystone/android.keystone.test.ts :28 import { execFileSync } from "node:child_process";
  • shell (weak) kalebteccom-browxai-797c059/test/keystone/attached-pool.keystone.test.ts :8 import { spawn, type ChildProcess } from "node:child_process";
  • shell (weak) kalebteccom-browxai-797c059/test/keystone/replay-player.keystone.test.ts :27 import { spawn, type ChildProcess } from "node:child_process";

network 26

  • net (weak) kalebteccom-browxai-797c059/docs/rfcs/references/safari-probe/bidi-probe.mjs :10 const res = await fetch(BASE + path, {
  • net (weak) kalebteccom-browxai-797c059/docs/rfcs/references/safari-probe/classic-probe.mjs :5 const res = await fetch(BASE + path, {
  • net (weak) kalebteccom-browxai-797c059/docs/rfcs/references/safari-probe/safari-substrate-spike.mjs :29 const res = await fetch(BASE + path, {
  • net kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/mock/mock-mcp-server.ts :1 import { createServer } from "node:net";
  • net kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/oracle/exercise-oracle.ts :1 import { createConnection, type Socket } from "node:net";
  • net kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runtime/browxai-socket-proxy.ts :1 import { createConnection, type Socket } from "node:net";
  • net kalebteccom-browxai-797c059/packages/capability-testbed/dogfood/src/runtime/processes.ts :4 import { createConnection, createServer } from "node:net";
  • net kalebteccom-browxai-797c059/packages/capability-testbed/src/server/http.ts :5 import { createServer, type IncomingMessage, type ServerResponse } from "node:http";
  • net kalebteccom-browxai-797c059/packages/capability-testbed/src/server/pages/network.ts :36 document.getElementById('do-json').addEventListener('click', () => show(fetch('/api/json')));
  • net kalebteccom-browxai-797c059/packages/capability-testbed/src/server/pages/workers.ts :66 const r = await fetch('/workers/sw-ping');
  • net kalebteccom-browxai-797c059/packages/capability-testbed/src/server/types.ts :5 import type { IncomingMessage, ServerResponse } from "node:http";
  • net kalebteccom-browxai-797c059/packages/capability-testbed/src/server/ws.ts :8 import type { IncomingMessage } from "node:http";
show 14 more
  • net kalebteccom-browxai-797c059/src/cli/doctor-cdp.ts :16 const res = await fetch(probeUrl, { signal: AbortSignal.timeout(2000) });
  • net kalebteccom-browxai-797c059/src/cli/serve.ts :17 import { createServer as createNetServer, type Server } from "node:net";
  • net kalebteccom-browxai-797c059/src/engine/adapters/adb.ts :23 import { createServer } from "node:net";
  • net kalebteccom-browxai-797c059/src/page/archive-assets.ts :28 var r = await fetch(${literal}, { credentials: 'include', cache: 'no-store' });
  • net kalebteccom-browxai-797c059/src/page/archive.ts :26 // URL is then fetched **from inside the page** via `await fetch(u)`, which
  • net kalebteccom-browxai-797c059/src/page/asset-export.ts :17 // short-lived) we fall back to a same-origin in-page `fetch()` for the
  • net kalebteccom-browxai-797c059/src/page/element-export-discovery.ts :169 var r = await fetch(${literal}, { credentials: 'include', cache: 'no-store' });
  • net kalebteccom-browxai-797c059/src/sdk/transport-socket.ts :13 import { createConnection, type Socket } from "node:net";
  • net kalebteccom-browxai-797c059/src/tools/capture-report-export-tools.ts :23 // tool falls back to an in-page `fetch()` against the original URL —
  • net kalebteccom-browxai-797c059/src/transport/socket-transport.ts :24 import type { Socket } from "node:net";
  • net (weak) kalebteccom-browxai-797c059/test/keystone/attached-pool.keystone.test.ts :9 import { createServer as createSocket } from "node:net";
  • net (weak) kalebteccom-browxai-797c059/test/keystone/fixture.ts :15 import { createServer, type Server } from "node:http";
  • net (weak) kalebteccom-browxai-797c059/test/keystone/replay-dom.keystone.test.ts :18 import { createServer, type Server } from "node:http";
  • net (weak) kalebteccom-browxai-797c059/test/keystone/replay-player.keystone.test.ts :28 import { createServer as createSocket } from "node:net";

secrets 1

  • secrets (weak) kalebteccom-browxai-797c059/src/page/verify.test.ts :280 { kind: "equals", key: "process.env.SECRET", value: "x" },

tool registrations 15

  • ${api.namespace}.get_scene_state kalebteccom-browxai-797c059/packages/plugins/excalidraw/src/index.ts :207
  • ${api.namespace}.get_viewport kalebteccom-browxai-797c059/packages/plugins/excalidraw/src/index.ts :217
  • ${api.namespace}.add_element kalebteccom-browxai-797c059/packages/plugins/excalidraw/src/index.ts :227
  • ${api.namespace}.delete_element kalebteccom-browxai-797c059/packages/plugins/excalidraw/src/index.ts :237
  • ${api.namespace}.set_scroll kalebteccom-browxai-797c059/packages/plugins/excalidraw/src/index.ts :247
  • ${api.namespace}.get_selection kalebteccom-browxai-797c059/packages/plugins/figma/src/index.ts :229
  • ${api.namespace}.get_viewport kalebteccom-browxai-797c059/packages/plugins/figma/src/index.ts :239
  • ${api.namespace}.select_node kalebteccom-browxai-797c059/packages/plugins/figma/src/index.ts :249
  • ${api.namespace}.move_node kalebteccom-browxai-797c059/packages/plugins/figma/src/index.ts :259
  • ${api.namespace}.create_rectangle kalebteccom-browxai-797c059/packages/plugins/figma/src/index.ts :269
  • ${api.namespace}.get_selected_shapes kalebteccom-browxai-797c059/packages/plugins/tldraw/src/index.ts :202
  • ${api.namespace}.get_viewport kalebteccom-browxai-797c059/packages/plugins/tldraw/src/index.ts :212
show 3 more
  • ${api.namespace}.create_shape kalebteccom-browxai-797c059/packages/plugins/tldraw/src/index.ts :222
  • ${api.namespace}.delete_shape kalebteccom-browxai-797c059/packages/plugins/tldraw/src/index.ts :232
  • ${api.namespace}.select_shapes kalebteccom-browxai-797c059/packages/plugins/tldraw/src/index.ts :242

install hooks 2

  • prepare kalebteccom-browxai-797c059/package.json :56 git config core.hooksPath .githooks || true
  • prepublishOnly kalebteccom-browxai-797c059/package.json :57 node scripts/audit-package-contents.mjs && pnpm typecheck && pnpm test && pnpm build

declared dependencies 21

  • @modelcontextprotocol/sdk@^1.30.0
  • playwright-core@^1.62.0
  • rrweb@2.1.4
  • zod@^3.23.0
  • @cyclonedx/cdxgen@^12.8.4
  • @eslint/js@^9.12.0
  • @types/node@^20.14.0
  • depcheck@^1.4.7
  • dependency-cruiser@^17.4.3
  • esbuild@^0.28.2
  • eslint@^9.12.0
  • eslint-plugin-import-x@^4.3.0
show 9 more
  • globals@^15.11.0
  • jscpd@^5.0.9
  • license-checker-rseidelsohn@^4.4.2
  • lint-staged@^15.2.10
  • prettier@^3.3.3
  • tsx@^4.19.0
  • typescript@^5.5.0
  • typescript-eslint@^8.70.0
  • vitest@^2.0.0

clipboard 1

  • clipboard shell call kalebteccom-browxai-797c059/src/page/clipboard.ts :48 ? ["pbcopy"]

cursor-plugin 1

  • opaque (low) kalebteccom-browxai-797c059/.cursor/rules/00-substrate.mdc bundled .cursor/ plugin descriptor (kalebteccom-browxai-797c059/.cursor/rules/00-substrate.mdc) — presence-detected; review the descriptor