Class: Rubino::API::Operations::Mode::UpdateOperation
- Inherits:
-
Object
- Object
- Rubino::API::Operations::Mode::UpdateOperation
- Defined in:
- lib/rubino/api/operations/mode/update_operation.rb
Overview
PUT /v1/mode Body: { “mode”: “default” | “plan” | “yolo” }
Switches the active mode and emits the same ‘mode_changed` UI event the CLI fires on `/mode plan`, so any in-flight SSE stream notices.
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.call(request) ⇒ Object
15 16 17 |
# File 'lib/rubino/api/operations/mode/update_operation.rb', line 15 def self.call(request) new.call(request) end |
Instance Method Details
#call(request) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rubino/api/operations/mode/update_operation.rb', line 19 def call(request) attrs = request.validate!(Schemas::UpdateMode) previous = Rubino::Modes.current begin Rubino::Modes.set(attrs[:mode]) rescue ArgumentError => e # Modes.set already rejects unknowns; surface as a 422 the same # way validation errors do. The dry-schema enum below normally # catches this first; this is just defence in depth for an # alternate caller. raise ValidationError.new(e.) end current = Rubino::Modes.current Rubino.ui&.mode_changed(current, previous: previous) [200, { mode: current, previous: previous, description: Rubino::Modes.description(current) }] end |