Interface Pilot

All Superinterfaces:
org.aeonbits.owner.Config, EngineProperties<Pilot>, Serializable

@Sources({"system:properties","file:src/main/resources/properties/custom.properties","file:src/main/resources/properties/default/custom.properties","classpath:custom.properties"}) public interface Pilot extends EngineProperties<Pilot>
Configuration for optional SHAFT Pilot AI providers.

AI is disabled by default. Credentials are never configured here; providers resolve them from the named environment variables only after the caller has explicitly enabled AI and approved the relevant processing location.

  • Method Details

    • enabled

      @Key("pilot.ai.enabled") @DefaultValue("false") boolean enabled()
      Returns:
      whether optional AI execution is enabled
    • provider

      @Key("pilot.ai.provider") @DefaultValue("none") String provider()
      Returns:
      selected provider identifier
    • localConsent

      @Key("pilot.ai.consent.local") @DefaultValue("false") boolean localConsent()
      Returns:
      whether local inference is approved
    • onPremConsent

      @Key("pilot.ai.consent.onPrem") @DefaultValue("false") boolean onPremConsent()
      Returns:
      whether explicitly classified on-prem inference is approved
    • remoteConsent

      @Key("pilot.ai.consent.remote") @DefaultValue("false") boolean remoteConsent()
      Returns:
      whether remote inference is approved
    • allowedEvidenceCategories

      @Key("pilot.ai.allowedEvidenceCategories") @DefaultValue("") String allowedEvidenceCategories()
      Returns:
      comma-separated approved evidence categories
    • telemetryEnabled

      @Key("pilot.ai.telemetry.enabled") @DefaultValue("false") boolean telemetryEnabled()
      Returns:
      whether optional external telemetry is enabled
    • timeoutSeconds

      @Key("pilot.ai.timeoutSeconds") @DefaultValue("30") int timeoutSeconds()
      Returns:
      maximum provider timeout in seconds
    • maxRequestBytes

      @Key("pilot.ai.maxRequestBytes") @DefaultValue("1048576") int maxRequestBytes()
      Returns:
      maximum serialized request size
    • maxInputTokens

      @Key("pilot.ai.maxInputTokens") @DefaultValue("16000") int maxInputTokens()
      Returns:
      maximum estimated input tokens
    • maxOutputTokens

      @Key("pilot.ai.maxOutputTokens") @DefaultValue("2000") int maxOutputTokens()
      Returns:
      maximum output tokens
    • maxCostUsd

      @Key("pilot.ai.maxCostUsd") @DefaultValue("0") String maxCostUsd()
      Returns:
      maximum accepted provider-reported cost in USD
    • retryMaxAttempts

      @Key("pilot.ai.retryMaxAttempts") @DefaultValue("2") int retryMaxAttempts()
      Returns:
      maximum provider execution attempts
    • maxConcurrency

      @Key("pilot.ai.maxConcurrency") @DefaultValue("2") int maxConcurrency()
      Returns:
      maximum concurrent calls per provider
    • circuitBreakerFailureThreshold

      @Key("pilot.ai.circuitBreaker.failureThreshold") @DefaultValue("3") int circuitBreakerFailureThreshold()
      Returns:
      failures required to open the circuit
    • circuitBreakerCooldownSeconds

      @Key("pilot.ai.circuitBreaker.cooldownSeconds") @DefaultValue("60") int circuitBreakerCooldownSeconds()
      Returns:
      circuit-open cooldown in seconds
    • redactionSelectors

      @Key("pilot.ai.redaction.selectors") @DefaultValue("input[type=password],[autocomplete=current-password],[autocomplete=new-password]") String redactionSelectors()
      Returns:
      comma-separated CSS selectors to redact
    • redactionAttributes

      @Key("pilot.ai.redaction.attributes") @DefaultValue("authorization,cookie,set-cookie,password,passwd,secret,token,api-key,apikey,access-key") String redactionAttributes()
      Returns:
      comma-separated structured or DOM attributes to redact
    • redactionPatterns

      @Key("pilot.ai.redaction.patterns") @DefaultValue("") String redactionPatterns()
      Returns:
      double-semicolon-separated custom regular expressions
    • openAiEndpoint

      @Key("pilot.ai.openai.endpoint") @DefaultValue("https://api.openai.com/v1/responses") String openAiEndpoint()
      Returns:
      OpenAI Responses endpoint
    • openAiModel

      @Key("pilot.ai.openai.model") @DefaultValue("") String openAiModel()
      Returns:
      configured OpenAI model
    • openAiApiKeyEnvironmentVariable

      @Key("pilot.ai.openai.apiKeyEnvironmentVariable") @DefaultValue("OPENAI_API_KEY") String openAiApiKeyEnvironmentVariable()
      Returns:
      environment variable containing the OpenAI credential
    • openAiProcessingLocation

      @Key("pilot.ai.openai.processingLocation") @DefaultValue("remote") String openAiProcessingLocation()
      Returns:
      explicit OpenAI endpoint processing location
    • anthropicEndpoint

      @Key("pilot.ai.anthropic.endpoint") @DefaultValue("https://api.anthropic.com/v1/messages") String anthropicEndpoint()
      Returns:
      Anthropic Messages endpoint
    • anthropicModel

      @Key("pilot.ai.anthropic.model") @DefaultValue("") String anthropicModel()
      Returns:
      configured Anthropic model
    • anthropicApiKeyEnvironmentVariable

      @Key("pilot.ai.anthropic.apiKeyEnvironmentVariable") @DefaultValue("ANTHROPIC_API_KEY") String anthropicApiKeyEnvironmentVariable()
      Returns:
      environment variable containing the Anthropic credential
    • anthropicProcessingLocation

      @Key("pilot.ai.anthropic.processingLocation") @DefaultValue("remote") String anthropicProcessingLocation()
      Returns:
      explicit Anthropic endpoint processing location
    • anthropicVersion

      @Key("pilot.ai.anthropic.version") @DefaultValue("2023-06-01") String anthropicVersion()
      Returns:
      Anthropic API contract version
    • geminiEndpoint

      @Key("pilot.ai.gemini.endpoint") @DefaultValue("https://generativelanguage.googleapis.com/v1beta/models") String geminiEndpoint()
      Returns:
      Gemini models endpoint
    • geminiModel

      @Key("pilot.ai.gemini.model") @DefaultValue("") String geminiModel()
      Returns:
      configured Gemini model
    • geminiApiKeyEnvironmentVariable

      @Key("pilot.ai.gemini.apiKeyEnvironmentVariable") @DefaultValue("GEMINI_API_KEY") String geminiApiKeyEnvironmentVariable()
      Returns:
      environment variable containing the Gemini credential
    • geminiProcessingLocation

      @Key("pilot.ai.gemini.processingLocation") @DefaultValue("remote") String geminiProcessingLocation()
      Returns:
      explicit Gemini endpoint processing location
    • ollamaEndpoint

      @Key("pilot.ai.ollama.endpoint") @DefaultValue("http://127.0.0.1:11434/api/chat") String ollamaEndpoint()
      Returns:
      Ollama chat endpoint
    • ollamaModel

      @Key("pilot.ai.ollama.model") @DefaultValue("") String ollamaModel()
      Returns:
      configured Ollama model
    • ollamaProcessingLocation

      @Key("pilot.ai.ollama.processingLocation") @DefaultValue("local") String ollamaProcessingLocation()
      Returns:
      explicit Ollama endpoint processing location
    • ollamaApiKeyEnvironmentVariable

      @Key("pilot.ai.ollama.apiKeyEnvironmentVariable") @DefaultValue("") String ollamaApiKeyEnvironmentVariable()
      Returns:
      optional environment variable containing an on-prem Ollama gateway credential
    • ollamaApiKeyHeader

      @Key("pilot.ai.ollama.apiKeyHeader") @DefaultValue("Authorization") String ollamaApiKeyHeader()
      Returns:
      optional Ollama gateway credential header
    • ollamaApiKeyPrefix

      @Key("pilot.ai.ollama.apiKeyPrefix") @DefaultValue("Bearer ") String ollamaApiKeyPrefix()
      Returns:
      optional Ollama gateway credential prefix
    • set

      default Pilot.SetProperty set()
      Returns a fluent builder for current-thread overrides.
      Specified by:
      set in interface EngineProperties<Pilot>
      Returns:
      current-thread property builder