Module: Phronomy

Defined in:
lib/phronomy.rb,
lib/phronomy/eval.rb,
lib/phronomy/agent.rb,
lib/phronomy/event.rb,
lib/phronomy/metrics.rb,
lib/phronomy/testing.rb,
lib/phronomy/version.rb,
lib/phronomy/runnable.rb,
lib/phronomy/workflow.rb,
lib/phronomy/tools/mcp.rb,
lib/phronomy/agent/base.rb,
lib/phronomy/diagnostics.rb,
lib/phronomy/engine/task.rb,
lib/phronomy/eval/runner.rb,
lib/phronomy/eval/scorer.rb,
lib/phronomy/filter/base.rb,
lib/phronomy/llm_adapter.rb,
lib/phronomy/persistence.rb,
lib/phronomy/token_usage.rb,
lib/phronomy/tools/agent.rb,
lib/phronomy/agent/runner.rb,
lib/phronomy/eval/dataset.rb,
lib/phronomy/eval/metrics.rb,
lib/phronomy/tracing/base.rb,
lib/phronomy/vector_store.rb,
lib/phronomy/configuration.rb,
lib/phronomy/output_parser.rb,
lib/phronomy/canonical_json.rb,
lib/phronomy/engine/runtime.rb,
lib/phronomy/eval/eval_case.rb,
lib/phronomy/agent/immutable.rb,
lib/phronomy/eval/comparison.rb,
lib/phronomy/workflow_runner.rb,
lib/phronomy/agent/agent_root.rb,
lib/phronomy/agent_busy_error.rb,
lib/phronomy/eval/eval_result.rb,
lib/phronomy/eval/scorer/base.rb,
lib/phronomy/knowledge_source.rb,
lib/phronomy/llm_adapter/base.rb,
lib/phronomy/state_store/base.rb,
lib/phronomy/workflow_context.rb,
lib/phronomy/engine/event_loop.rb,
lib/phronomy/engine/task_group.rb,
lib/phronomy/vector_store/base.rb,
lib/phronomy/agent/context_plan.rb,
lib/phronomy/agent/shared_state.rb,
lib/phronomy/content_store/base.rb,
lib/phronomy/engine/fsm_session.rb,
lib/phronomy/generator_verifier.rb,
lib/phronomy/invocation_context.rb,
lib/phronomy/output_parser/base.rb,
lib/phronomy/testing/fake_clock.rb,
lib/phronomy/agent/tool_executor.rb,
lib/phronomy/engine/task/backend.rb,
lib/phronomy/multi_agent/handoff.rb,
lib/phronomy/tools/vector_search.rb,
lib/phronomy/tracing/null_tracer.rb,
lib/phronomy/agent/context_policy.rb,
lib/phronomy/agent/journal_record.rb,
lib/phronomy/llm_adapter/ruby_llm.rb,
lib/phronomy/agent/agent_execution.rb,
lib/phronomy/agent/async_event_api.rb,
lib/phronomy/agent/context_request.rb,
lib/phronomy/agent/llm_call_record.rb,
lib/phronomy/agent/llm_input_patch.rb,
lib/phronomy/agent/tool_invocation.rb,
lib/phronomy/eval/scorer/llm_judge.rb,
lib/phronomy/persistence/in_memory.rb,
lib/phronomy/state_store/in_memory.rb,
lib/phronomy/stream_callback_error.rb,
lib/phronomy/vector_store/pgvector.rb,
lib/phronomy/agent/agent_invocation.rb,
lib/phronomy/agent/context_importer.rb,
lib/phronomy/testing/fake_scheduler.rb,
lib/phronomy/vector_store/in_memory.rb,
lib/phronomy/agent/context_assembler.rb,
lib/phronomy/agent/context_candidate.rb,
lib/phronomy/eval/scorer/exact_match.rb,
lib/phronomy/tracing/langfuse_tracer.rb,
lib/phronomy/agent/journal_projection.rb,
lib/phronomy/agent/llm_input_manifest.rb,
lib/phronomy/engine/runtime/scheduler.rb,
lib/phronomy/multi_agent/orchestrator.rb,
lib/phronomy/vector_store/loader/base.rb,
lib/phronomy/agent/activation_registry.rb,
lib/phronomy/agent/concerns/filterable.rb,
lib/phronomy/agent/fsm_runtime_adapter.rb,
lib/phronomy/agent/tool_definition_set.rb,
lib/phronomy/engine/task/fiber_backend.rb,
lib/phronomy/output_parser/json_parser.rb,
lib/phronomy/testing/scheduler_helpers.rb,
lib/phronomy/vector_store/redis_search.rb,
lib/phronomy/agent/derived_content_spec.rb,
lib/phronomy/agent/llm_operation_result.rb,
lib/phronomy/engine/runtime/timer_queue.rb,
lib/phronomy/engine/task/mapped_backend.rb,
lib/phronomy/engine/task/thread_backend.rb,
lib/phronomy/vector_store/async_backend.rb,
lib/phronomy/vector_store/splitter/base.rb,
lib/phronomy/agent/execution_coordinator.rb,
lib/phronomy/agent/phase_machine_builder.rb,
lib/phronomy/agent/provider_call_outcome.rb,
lib/phronomy/agent/ruby_llm_materializer.rb,
lib/phronomy/agent/token_budget_resolver.rb,
lib/phronomy/agent/tool_approval_request.rb,
lib/phronomy/agent/tool_call_intercepted.rb,
lib/phronomy/engine/concurrency/deadline.rb,
lib/phronomy/eval/scorer/includes_scorer.rb,
lib/phronomy/agent/context/knowledge/base.rb,
lib/phronomy/agent/context_plan_validator.rb,
lib/phronomy/agent/context_selection_unit.rb,
lib/phronomy/engine/runtime/task_registry.rb,
lib/phronomy/engine/runtime/timer_service.rb,
lib/phronomy/engine/task/deferred_backend.rb,
lib/phronomy/llm_context_window/assembler.rb,
lib/phronomy/multi_agent/team_coordinator.rb,
lib/phronomy/vector_store/embeddings/base.rb,
lib/phronomy/agent/context/capability/base.rb,
lib/phronomy/agent/context_policy_registry.rb,
lib/phronomy/agent/llm_input_build_context.rb,
lib/phronomy/context_budget_exceeded_error.rb,
lib/phronomy/engine/runtime/fake_scheduler.rb,
lib/phronomy/engine/task/immediate_backend.rb,
lib/phronomy/tracing/open_telemetry_tracer.rb,
lib/phronomy/agent/context_policies/default.rb,
lib/phronomy/engine/concurrency/async_queue.rb,
lib/phronomy/engine/runtime/runtime_metrics.rb,
lib/phronomy/engine/runtime/shutdown_result.rb,
lib/phronomy/filter/prompt_injection_filter.rb,
lib/phronomy/multi_agent/parallel_tool_chat.rb,
lib/phronomy/vector_store/loader/csv_loader.rb,
lib/phronomy/workflow/phase_machine_builder.rb,
lib/phronomy/agent/concerns/before_llm_input.rb,
lib/phronomy/agent/context_policy_descriptor.rb,
lib/phronomy/engine/runtime/thread_scheduler.rb,
lib/phronomy/llm_context_window/token_budget.rb,
lib/phronomy/output_parser/structured_parser.rb,
lib/phronomy/agent/agent_execution_activation.rb,
lib/phronomy/agent/concerns/error_translation.rb,
lib/phronomy/agent/context_candidate_resolver.rb,
lib/phronomy/engine/concurrency/pool_registry.rb,
lib/phronomy/invalid_async_entry_action_error.rb,
lib/phronomy/agent/approval_evaluation_request.rb,
lib/phronomy/llm_context_window/token_estimator.rb,
lib/phronomy/invalid_async_workflow_action_error.rb,
lib/phronomy/vector_store/loader/markdown_loader.rb,
lib/phronomy/execution_rehydration_required_error.rb,
lib/phronomy/agent/tool_invocation_session_builder.rb,
lib/phronomy/engine/concurrency/cancellation_scope.rb,
lib/phronomy/engine/concurrency/cancellation_token.rb,
lib/phronomy/invalid_async_transition_action_error.rb,
lib/phronomy/vector_store/loader/plain_text_loader.rb,
lib/phronomy/agent/agent_invocation_session_builder.rb,
lib/phronomy/engine/runtime/deterministic_scheduler.rb,
lib/phronomy/engine/runtime/scheduler_timer_adapter.rb,
lib/phronomy/agent/context/knowledge/entity_knowledge.rb,
lib/phronomy/agent/context/knowledge/static_knowledge.rb,
lib/phronomy/engine/concurrency/blocking_adapter_pool.rb,
lib/phronomy/llm_context_window/context_version_cache.rb,
lib/phronomy/vector_store/splitter/recursive_splitter.rb,
lib/phronomy/agent/context/instruction/prompt_template.rb,
lib/phronomy/vector_store/splitter/fixed_size_splitter.rb,
lib/phronomy/invalid_context_budget_configuration_error.rb,
lib/phronomy/vector_store/embeddings/ruby_llm_embeddings.rb,
lib/phronomy/agent/context_parts/budget/token_budget_packer.rb,
lib/phronomy/agent/context_parts/selectors/recent_first_selector.rb,
lib/phronomy/agent/context_parts/validators/final_budget_validator.rb,
lib/phronomy/agent/context_parts/requirements/required_context_resolver.rb,
lib/phronomy/agent/context_parts/unit_builders/dependency_aware_unit_builder.rb

