Module: Relay::Routes::Websocket::Interrupt

Included in:
Relay::Routes::Websocket
Defined in:
app/routes/websocket/interrupt.rb

Instance Method Summary collapse

Instance Method Details

#interrupt!(conn, ctx) ⇒ Object



9
10
11
12
13
# File 'app/routes/websocket/interrupt.rb', line 9

def interrupt!(conn, ctx)
  return unless request_in_flight?
  ctx.interrupt!
  write(conn, fragment(:status, status_bar(status: "Cancelling...", ctx:)))
end

#interrupt?(payload) ⇒ Boolean

Returns:

  • (Boolean)


5
6
7
# File 'app/routes/websocket/interrupt.rb', line 5

def interrupt?(payload)
  payload["type"] == "interrupt"
end

#on_interrupt(conn, ctx) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'app/routes/websocket/interrupt.rb', line 15

def on_interrupt(conn, ctx)
  message = vars[:messages].reverse_each.find { _1[:role] == :assistant }
  if message && message[:content].to_s.empty?
    message[:content] = "Request cancelled."
    write(conn, fragment(:replace_last_message, message:))
  end
  write(conn, fragment(:status, status_bar(status: "Request cancelled", ctx:)))
  write(conn, fragment(:input))
end