Module: SolidLoop
- Defined in:
- lib/solid_loop.rb,
lib/solid_loop/mcp.rb,
lib/solid_loop/engine.rb,
lib/solid_loop/reaper.rb,
lib/solid_loop/version.rb,
lib/solid_loop/pipeline.rb,
lib/solid_loop/mcp/result.rb,
lib/solid_loop/mcp/server.rb,
lib/solid_loop/mcp_client.rb,
app/models/solid_loop/base.rb,
app/models/solid_loop/loop.rb,
lib/solid_loop/llm_metrics.rb,
lib/solid_loop/mcp/toolset.rb,
app/models/solid_loop/event.rb,
lib/solid_loop/configuration.rb,
lib/solid_loop/lease_renewer.rb,
lib/solid_loop/mcp/principal.rb,
lib/solid_loop/mcp/transport.rb,
app/models/solid_loop/message.rb,
app/jobs/solid_loop/reaper_job.rb,
app/models/solid_loop/mcp_tool.rb,
lib/solid_loop/lease_heartbeat.rb,
app/models/solid_loop/tool_call.rb,
lib/solid_loop/mcp/call_context.rb,
lib/solid_loop/pipeline/builder.rb,
lib/solid_loop/pipeline/context.rb,
app/models/solid_loop/mcp_session.rb,
lib/solid_loop/mcp/client_factory.rb,
lib/solid_loop/mcp/http_transport.rb,
lib/solid_loop/mcp/stdio_transport.rb,
app/jobs/solid_loop/application_job.rb,
lib/solid_loop/pipeline/tool_context.rb,
app/jobs/solid_loop/llm_completion_job.rb,
app/jobs/solid_loop/tool_execution_job.rb,
app/queries/solid_loop/admin/base_query.rb,
app/services/solid_loop/adapters/native.rb,
app/services/solid_loop/dialects/gemini.rb,
app/models/solid_loop/application_record.rb,
app/queries/solid_loop/admin/loops_query.rb,
app/services/solid_loop/dialects/open_ai.rb,
app/services/solid_loop/llm_usage_parser.rb,
app/helpers/solid_loop/application_helper.rb,
app/jobs/solid_loop/observe_broadcast_job.rb,
app/models/solid_loop/mcp_inbound_session.rb,
app/queries/solid_loop/admin/events_query.rb,
app/services/solid_loop/dialects/anthropic.rb,
app/controllers/solid_loop/loops_controller.rb,
app/queries/solid_loop/admin/messages_query.rb,
app/controllers/solid_loop/events_controller.rb,
app/queries/solid_loop/admin/mcp_tools_query.rb,
app/queries/solid_loop/admin/tool_calls_query.rb,
app/services/solid_loop/sse_stream_aggregator.rb,
app/controllers/solid_loop/messages_controller.rb,
app/services/solid_loop/llm_usage_parser/llama.rb,
app/controllers/solid_loop/dashboard_controller.rb,
app/controllers/solid_loop/mcp_tools_controller.rb,
app/queries/solid_loop/admin/mcp_sessions_query.rb,
app/services/solid_loop/llm_usage_parser/gemini.rb,
app/services/solid_loop/llm_usage_parser/openai.rb,
app/services/solid_loop/mcp_session_initializer.rb,
app/services/solid_loop/tool_failure_reconciler.rb,
app/controllers/solid_loop/tool_calls_controller.rb,
app/controllers/solid_loop/application_controller.rb,
app/services/solid_loop/dialects/reasoning_packer.rb,
app/services/solid_loop/middlewares/event_logging.rb,
app/controllers/solid_loop/mcp_sessions_controller.rb,
app/services/solid_loop/llm_usage_parser/anthropic.rb,
app/services/solid_loop/mcp_tool_execution_service.rb,
app/services/solid_loop/middlewares/error_handling.rb,
app/services/solid_loop/middlewares/network_calling.rb,
app/services/solid_loop/middlewares/message_building.rb,
app/services/solid_loop/middlewares/response_parsing.rb,
app/services/solid_loop/tool_middlewares/event_logging.rb,
app/queries/solid_loop/admin/mcp_inbound_sessions_query.rb,
app/services/solid_loop/tool_middlewares/error_handling.rb,
app/services/solid_loop/tool_middlewares/tool_execution.rb,
app/services/solid_loop/middlewares/agent_initialization.rb,
app/services/solid_loop/middlewares/tool_call_xml_parser.rb,
app/controllers/solid_loop/mcp_inbound_sessions_controller.rb,
app/services/solid_loop/tool_middlewares/response_creation.rb,
app/services/solid_loop/tool_middlewares/agent_initialization.rb
Defined Under Namespace
Modules: Adapters, Admin, ApplicationHelper, Dialects, Mcp, Middlewares, ToolFailureReconciler, ToolMiddlewares Classes: ApplicationController, ApplicationJob, ApplicationRecord, Base, CancellationError, Configuration, DashboardController, Engine, EnqueueError, Event, EventsController, LeaseHeartbeat, LeaseRenewer, LimitExceededError, LlmCompletionJob, LlmMetrics, LlmUsageParser, Loop, LoopsController, LostLease, McpClient, McpError, McpInboundSession, McpInboundSessionsController, McpSession, McpSessionInitializer, McpSessionInvalidError, McpSessionsController, McpTool, McpToolError, McpToolExecutionService, McpToolsController, Message, MessagesController, ObserveBroadcastJob, Pipeline, Reaper, ReaperJob, SseStreamAggregator, SteeringError, ToolCall, ToolCallsController, ToolExecutionJob
Constant Summary collapse
- VERSION =
"0.0.4"
Class Attribute Summary collapse
-
.last_reaped_at ⇒ Object
Timestamp of the last successful
reap!— a liveness health signal for hosts to alert on ("has the reaper run recently?"). -
.subject_resolver ⇒ Object
Optional host-app hook for the admin dashboard to deep-link a loop's polymorphic subject (which the engine can't route to on its own).
Class Method Summary collapse
-
.config ⇒ Object
Durable-lease + reaper configuration (see docs/decisions/durable_attempt_lease.md).
- .configure {|_self| ... } ⇒ Object
-
.enqueue!(job_class, *args) ⇒ Object
Enqueue a successor job, raising unless ActiveJob confirms it was actually enqueued.
- .llm_middlewares ⇒ Object
-
.reap!(now: Time.current) ⇒ Object
Reap dead/lost LLM turns and repair lost queue rows.
- .tool_middlewares ⇒ Object
Class Attribute Details
.last_reaped_at ⇒ Object
Timestamp of the last successful reap! — a liveness health signal for
hosts to alert on ("has the reaper run recently?"). nil until the first
reap completes. Process-local (each worker tracks its own last run).
67 68 69 |
# File 'lib/solid_loop.rb', line 67 def last_reaped_at @last_reaped_at end |
.subject_resolver ⇒ Object
Optional host-app hook for the admin dashboard to deep-link a loop's polymorphic subject (which the engine can't route to on its own). A callable taking the loop and returning a URL string, or a Hash { url:, label: }. Left nil by default — the admin degrades to plain text.
49 50 51 |
# File 'lib/solid_loop.rb', line 49 def subject_resolver @subject_resolver end |
Class Method Details
.config ⇒ Object
Durable-lease + reaper configuration (see docs/decisions/durable_attempt_lease.md).
52 53 54 |
# File 'lib/solid_loop.rb', line 52 def config @config ||= Configuration.new end |
.configure {|_self| ... } ⇒ Object
90 91 92 |
# File 'lib/solid_loop.rb', line 90 def configure yield self end |
.enqueue!(job_class, *args) ⇒ Object
Enqueue a successor job, raising unless ActiveJob confirms it was actually
enqueued. perform_later returns false when an enqueue callback aborts;
left unchecked, callers would commit state (a queued loop, a persisted
tool-call row) with no job to advance it. Returns the enqueued job.
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/solid_loop.rb', line 33 def enqueue!(job_class, *args) job = job_class.perform_later(*args) unless job.is_a?(ActiveJob::Base) && job.successfully_enqueued? raise EnqueueError, "Failed to enqueue #{job_class.name}(#{args.map(&:inspect).join(', ')}): " \ "perform_later returned #{job.inspect} (enqueue aborted?)" end job end |
.llm_middlewares ⇒ Object
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/solid_loop.rb', line 69 def llm_middlewares @llm_middlewares ||= Pipeline::Builder.new([ Middlewares::ErrorHandling, Middlewares::AgentInitialization, Middlewares::MessageBuilding, Middlewares::EventLogging, Middlewares::NetworkCalling, Middlewares::ResponseParsing ]) end |
.reap!(now: Time.current) ⇒ Object
Reap dead/lost LLM turns and repair lost queue rows. Idempotent; safe to run concurrently (each case re-checks its condition under a row lock). Returns the SolidLoop::Reaper::Result. Host installs the recurrence via SolidLoop::ReaperJob — the gem does NOT own a scheduler.
60 61 62 |
# File 'lib/solid_loop.rb', line 60 def reap!(now: Time.current) Reaper.new(now: now).call end |
.tool_middlewares ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/solid_loop.rb', line 80 def tool_middlewares @tool_middlewares ||= Pipeline::Builder.new([ ToolMiddlewares::ErrorHandling, ToolMiddlewares::AgentInitialization, ToolMiddlewares::EventLogging, ToolMiddlewares::ToolExecution, ToolMiddlewares::ResponseCreation ]) end |