module FlowEngine
def self.constantize(name)
-
(Class, Module)-
Parameters:
-
name(String) -- e.g. "FlowEngine::LLM::Adapters::AnthropicAdapter"
def self.constantize(name) name.split("::").inject(Object) { |mod, const| mod.const_get(const) } end
def self.define(&)
-
(Errors::DefinitionError)- if no start step or no steps are defined
Returns:
-
(Definition)- frozen flow definition with start step and nodes
Other tags:
- Yield: - context of {DSL::FlowBuilder} (start, step, and rule helpers)
def self.define(&) builder = DSL::FlowBuilder.new builder.instance_eval(&) builder.build end
def self.load_dsl(text)
-
(Errors::DefinitionError)- on syntax or evaluation errors
Returns:
-
(Definition)- the definition produced by evaluating the DSL
Parameters:
-
text(String) -- Ruby source containing FlowEngine.define { ... }
def self.load_dsl(text) # rubocop:disable Security/Eval eval(text, TOPLEVEL_BINDING.dup, "(dsl)", 1) # rubocop:enable Security/Eval rescue SyntaxError => e raise Errors::DefinitionError, "DSL syntax error: #{e.message}" rescue StandardError => e raise Errors::DefinitionError, "DSL evaluation error: #{e.message}" end