Skip to content

surf js never returns expression values #51

@SeMmyT

Description

@SeMmyT

Problem

surf js "expression" always prints "undefined" regardless of the expression. Even simple literals like surf js "1 + 1" return "undefined".

Root cause: The EXECUTE_JAVASCRIPT handler wraps user code in (async () => { 'use strict'; <code> })(). This async IIFE never returns a value because there's no return statement for the last expression.

Current workaround

surf js 'console.log("RESULT:" + document.cookie)'
surf console | grep RESULT

Proposed fix

Auto-detect single expressions and add return to make them evaluate like a REPL. Multi-statement code continues to work as-is.

# Should work:
$ surf js "1 + 1"
2

$ surf js "document.title"
"My Page Title"

$ surf js "document.querySelectorAll('button').length"
3

Severity

High — forces workarounds on every JS evaluation in AI agent workflows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions