farai 0.3.6 → 0.3.8

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.
@@ -83,14 +83,24 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
83
83
 
84
84
  RUN UV_TOOL_DIR=/opt/uv/tools UV_TOOL_BIN_DIR=/opt/uv/bin uv tool install --with 'mcp>=1.25.0,<2' mitmproxy-mcp==0.6.1 \
85
85
  && chmod -R a+rX /opt/uv \
86
- && PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install -g \
87
- @playwright/mcp@latest \
86
+ && npm install -g \
88
87
  typescript@${TYPESCRIPT_VERSION} \
89
88
  typescript-language-server@${TYPESCRIPT_LANGUAGE_SERVER_VERSION} \
90
89
  pyright@${PYRIGHT_VERSION} \
91
90
  && uv cache clean \
92
91
  && npm cache clean --force
93
92
 
93
+ ENV PLAYWRIGHT_BROWSERS_PATH=/opt/ms-playwright
94
+
95
+ RUN mkdir -p /opt/playwright-mcp \
96
+ && printf '%s' '{"name":"farai-playwright-mcp","private":true,"dependencies":{"@playwright/mcp":"latest","patchright":"latest"},"overrides":{"playwright":"npm:patchright@latest","playwright-core":"npm:patchright-core@latest"}}' > /opt/playwright-mcp/package.json \
97
+ && cd /opt/playwright-mcp \
98
+ && npm install --omit=dev --no-audit --no-fund \
99
+ && if [ -e node_modules/.bin/mcp-server-playwright ]; then ln -sf /opt/playwright-mcp/node_modules/.bin/mcp-server-playwright /usr/local/bin/playwright-mcp; else ln -sf /opt/playwright-mcp/node_modules/@playwright/mcp/cli.js /usr/local/bin/playwright-mcp; fi \
100
+ && node_modules/.bin/patchright install --with-deps chromium \
101
+ && chmod -R a+rX /opt/ms-playwright /opt/playwright-mcp \
102
+ && npm cache clean --force
103
+
94
104
  COPY --from=lsp-builder /out/gopls /usr/local/bin/gopls
95
105
  COPY --from=lsp-builder /out/rust-analyzer /usr/local/bin/rust-analyzer
96
106
 
@@ -168,6 +178,11 @@ RUN git clone --depth 1 https://github.com/worawit/blutter.git /opt/blutter \
168
178
 
169
179
  RUN git clone --depth 1 https://github.com/danielmiessler/SecLists.git /usr/share/seclists
170
180
 
181
+ RUN apt-get update \
182
+ && apt-get install -y --no-install-recommends xvfb xauth \
183
+ && apt-get clean \
184
+ && rm -rf /var/lib/apt/lists/*
185
+
171
186
  COPY redsocks.conf.tmpl /usr/local/share/farai/redsocks.conf.tmpl
172
187
  COPY farai-proxy-init.sh /usr/local/bin/farai-proxy-init
173
188
  COPY farai-proxy-teardown.sh /usr/local/bin/farai-proxy-teardown
@@ -772,7 +772,6 @@ async def proxy_replay_correlated(
772
772
  if not isinstance(headers, dict) or not all(isinstance(key, str) and isinstance(value, str) for key, value in headers.items()):
773
773
  return json.dumps({"ok": False, "error": "headers_json must encode a string-to-string object."})
774
774
 
775
- # Upstream treats None as "reuse the captured body"; an empty string omits it.
776
775
  resolved_body = "" if body == "__omit__" else body
777
776
  variables = getattr(server.controller, "session_variables", {})
778
777
  resolver = getattr(server, "_resolve_template", None)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "farai",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "AI Harness for Security Assessments",
@@ -48,7 +48,7 @@
48
48
  "test": "bun test ./test/*.test.ts ./test/*.test.tsx",
49
49
  "verify": "bun run typecheck && bun run test && bun run test:package",
50
50
  "release:check": "bun run verify && bun audit",
51
- "eval:smoke": "bun run test/evals/smoke.ts",
51
+ "eval:smoke": "bun run src/cli/index.ts eval",
52
52
  "prepare": "bun run scripts/prepare-package.ts",
53
53
  "prepublishOnly": "bun run verify",
54
54
  "prepack": "bun run build",
@@ -61,22 +61,22 @@
61
61
  "dependencies": {
62
62
  "@modelcontextprotocol/sdk": "1.30.0",
63
63
  "@napi-rs/keyring": "2.0.0",
64
- "@opentui/core": "0.5.10",
64
+ "@opentui/core": "0.5.11",
65
65
  "ajv": "8.20.0",
66
66
  "bun-pty": "0.4.10",
67
- "entities": "7.0.1",
67
+ "entities": "8.1.0",
68
68
  "figlet": "1.11.4",
69
- "fuzzysort": "3.1.0",
70
- "highlight.js": "11.11.1",
71
- "imapflow": "1.7.6",
72
- "mailparser": "3.9.17",
73
- "solid-js": "1.9.12"
69
+ "fuzzysort": "4.0.2",
70
+ "highlight.js": "11.12.0",
71
+ "imapflow": "1.7.8",
72
+ "mailparser": "3.9.20",
73
+ "solid-js": "1.9.15"
74
74
  },
75
75
  "devDependencies": {
76
- "@opentui/solid": "0.5.10",
77
- "@types/bun": "^1.1.0",
76
+ "@opentui/solid": "0.5.11",
77
+ "@types/bun": "1.4.1",
78
78
  "@types/mailparser": "3.4.6",
79
- "typescript": "5.9.3"
79
+ "typescript": "7.0.2"
80
80
  },
81
81
  "overrides": {
82
82
  "@babel/core": "7.29.7",