@empir3/empir3-bridge 0.3.21

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 (62) hide show
  1. package/CHANGELOG.md +1531 -0
  2. package/CODE_OF_CONDUCT.md +9 -0
  3. package/CONTRIBUTING.md +75 -0
  4. package/LICENSE +21 -0
  5. package/README.md +464 -0
  6. package/SECURITY.md +130 -0
  7. package/assets/accuracy-lab.html +2639 -0
  8. package/assets/api-clis-real.jpg +0 -0
  9. package/assets/bridge-console-hero.jpg +0 -0
  10. package/assets/browser-privacy.svg +151 -0
  11. package/assets/demo-orchestration.svg +74 -0
  12. package/assets/desktop-select-region.jpg +0 -0
  13. package/assets/in-page-chat.gif +0 -0
  14. package/assets/orchestration-hero.svg +126 -0
  15. package/assets/social-preview.png +0 -0
  16. package/assets/zara-accent.png +0 -0
  17. package/build/bootstrap.js +548 -0
  18. package/build/build.js +680 -0
  19. package/build/payload-entry.js +649 -0
  20. package/build/payload-signing-pub.json +7 -0
  21. package/docs/AGENT_GUIDE.md +259 -0
  22. package/docs/RELEASE.md +106 -0
  23. package/docs/SAFETY.md +112 -0
  24. package/docs/TESTING.md +181 -0
  25. package/installer/server.js +231 -0
  26. package/installer/ui/app.js +278 -0
  27. package/installer/ui/index.html +24 -0
  28. package/installer/ui/styles.css +146 -0
  29. package/package.json +95 -0
  30. package/scripts/bootstrap-e2e.mjs +650 -0
  31. package/scripts/certify-bridge.mjs +636 -0
  32. package/scripts/check-companion-surface.mjs +118 -0
  33. package/scripts/extract-welcome.mjs +64 -0
  34. package/scripts/gh-route-handler-check.mjs +57 -0
  35. package/scripts/gh-wire-test.mjs +107 -0
  36. package/scripts/publish-downloads.mjs +180 -0
  37. package/scripts/smoke-all-tools.mjs +509 -0
  38. package/scripts/smoke-live-bridge.mjs +696 -0
  39. package/scripts/splice-welcome.mjs +63 -0
  40. package/scripts/welcome-body.txt +2733 -0
  41. package/src/anthropic-client.ts +192 -0
  42. package/src/bootstrap-exe.ts +69 -0
  43. package/src/bridge.ts +2444 -0
  44. package/src/chat.ts +345 -0
  45. package/src/cli-runner.ts +239 -0
  46. package/src/cli.ts +649 -0
  47. package/src/config.ts +199 -0
  48. package/src/desktop-overlay.ps1 +121 -0
  49. package/src/executable-resolver.ts +330 -0
  50. package/src/handlers/agy-imagegen.ts +179 -0
  51. package/src/handlers/github-cli.ts +399 -0
  52. package/src/handlers/higgsfield-cli.ts +783 -0
  53. package/src/launch.js +337 -0
  54. package/src/mcp-server.ts +1265 -0
  55. package/src/pair-claim.ts +218 -0
  56. package/src/payload-daemon.ts +168 -0
  57. package/src/server.ts +21036 -0
  58. package/src/tool-defaults.ts +230 -0
  59. package/src/update-check.js +136 -0
  60. package/tray/build.py +76 -0
  61. package/tray/requirements.txt +2 -0
  62. package/tray/tray.py +1843 -0
