Module: ActionAgent::SessionRecordable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/action_agent/session_recordable.rb
Overview
Concern for adding session recording to models that track browser interactions
Include this in models like AgentRun or SandboxSession to enable automatic session recording for playback and handoff.
Usage:
class AgentRun < ApplicationRecord
include SessionRecordable
end
# Start recording
run.start_session_recording!
# Record an action
run.record_browser_action!(type: :click, selector: "#submit", screenshot: png_data)
# Complete recording
run.complete_session_recording!
Instance Method Summary collapse
-
#complete_session_recording! ⇒ Object
Complete the recording.
-
#fail_session_recording!(error_message = nil) ⇒ Object
Fail the recording.
-
#record_browser_action!(type:, selector: nil, value: nil, screenshot: nil, dom_snapshot: nil, metadata: {}) ⇒ Object
Record a browser action.
-
#recording_active? ⇒ Boolean
Check if recording is active.
-
#recording_service ⇒ Object
Get the session recording service.
-
#start_session_recording!(name: nil) ⇒ Object
Start a new session recording.
Instance Method Details
#complete_session_recording! ⇒ Object
Complete the recording
56 57 58 |
# File 'app/models/concerns/action_agent/session_recordable.rb', line 56 def complete_session_recording! session_recording&.complete! end |
#fail_session_recording!(error_message = nil) ⇒ Object
Fail the recording
61 62 63 |
# File 'app/models/concerns/action_agent/session_recordable.rb', line 61 def fail_session_recording!( = nil) session_recording&.fail!() end |
#record_browser_action!(type:, selector: nil, value: nil, screenshot: nil, dom_snapshot: nil, metadata: {}) ⇒ Object
Record a browser action
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/models/concerns/action_agent/session_recordable.rb', line 42 def record_browser_action!(type:, selector: nil, value: nil, screenshot: nil, dom_snapshot: nil, metadata: {}) return unless session_recording&.recording? session_recording.record_action!( action_type: type.to_s, selector: selector, value: value, screenshot: screenshot, dom_snapshot: dom_snapshot, metadata: ) end |
#recording_active? ⇒ Boolean
Check if recording is active
66 67 68 |
# File 'app/models/concerns/action_agent/session_recordable.rb', line 66 def recording_active? session_recording&.recording? end |
#recording_service ⇒ Object
Get the session recording service
71 72 73 74 75 |
# File 'app/models/concerns/action_agent/session_recordable.rb', line 71 def recording_service return nil unless session_recording SessionRecordingService.new(session_recording) end |
#start_session_recording!(name: nil) ⇒ Object
Start a new session recording
31 32 33 34 35 36 37 38 39 |
# File 'app/models/concerns/action_agent/session_recordable.rb', line 31 def start_session_recording!(name: nil) return session_recording if session_recording&.recording? create_session_recording!( name: name || default_recording_name, status: :recording, metadata: { started_at: Time.current.iso8601 } ) end |