Skip to content

Commit dd045c3

Browse files
committed
fix(browser): split Rust entrypoint renderers
1 parent 4464bee commit dd045c3

2 files changed

Lines changed: 126 additions & 110 deletions

File tree

  • packages
    • app/src/lib/core/templates-entrypoint
    • lib/src/core/templates-entrypoint

packages/app/src/lib/core/templates-entrypoint/tasks.ts

Lines changed: 63 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -278,64 +278,72 @@ ${renderAgentLaunch(config)}
278278
// EFFECT: generated bash calls docker-git-browser-connection, which calls Docker.
279279
// INVARIANT: browser shares the project container network namespace, so CDP is http://127.0.0.1:9223 from agents.
280280
// COMPLEXITY: O(1) entrypoint orchestration; Docker build/run is delegated to Rust.
281+
const renderEntrypointRustBrowserConnectionStart = (): ReadonlyArray<string> => [
282+
"# Unified Rust browser connection (noVNC + CDP) for MCP Playwright + Hermes — per #347.",
283+
"# Defaults are safe no-ops unless MCP Playwright is enabled.",
284+
"docker_git_start_rust_browser_connection() {",
285+
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
286+
" return 0",
287+
" fi",
288+
"",
289+
" local browser_bin=\"\"",
290+
" local candidate",
291+
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
292+
" if [[ -x \"$candidate\" ]]; then",
293+
" browser_bin=\"$candidate\"",
294+
" break",
295+
" fi",
296+
" done",
297+
"",
298+
" if [[ -z \"$browser_bin\" ]]; then",
299+
" echo \"[browser] WARNING: docker-git-browser-connection not found; Playwright MCP browser is unavailable\" >&2",
300+
" MCP_PLAYWRIGHT_ENABLE=0",
301+
" export MCP_PLAYWRIGHT_ENABLE",
302+
" return 0",
303+
" fi",
304+
"",
305+
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
306+
" local network_mode=\"container:${project_container}\"",
307+
" mkdir -p /var/log",
308+
" \"$browser_bin\" start --project \"$project_container\" --network \"$network_mode\" >> /var/log/docker-git-browser.log 2>&1 || {",
309+
" echo \"[browser] WARNING: Rust browser connection failed; see /var/log/docker-git-browser.log\" >&2",
310+
" MCP_PLAYWRIGHT_ENABLE=0",
311+
" export MCP_PLAYWRIGHT_ENABLE",
312+
" return 0",
313+
" }",
314+
" echo \"[browser] Rust browser connection is ready via $browser_bin on $network_mode\"",
315+
"}"
316+
]
317+
318+
const renderEntrypointRustBrowserConnectionStop = (): ReadonlyArray<string> => [
319+
"docker_git_stop_playwright_browser() {",
320+
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
321+
" return 0",
322+
" fi",
323+
"",
324+
" local browser_bin=\"\"",
325+
" local candidate",
326+
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
327+
" if [[ -x \"$candidate\" ]]; then",
328+
" browser_bin=\"$candidate\"",
329+
" break",
330+
" fi",
331+
" done",
332+
"",
333+
" if [[ -z \"$browser_bin\" ]]; then",
334+
" return 0",
335+
" fi",
336+
"",
337+
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
338+
" \"$browser_bin\" stop --project \"$project_container\" >> /var/log/docker-git-browser.log 2>&1 || true",
339+
"}"
340+
]
341+
281342
export const renderEntrypointRustBrowserConnection = (): string =>
282343
[
283-
"# Unified Rust browser connection (noVNC + CDP) for MCP Playwright + Hermes — per #347.",
284-
"# Defaults are safe no-ops unless MCP Playwright is enabled.",
285-
"docker_git_start_rust_browser_connection() {",
286-
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
287-
" return 0",
288-
" fi",
289-
"",
290-
" local browser_bin=\"\"",
291-
" local candidate",
292-
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
293-
" if [[ -x \"$candidate\" ]]; then",
294-
" browser_bin=\"$candidate\"",
295-
" break",
296-
" fi",
297-
" done",
298-
"",
299-
" if [[ -z \"$browser_bin\" ]]; then",
300-
" echo \"[browser] WARNING: docker-git-browser-connection not found; Playwright MCP browser is unavailable\" >&2",
301-
" MCP_PLAYWRIGHT_ENABLE=0",
302-
" export MCP_PLAYWRIGHT_ENABLE",
303-
" return 0",
304-
" fi",
305-
"",
306-
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
307-
" local network_mode=\"container:${project_container}\"",
308-
" mkdir -p /var/log",
309-
" \"$browser_bin\" start --project \"$project_container\" --network \"$network_mode\" >> /var/log/docker-git-browser.log 2>&1 || {",
310-
" echo \"[browser] WARNING: Rust browser connection failed; see /var/log/docker-git-browser.log\" >&2",
311-
" MCP_PLAYWRIGHT_ENABLE=0",
312-
" export MCP_PLAYWRIGHT_ENABLE",
313-
" return 0",
314-
" }",
315-
" echo \"[browser] Rust browser connection is ready via $browser_bin on $network_mode\"",
316-
"}",
317-
"",
318-
"docker_git_stop_playwright_browser() {",
319-
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
320-
" return 0",
321-
" fi",
322-
"",
323-
" local browser_bin=\"\"",
324-
" local candidate",
325-
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
326-
" if [[ -x \"$candidate\" ]]; then",
327-
" browser_bin=\"$candidate\"",
328-
" break",
329-
" fi",
330-
" done",
331-
"",
332-
" if [[ -z \"$browser_bin\" ]]; then",
333-
" return 0",
334-
" fi",
344+
...renderEntrypointRustBrowserConnectionStart(),
335345
"",
336-
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
337-
" \"$browser_bin\" stop --project \"$project_container\" >> /var/log/docker-git-browser.log 2>&1 || true",
338-
"}",
346+
...renderEntrypointRustBrowserConnectionStop(),
339347
"",
340348
"docker_git_start_rust_browser_connection"
341349
].join("\n")

