Class: Xeno::DevUiController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- Xeno::DevUiController
- Defined in:
- app/controllers/xeno/dev_ui_controller.rb
Overview
The mounted dev chat UI: chat with the agent, watch the event stream live (over xeno's own SSE endpoint), and approve/deny/answer parked work. Development only.
Instance Method Summary collapse
Instance Method Details
#compact ⇒ Object
41 42 43 44 45 46 47 |
# File 'app/controllers/xeno/dev_ui_controller.rb', line 41 def compact session_record = Session.find(params[:id]) unless session_record.turns.where(kind: "compaction", status: %w[pending running]).exists? session_record.stage_compaction_turn!(reason: "manual").enqueue! end redirect_to dev_session_path(session_record) end |
#create ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'app/controllers/xeno/dev_ui_controller.rb', line 12 def create session_record = Session.start!( message: params.require(:message), channel: "dev", principal: { "user" => "dev-ui" } ) redirect_to dev_session_path(session_record) end |
#index ⇒ Object
8 9 10 |
# File 'app/controllers/xeno/dev_ui_controller.rb', line 8 def index @sessions = Session.order(id: :desc).limit(50) end |
#input ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/controllers/xeno/dev_ui_controller.rb', line 49 def input session_record = Session.find(params[:id]) action = Action.joins(:turn) .where(xeno_turns: { session_id: session_record.id }) .find(params.require(:action_id)) principal = { "user" => "dev-ui" } case params[:decision] when "approve" then Inputs.approve!(action, principal: principal) when "deny" then Inputs.deny!(action, reason: params[:reason], principal: principal) else Inputs.answer!(action, params.require(:answer), principal: principal) end redirect_to dev_session_path(session_record) end |
#message ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'app/controllers/xeno/dev_ui_controller.rb', line 30 def session_record = Session.find(params[:id]) content = params.require(:message) if ActiveModel::Type::Boolean.new.cast(params[:steer]) session_record.steer!(content) else session_record.(content) end redirect_to dev_session_path(session_record) end |
#show ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'app/controllers/xeno/dev_ui_controller.rb', line 21 def show @session = Session.find(params[:id]) @messages = @session.chat..order(:id) @pending_actions = Action.joins(:turn) .where(xeno_turns: { session_id: @session.id }, status: "pending_approval") .order(:id) @events = @session.events.order(:index) end |