package/SECURITY.md ADDED
@@ -0,0 +1,130 @@
1
+ # Security Policy
2
+
3
+ Empir3 Bridge runs locally and can control a real Chrome instance. When you enable desktop tools, it can also move and click the host mouse. That is powerful, so the security boundary is explicit.
4
+
5
+ The default mode is local-only MCP/CLI use. Empir3 relay is opt-in: it starts only after you pair this PC with an Empir3 account.
6
+
7
+ ## What The Bridge Accesses
8
+
9
+ - A dedicated Chrome profile at `~/.empir3-bridge/profile/`.
10
+ - A local CDP bridge, default `127.0.0.1:9867`.
11
+ - A local HTTP/WebSocket wrapper, default `127.0.0.1:3006`.
12
+ - Chat config (mode, API key, per-tool toggles) at `~/.empir3-bridge/config.json`.
13
+ - Bridge auth token after Empir3 pairing at `%APPDATA%\Empir3\bridge-auth.json` on Windows, `~/.empir3/Empir3/bridge-auth.json` on macOS/Linux.
14
+ - Bridge settings (permissions, device name, handlers, custom providers) at `%APPDATA%\Empir3\bridge-settings.json` on Windows, `~/.empir3/Empir3/bridge-settings.json` on macOS/Linux.
15
+ - Per-launch bridge nonce at `~/.empir3-bridge/nonce`.
16
+ - Local conversations under `~/.empir3-bridge/conversations/`.
17
+ - Generated artifacts under `~/.empir3-bridge/artifacts/`.
18
+ - Local screenshots and feedback under `./feedback/`.
19
+ - Local recordings under `./recordings/`.
20
+ - Optional GitHub Releases check to see whether a newer bridge version exists.
21
+
22
+ If desktop tools are enabled, the bridge can read monitor bounds, capture desktop screenshots, and move/click/drag the mouse in physical screen coordinates.
23
+
24
+ ## What The Bridge Does Not Access By Default
25
+
26
+ - Your normal Chrome profile.
27
+ - Your files outside the bridge data paths.
28
+ - Your LAN or the public internet as a server.
29
+ - Empir3 cloud services unless you explicitly pair this PC.
30
+
31
+ The wrapper and CDP bridge bind to `127.0.0.1` by default. Chrome is launched with `--remote-debugging-address=127.0.0.1`.
32
+
33
+ ## Empir3 Pairing And Remote Relay
34
+
35
+ Pairing is optional. When you pair with Empir3, the bridge stores a local auth token, reports the device to Empir3, and opens an outbound websocket to the Empir3 relay. The relay can deliver browser, desktop, file, CLI, and companion commands to the bridge, but local device permissions remain the final enforcement layer.
36
+
37
+ Important boundaries:
38
+
39
+ - No Empir3 account is required for local MCP use.
40
+ - Signing out deletes the local bridge auth token.
41
+ - Remote relay does not expose `:3006` or `:9867` to the public internet.
42
+ - Remote commands still pass through local read/write/execute permissions, per-tool toggles, handler-family gates, and hard blocks for known-dangerous commands.
43
+ - The tray and welcome console show paired/relay status, current permissions, and revoke/sign-out actions.
44
+
45
+ ## Localhost Browser Boundary
46
+
47
+ The bridge serves a welcome console and overlay from localhost. To reduce cross-origin localhost abuse, mutating browser-origin HTTP requests and non-local overlay websocket connections require the per-launch bridge nonce. The nonce is generated on launch and is only injected into trusted bridge-controlled pages.
48
+
49
+ ## Tool Safety
50
+
51
+ Write-capable tools are disabled by default:
52
+
53
+ - browser click/type/key tools
54
+ - desktop click/hover/drag tools
55
+ - JavaScript eval
56
+ - recording and replay tools
57
+
58
+ Remote Empir3 relay commands are subject to the same local tool gates. Turning a category off blocks it for local MCP, the welcome console, and paired Empir3 relay.
59
+
60
+ You can inspect the current state:
61
+
62
+ ```bash
63
+ npx tsx src/cli.ts safety-status
64
+ ```
65
+
66
+ You can revoke write control:
67
+
68
+ ```bash
69
+ npx tsx src/cli.ts revoke-control
70
+ ```
71
+
72
+ More detail: [docs/SAFETY.md](docs/SAFETY.md).
73
+
74
+ ## Sensitive Local Data
75
+
76
+ Screenshots, recordings, and conversation logs may contain private page data. Do not attach them to public issues without reviewing them first.
77
+
78
+ If you use API mode in chat settings, your Anthropic API key is stored locally in:
79
+
80
+ ```text
81
+ ~/.empir3-bridge/config.json
82
+ ```
83
+
84
+ Any custom OpenAI-compatible provider keys you add (Ollama, OpenRouter, vLLM, etc.) are stored locally in:
85
+
86
+ ```text
87
+ %APPDATA%\Empir3\bridge-settings.json (Windows)
88
+ ~/.empir3/Empir3/bridge-settings.json (macOS/Linux)
89
+ ```
90
+
91
+ The bridge does not upload these keys to Empir3.
92
+
93
+ If you pair with Empir3, the bridge auth token is stored locally in:
94
+
95
+ ```text
96
+ %APPDATA%\Empir3\bridge-auth.json (Windows)
97
+ ~/.empir3/Empir3/bridge-auth.json (macOS/Linux)
98
+ ```
99
+
100
+ Treat this file like a login credential for this device. Use tray **Sign out** or the welcome console account controls to remove it.
101
+
102
+ ## Reporting A Vulnerability
103
+
104
+ Email **security@empir3.com** with:
105
+
106
+ - description of the issue
107
+ - reproduction steps
108
+ - affected OS and version
109
+ - proof of concept, if available
110
+
111
+ If the repository is public on GitHub, you may also open a private security advisory:
112
+
113
+ ```text
114
+ https://github.com/empir3hq/empir3-bridge/security/advisories/new
115
+ ```
116
+
117
+ Please do not file public GitHub issues for security problems.
118
+
119
+ ## Response
120
+
121
+ We aim to acknowledge security reports within 72 hours and coordinate disclosure with the reporter.
122
+
123
+ ## Supported Versions
124
+
125
+ Only the latest minor version receives security fixes.
126
+
127
+ | Version | Supported |
128
+ | --- | --- |
129
+ | 0.3.x | Yes |
130
+ | < 0.3 | No |