Defined Under Namespace

Modules: Agent, Concurrency, ContentStore, Diagnostics, Eval, Filter, KnowledgeSource, LLMAdapter, LlmContextWindow, Metrics, MultiAgent, OutputParser, Runnable, StateStore, Testing, Tools, Tracing, VectorStore, WorkflowContext Classes: ActionTimeoutError, AgentBusyError, AuthenticationError, BackpressureError, CancellationError, CanonicalJSON, Configuration, ConfigurationError, ContextBudgetExceededError, ContextLengthError, Error, Event, EventLoop, ExecutionRehydrationRequiredError, FSMSession, FilterBlockError, GeneratorVerifier, HandoffError, InvalidAsyncEntryActionError, InvalidAsyncTransitionActionError, InvalidAsyncWorkflowActionError, InvalidContextBudgetConfigurationError, InvocationContext, LowConfidenceError, ParseError, Persistence, PoolShutdownError, RateLimitError, RecursionLimitError, Runtime, RuntimeShutdownError, RuntimeShutdownReentrancyError, SchedulerReentrancyError, ScopeTimeoutError, StreamCallbackError, Task, TaskGroup, TimeoutError, TokenUsage, ToolError, TransportError, Workflow, WorkflowContextOwnershipError, WorkflowRunner

Constant Summary collapse

