From 89962f27a75183947fc44cd051a1061ce157221d Mon Sep 17 00:00:00 2001 From: icebaker Date: Sat, 18 Nov 2023 20:08:34 -0300 Subject: adding safety sandbox --- controllers/interfaces/tools.rb | 7 ++++--- controllers/session.rb | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'controllers') diff --git a/controllers/interfaces/tools.rb b/controllers/interfaces/tools.rb index 5105da1..1136600 100644 --- a/controllers/interfaces/tools.rb +++ b/controllers/interfaces/tools.rb @@ -3,13 +3,14 @@ require 'rainbow' require_relative '../../logic/cartridge/tools' +require_relative '../../logic/cartridge/safety' require_relative '../../components/embedding' module NanoBot module Controllers module Interfaces module Tool - def self.adapt(feedback, adapter) + def self.adapt(feedback, adapter, cartridge) call = { parameters: %w[id name parameters parameters-as-json output], values: [ @@ -17,7 +18,7 @@ module NanoBot feedback[:parameters].to_json, feedback[:output] ], - safety: false + safety: { sandboxed: Logic::Cartridge::Safety.sandboxed?(cartridge) } } raise StandardError, 'conflicting adapters' if %i[fennel lua clojure].count { |key| !adapter[key].nil? } > 1 @@ -49,7 +50,7 @@ module NanoBot adapter = Tool.adapter(cartridge, mode, feedback) if %i[fennel lua clojure].any? { |key| !adapter[key].nil? } - message = adapt(feedback, adapter) + message = adapt(feedback, adapter, cartridge) else message = "(#{feedback[:name]} #{feedback[:parameters].to_json})" diff --git a/controllers/session.rb b/controllers/session.rb index 10d0194..546a891 100644 --- a/controllers/session.rb +++ b/controllers/session.rb @@ -72,7 +72,7 @@ module NanoBot mode: mode.to_s, input: message, message: Components::Adapter.apply( - :input, Logic::Cartridge::Interaction.input(@cartridge, mode.to_sym, message) + Logic::Cartridge::Interaction.input(@cartridge, mode.to_sym, message), @cartridge ) } @@ -117,7 +117,7 @@ module NanoBot needs_another_round = false - @provider.evaluate(input) do |feedback| + @provider.evaluate(input, @cartridge) do |feedback| updated_at = Time.now needs_another_round = true if feedback[:needs_another_round] @@ -137,7 +137,7 @@ module NanoBot output = Logic::Cartridge::Interaction.output( @cartridge, mode.to_sym, feedback[:interaction], streaming, feedback[:finished] ) - output[:message] = Components::Adapter.apply(:output, output[:message]) + output[:message] = Components::Adapter.apply(output[:message], @cartridge) event[:output] = (output[:message]).to_s end end -- cgit v1.2.3