Module: Ask::Rails::Harness
- Defined in:
- lib/ask/rails/harness.rb,
lib/ask/rails/harness/auth.rb,
lib/ask/rails/harness/tool.rb,
lib/ask/rails/harness/engine.rb,
lib/ask/rails/harness/railtie.rb,
lib/ask/rails/harness/version.rb,
lib/ask/rails/harness/audit_log.rb,
lib/ask/rails/harness/persistence.rb,
lib/ask/rails/harness/configuration.rb,
app/models/ask/rails/harness/session.rb,
lib/ask/rails/harness/tools/read_log.rb,
lib/ask/rails/harness/tools/read_file.rb,
lib/ask/rails/harness/tools/read_model.rb,
lib/ask/rails/harness/service_discovery.rb,
lib/ask/rails/harness/tools/read_routes.rb,
lib/ask/rails/harness/tools/run_command.rb,
lib/ask/rails/harness/tools/schema_graph.rb,
lib/ask/rails/harness/tools/query_database.rb,
lib/ask/rails/harness/tools/route_inspector.rb,
lib/ask/rails/harness/tools/search_codebase.rb,
lib/ask/rails/harness/environment_permissions.rb,
app/controllers/ask/rails/harness/chat_controller.rb,
lib/generators/ask/rails/harness/install/install_generator.rb
Defined Under Namespace
Modules: AuditLog, Auth, Generators, ServiceDiscovery, Tools Classes: ChatController, Configuration, Engine, EnvironmentPermissions, Persistence, Railtie, Session, Tool
Constant Summary collapse
- CORE_RAILS_TOOLS =
Define after all tool files are loaded so the constants resolve
[ Ask::Rails::Harness::Tools::ReadFile, Ask::Rails::Harness::Tools::RunCommand, Ask::Rails::Harness::Tools::SearchCodebase, Ask::Rails::Harness::Tools::ReadRoutes, Ask::Rails::Harness::Tools::QueryDatabase, Ask::Rails::Harness::Tools::ReadModel, Ask::Rails::Harness::Tools::ReadLog, Ask::Rails::Harness::Tools::SchemaGraph, Ask::Rails::Harness::Tools::RouteInspector ].freeze
- VERSION =
"0.1.0"
Class Method Summary collapse
- .agent_session(**extra) ⇒ Object
-
.cleanup! ⇒ Object
Prune old sessions and audit logs based on configuration limits.
- .configuration ⇒ Object
- .configure {|configuration| ... } ⇒ Object
- .discover_tools! ⇒ Object
- .root ⇒ Object
Class Method Details
.agent_session(**extra) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/ask/rails/harness.rb', line 19 def agent_session(**extra) # Auto-prune if configured cleanup! if configuration.max_session_age || configuration.max_sessions tools = configuration.tools.map { |t| t.is_a?(Class) ? t.new : t } prompt = extra.delete(:system_prompt) || configuration.system_prompt || default_system_prompt # Resolve environment-specific permissions and wire into agent hooks hooks = build_environment_hooks Ask::Agent::Session.new( model: configuration.default_model, max_turns: configuration.max_turns, system_prompt: prompt, tools: tools, state: configuration.persistence_adapter, hooks: hooks, **extra ) end |
.cleanup! ⇒ Object
Prune old sessions and audit logs based on configuration limits.
Removes sessions older than max_session_age seconds, and limits the
total number of sessions to max_sessions (deleting the oldest first).
Audit log entries older than the oldest kept session are also removed.
Call manually via rake task or cron, or configure limits to auto-prune on agent_session creation.
52 53 54 55 |
# File 'lib/ask/rails/harness.rb', line 52 def cleanup! prune_old_sessions limit_session_count end |
.configuration ⇒ Object
15 16 17 |
# File 'lib/ask/rails/harness.rb', line 15 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
11 12 13 |
# File 'lib/ask/rails/harness.rb', line 11 def configure yield configuration end |
.discover_tools! ⇒ Object
40 41 42 |
# File 'lib/ask/rails/harness.rb', line 40 def discover_tools! self.configuration.tools = Ask::Tools::Shell::TOOLS.map(&:new) + core_rails_tools + discovered_user_tools end |
.root ⇒ Object
57 58 59 |
# File 'lib/ask/rails/harness.rb', line 57 def root @root ||= Pathname.new(File.("../..", __dir__)) end |