VERSION =
"0.16.0"

Class Method Summary collapse

Class Method Details

.configurationObject



153
154
155
# File 'lib/phronomy.rb', line 153

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



157
158
159
# File 'lib/phronomy.rb', line 157

def configure
  yield configuration
end

.reset_configuration!Object

Resets the global Phronomy configuration to defaults.

Intended for test suites only. Calling this in a production process will drop all runtime configuration (tracer, model, tokenizer, etc.) globally and immediately affect all subsequent agent and workflow calls.

Parallel test suites warning: When tests run in parallel (e.g. parallel_tests or parallel_rspec), reset_configuration! in one worker will clear configuration shared with other workers in the same process. Prefer process-isolation strategies (forked workers) over thread-based parallelism when using this method.

Typical usage in a sequential test suite:

after { Phronomy.reset_configuration! }


175
176
177
# File 'lib/phronomy.rb', line 175

def reset_configuration!
  @configuration = Configuration.new
end

.reset_runtime!(timeout: configuration.event_loop_stop_grace_seconds) ⇒ Phronomy::Runtime::ShutdownResult

Shuts down and clears the process-wide default Runtime, then resets global configuration. Intended for test suites only.

Runtime execution failure and resource cleanup are separate. The singleton is cleared when cleanup completed, even if execution failed.

Parameters:

  • timeout (Numeric) (defaults to: configuration.event_loop_stop_grace_seconds)

    maximum graceful wait for Runtime tasks and EventLoop shutdown

Returns:



208
209
210
211
212
213
214
215
216
217
218
# File 'lib/phronomy.rb', line 208

def reset_runtime!(timeout: configuration.event_loop_stop_grace_seconds)
  previous_grace = @configuration&.event_loop_stop_grace_seconds
  result = Runtime.reset_default!(timeout: timeout)

  new_configuration = Configuration.new
  if previous_grace
    new_configuration.event_loop_stop_grace_seconds = previous_grace
  end
  @configuration = new_configuration
  result
end

.with_configuration {|config| ... } ⇒ Object

Yields the current Configuration object, then restores the original configuration on exit (even if the block raises).

Intended for test helpers that need to temporarily override settings without permanently mutating the global configuration.

Examples:

Phronomy.with_configuration do |c|
  c.logger = Logger.new($stdout)
end

Yields:



191
192
193
194
195
196
# File 'lib/phronomy.rb', line 191

def with_configuration
  original = @configuration&.dup
  yield configuration
ensure
  @configuration = original
end