Module: ClaudeAgentServer::Services::OptionsBuilder
- Defined in:
- lib/claude_agent_server/services/options_builder.rb
Constant Summary collapse
- CAMEL_TO_SNAKE =
Map of camelCase JSON keys to snake_case ClaudeAgentOptions kwargs
{ 'allowedTools' => :allowed_tools, 'disallowedTools' => :disallowed_tools, 'systemPrompt' => :system_prompt, 'mcpServers' => :mcp_servers, 'permissionMode' => :permission_mode, 'continueConversation' => :continue_conversation, 'resume' => :resume, 'maxTurns' => :max_turns, 'model' => :model, 'cwd' => :cwd, 'cliPath' => :cli_path, 'env' => :env, 'maxBudgetUsd' => :max_budget_usd, 'maxThinkingTokens' => :max_thinking_tokens, 'fallbackModel' => :fallback_model, 'outputFormat' => :output_format, 'includePartialMessages' => :include_partial_messages, 'forkSession' => :fork_session, 'enableFileCheckpointing' => :enable_file_checkpointing, 'effort' => :effort, 'appendAllowedTools' => :append_allowed_tools }.freeze
Class Method Summary collapse
Class Method Details
.build(params) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/claude_agent_server/services/options_builder.rb', line 35 def build(params) kwargs = {} params.each do |key, value| snake_key = CAMEL_TO_SNAKE[key.to_s] || key.to_s.gsub(/([A-Z])/, '_\1').downcase.to_sym kwargs[snake_key] = value end # Merge with server-level defaults defaults = ClaudeAgentServer.config. merged = defaults.merge(kwargs) # Force bypassPermissions for HTTP usage (no interactive terminal) merged[:permission_mode] ||= 'bypassPermissions' ClaudeAgentSDK::ClaudeAgentOptions.new(**merged) end |