Class: Ask::Tools::Code

Inherits:
Ask::Tool
  • Object
show all
Defined in:
lib/ask/tools/shell/code.rb

Overview

Write and execute Ruby code in a subprocess. Runs via Ask::Sandbox.provider (Local by default, configurable for stronger isolation via Docker, Daytona, or Cloudflare).

Instance Method Summary collapse

Instance Method Details

#execute(code:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ask/tools/shell/code.rb', line 17

def execute(code:)
  result = Ask::Sandbox.provider.call(
    ["ruby", "-e", code],
    timeout: 30
  )

  if result.timed_out
    return Ask::Result.error(
      message: "Code execution timed out",
      metadata: { stdout: result.stdout, stderr: result.stderr }
    )
  end

  Ask::Result.ok(data: {
    stdout: result.stdout,
    stderr: result.stderr,
    exit_code: result.exit_code
  })
end