Module: BrainzLab::Vision
- Defined in:
- lib/brainzlab/vision.rb,
lib/brainzlab/vision/client.rb,
lib/brainzlab/vision/provisioner.rb
Defined Under Namespace
Classes: Client, Provisioner
Class Method Summary collapse
-
.ai_action(session_id:, instruction:, model: nil) ⇒ Hash
Perform an AI-powered action in a session.
- .client ⇒ Object
-
.close_session(session_id:) ⇒ Hash
Close a browser session.
-
.create_session(url: nil, viewport: nil, browser_provider: nil) ⇒ Hash
Create a browser session.
-
.ensure_provisioned! ⇒ Object
Ensure project is auto-provisioned.
-
.execute_task(instruction:, start_url:, model: nil, browser_provider: nil, max_steps: 50, timeout: 300) ⇒ Hash
Execute an autonomous AI task.
-
.extract(session_id:, schema:, instruction: nil) ⇒ Hash
Extract structured data from the page.
-
.perform(session_id:, action:, selector: nil, value: nil) ⇒ Hash
Perform a direct browser action.
- .provisioner ⇒ Object
- .reset! ⇒ Object
-
.screenshot(session_id:, full_page: true) ⇒ Hash
Take a screenshot.
Class Method Details
.ai_action(session_id:, instruction:, model: nil) ⇒ Hash
Perform an AI-powered action in a session
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/brainzlab/vision.rb', line 58 def ai_action(session_id:, instruction:, model: nil) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled return { error: 'Vision credentials not configured' } unless config.vision_valid? client.ai_action( session_id: session_id, instruction: instruction, model: model ) end |
.client ⇒ Object
144 145 146 |
# File 'lib/brainzlab/vision.rb', line 144 def client @client ||= Client.new(BrainzLab.configuration) end |
.close_session(session_id:) ⇒ Hash
Close a browser session
109 110 111 112 113 114 115 |
# File 'lib/brainzlab/vision.rb', line 109 def close_session(session_id:) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled return { error: 'Vision credentials not configured' } unless config.vision_valid? client.close_session(session_id: session_id) end |
.create_session(url: nil, viewport: nil, browser_provider: nil) ⇒ Hash
Create a browser session
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/brainzlab/vision.rb', line 39 def create_session(url: nil, viewport: nil, browser_provider: nil) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled ensure_provisioned! return { error: 'Vision credentials not configured' } unless config.vision_valid? client.create_session( url: url, viewport: , browser_provider: browser_provider ) end |
.ensure_provisioned! ⇒ Object
Ensure project is auto-provisioned
130 131 132 133 134 135 136 137 138 |
# File 'lib/brainzlab/vision.rb', line 130 def ensure_provisioned! config = BrainzLab.configuration puts "[BrainzLab::Debug] Vision.ensure_provisioned! called, @provisioned=#{@provisioned}" if config.debug return if @provisioned @provisioned = true provisioner.ensure_project! end |
.execute_task(instruction:, start_url:, model: nil, browser_provider: nil, max_steps: 50, timeout: 300) ⇒ Hash
Execute an autonomous AI task
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/brainzlab/vision.rb', line 17 def execute_task(instruction:, start_url:, model: nil, browser_provider: nil, max_steps: 50, timeout: 300) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled ensure_provisioned! return { error: 'Vision credentials not configured' } unless config.vision_valid? client.execute_task( instruction: instruction, start_url: start_url, model: model, browser_provider: browser_provider, max_steps: max_steps, timeout: timeout ) end |
.extract(session_id:, schema:, instruction: nil) ⇒ Hash
Extract structured data from the page
94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/brainzlab/vision.rb', line 94 def extract(session_id:, schema:, instruction: nil) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled return { error: 'Vision credentials not configured' } unless config.vision_valid? client.extract( session_id: session_id, schema: schema, instruction: instruction ) end |
.perform(session_id:, action:, selector: nil, value: nil) ⇒ Hash
Perform a direct browser action
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/brainzlab/vision.rb', line 76 def perform(session_id:, action:, selector: nil, value: nil) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled return { error: 'Vision credentials not configured' } unless config.vision_valid? client.perform( session_id: session_id, action: action, selector: selector, value: value ) end |
.provisioner ⇒ Object
140 141 142 |
# File 'lib/brainzlab/vision.rb', line 140 def provisioner @provisioner ||= Provisioner.new(BrainzLab.configuration) end |
.reset! ⇒ Object
148 149 150 151 152 |
# File 'lib/brainzlab/vision.rb', line 148 def reset! @client = nil @provisioner = nil @provisioned = false end |
.screenshot(session_id:, full_page: true) ⇒ Hash
Take a screenshot
121 122 123 124 125 126 127 |
# File 'lib/brainzlab/vision.rb', line 121 def screenshot(session_id:, full_page: true) config = BrainzLab.configuration return { error: 'Vision is not enabled' } unless config.vision_enabled return { error: 'Vision credentials not configured' } unless config.vision_valid? client.screenshot(session_id: session_id, full_page: full_page) end |