packages/lib/src/core/templates-entrypoint/tasks.ts

Lines changed: 63 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -278,64 +278,72 @@ ${renderAgentLaunch(config)}
278278
// EFFECT: generated bash calls docker-git-browser-connection, which calls Docker.
279279
// INVARIANT: browser shares the project container network namespace, so CDP is http://127.0.0.1:9223 from agents.
280280
// COMPLEXITY: O(1) entrypoint orchestration; Docker build/run is delegated to Rust.
281+
const renderEntrypointRustBrowserConnectionStart = (): ReadonlyArray<string> => [
282+
"# Unified Rust browser connection (noVNC + CDP) for MCP Playwright + Hermes — per #347.",
283+
"# Defaults are safe no-ops unless MCP Playwright is enabled.",
284+
"docker_git_start_rust_browser_connection() {",
285+
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
286+
" return 0",
287+
" fi",
288+
"",
289+
" local browser_bin=\"\"",
290+
" local candidate",
291+
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
292+
" if [[ -x \"$candidate\" ]]; then",
293+
" browser_bin=\"$candidate\"",
294+
" break",
295+
" fi",
296+
" done",
297+
"",
298+
" if [[ -z \"$browser_bin\" ]]; then",
299+
" echo \"[browser] WARNING: docker-git-browser-connection not found; Playwright MCP browser is unavailable\" >&2",
300+
" MCP_PLAYWRIGHT_ENABLE=0",
301+
" export MCP_PLAYWRIGHT_ENABLE",
302+
" return 0",
303+
" fi",
304+
"",
305+
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
306+
" local network_mode=\"container:${project_container}\"",
307+
" mkdir -p /var/log",
308+
" \"$browser_bin\" start --project \"$project_container\" --network \"$network_mode\" >> /var/log/docker-git-browser.log 2>&1 || {",
309+
" echo \"[browser] WARNING: Rust browser connection failed; see /var/log/docker-git-browser.log\" >&2",
310+
" MCP_PLAYWRIGHT_ENABLE=0",
311+
" export MCP_PLAYWRIGHT_ENABLE",
312+
" return 0",
313+
" }",
314+
" echo \"[browser] Rust browser connection is ready via $browser_bin on $network_mode\"",
315+
"}"
316+
]
317+
318+
const renderEntrypointRustBrowserConnectionStop = (): ReadonlyArray<string> => [
319+
"docker_git_stop_playwright_browser() {",
320+
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
321+
" return 0",
322+
" fi",
323+
"",
324+
" local browser_bin=\"\"",
325+
" local candidate",
326+
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
327+
" if [[ -x \"$candidate\" ]]; then",
328+
" browser_bin=\"$candidate\"",
329+
" break",
330+
" fi",
331+
" done",
332+
"",
333+
" if [[ -z \"$browser_bin\" ]]; then",
334+
" return 0",
335+
" fi",
336+
"",
337+
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
338+
" \"$browser_bin\" stop --project \"$project_container\" >> /var/log/docker-git-browser.log 2>&1 || true",
339+
"}"
340+
]
341+
281342
export const renderEntrypointRustBrowserConnection = (): string =>
282343
[
283-
"# Unified Rust browser connection (noVNC + CDP) for MCP Playwright + Hermes — per #347.",
284-
"# Defaults are safe no-ops unless MCP Playwright is enabled.",
285-
"docker_git_start_rust_browser_connection() {",
286-
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
287-
" return 0",
288-
" fi",
289-
"",
290-
" local browser_bin=\"\"",
291-
" local candidate",
292-
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
293-
" if [[ -x \"$candidate\" ]]; then",
294-
" browser_bin=\"$candidate\"",
295-
" break",
296-
" fi",
297-
" done",
298-
"",
299-
" if [[ -z \"$browser_bin\" ]]; then",
300-
" echo \"[browser] WARNING: docker-git-browser-connection not found; Playwright MCP browser is unavailable\" >&2",
301-
" MCP_PLAYWRIGHT_ENABLE=0",
302-
" export MCP_PLAYWRIGHT_ENABLE",
303-
" return 0",
304-
" fi",
305-
"",
306-
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
307-
" local network_mode=\"container:${project_container}\"",
308-
" mkdir -p /var/log",
309-
" \"$browser_bin\" start --project \"$project_container\" --network \"$network_mode\" >> /var/log/docker-git-browser.log 2>&1 || {",
310-
" echo \"[browser] WARNING: Rust browser connection failed; see /var/log/docker-git-browser.log\" >&2",
311-
" MCP_PLAYWRIGHT_ENABLE=0",
312-
" export MCP_PLAYWRIGHT_ENABLE",
313-
" return 0",
314-
" }",
315-
" echo \"[browser] Rust browser connection is ready via $browser_bin on $network_mode\"",
316-
"}",
317-
"",
318-
"docker_git_stop_playwright_browser() {",
319-
" if [[ \"${MCP_PLAYWRIGHT_ENABLE:-0}\" != \"1\" ]]; then",
320-
" return 0",
321-
" fi",
322-
"",
323-
" local browser_bin=\"\"",
324-
" local candidate",
325-
" for candidate in /usr/local/bin/docker-git-browser-connection /root/.cargo/bin/docker-git-browser-connection /usr/local/cargo/bin/docker-git-browser-connection $(command -v docker-git-browser-connection 2>/dev/null || true); do",
326-
" if [[ -x \"$candidate\" ]]; then",
327-
" browser_bin=\"$candidate\"",
328-
" break",
329-
" fi",
330-
" done",
331-
"",
332-
" if [[ -z \"$browser_bin\" ]]; then",
333-
" return 0",
334-
" fi",
344+
...renderEntrypointRustBrowserConnectionStart(),
335345
"",
336-
" local project_container=\"${DOCKER_GIT_PROJECT_CONTAINER_NAME:-$(hostname)}\"",
337-
" \"$browser_bin\" stop --project \"$project_container\" >> /var/log/docker-git-browser.log 2>&1 || true",
338-
"}",
346+
...renderEntrypointRustBrowserConnectionStop(),
339347
"",
340348
"docker_git_start_rust_browser_connection"
341349
].join("\n")

0 commit comments

Comments
 (0)