Class: Rubino::API::Operations::Runs::CreateOperation
- Inherits:
-
Object
- Object
- Rubino::API::Operations::Runs::CreateOperation
- Defined in:
- lib/rubino/api/operations/runs/create_operation.rb
Overview
POST /v1/sessions/:id/runs Persists a new run for the session and hands it to the executor. The run is reported as “running” immediately; clients tail /v1/runs/:id/events for state transitions.
Class Method Summary collapse
Instance Method Summary collapse
- #call(request) ⇒ Object
-
#initialize(session_repository: nil, run_repository: nil, executor: nil) ⇒ CreateOperation
constructor
Accepts alternate collaborators (session repo, run repo, executor) for tests.
Constructor Details
#initialize(session_repository: nil, run_repository: nil, executor: nil) ⇒ CreateOperation
Accepts alternate collaborators (session repo, run repo, executor) for tests.
21 22 23 24 25 |
# File 'lib/rubino/api/operations/runs/create_operation.rb', line 21 def initialize(session_repository: nil, run_repository: nil, executor: nil) @session_repo = session_repository || ::Rubino::Session::Repository.new @run_repo = run_repository || ::Rubino::Run::Repository.new @executor = executor || ::Rubino::Run::Executor.new end |
Class Method Details
.call(request) ⇒ Object
16 17 18 |
# File 'lib/rubino/api/operations/runs/create_operation.rb', line 16 def self.call(request) new.call(request) end |
Instance Method Details
#call(request) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rubino/api/operations/runs/create_operation.rb', line 27 def call(request) session_id = request.params.fetch("id") raise NotFoundError.new("session", session_id) unless @session_repo.find(session_id) attrs = request.validate!(Schemas::CreateRun) (attrs) run = @run_repo.create( session_id: session_id, input_text: attrs[:input], attachments: attrs[:attachments] || [], skills: attrs[:skills] || [], model: attrs[:model], provider: attrs[:provider] ) @executor.start(run) [201, serialize(run)] end |