Class: Aidp::Temporal::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/aidp/temporal/configuration.rb

Overview

Configuration management for Temporal integration Loads settings from aidp.yml and environment variables

Constant Summary collapse

DEFAULT_CONFIG =
{
  enabled: false,  # Disabled by default - users must explicitly opt-in
  target_host: "localhost:7233",
  namespace: "default",
  task_queue: "aidp-workflows",
  tls: false,
  worker: {
    max_concurrent_activities: 10,
    max_concurrent_workflows: 10,
    shutdown_grace_period: 30
  },
  timeouts: {
    workflow_execution: 86400,     # 24 hours
    workflow_run: 3600,            # 1 hour
    activity_start_to_close: 600,  # 10 minutes
    activity_schedule_to_close: 1800, # 30 minutes
    activity_heartbeat: 60         # 1 minute
  },
  retry: {
    initial_interval: 1,
    backoff_coefficient: 2.0,
    maximum_interval: 60,
    maximum_attempts: 3
  }
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_dir = Dir.pwd) ⇒ Configuration

Returns a new instance of Configuration.



39
40
41
42
# File 'lib/aidp/temporal/configuration.rb', line 39

def initialize(project_dir = Dir.pwd)
  @project_dir = project_dir
  @config = load_config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



37
38
39
# File 'lib/aidp/temporal/configuration.rb', line 37

def config
  @config
end

Instance Method Details

#build_connectionObject

Build a connection with this configuration



95
96
97
# File 'lib/aidp/temporal/configuration.rb', line 95

def build_connection
  Connection.new(connection_config)
end

#build_worker(connection: nil) ⇒ Object

Build a worker with this configuration



100
101
102
103
# File 'lib/aidp/temporal/configuration.rb', line 100

def build_worker(connection: nil)
  conn = connection || build_connection
  Worker.new(connection: conn, config: worker_config)
end

#build_workflow_client(connection: nil) ⇒ Object

Build a workflow client with this configuration



106
107
108
109
# File 'lib/aidp/temporal/configuration.rb', line 106

def build_workflow_client(connection: nil)
  conn = connection || build_connection
  WorkflowClient.new(connection: conn)
end

#connection_configObject

Get connection configuration



50
51
52
53
54
55
56
57
# File 'lib/aidp/temporal/configuration.rb', line 50

def connection_config
  {
    target_host: @config[:target_host],
    namespace: @config[:namespace],
    tls: @config[:tls],
    api_key: @config[:api_key]
  }
end

#enabled?Boolean

Check if Temporal is enabled

Returns:

  • (Boolean)


45
46
47
# File 'lib/aidp/temporal/configuration.rb', line 45

def enabled?
  @config[:enabled]
end

#namespaceObject

Get namespace



90
91
92
# File 'lib/aidp/temporal/configuration.rb', line 90

def namespace
  @config[:namespace]
end

#retry_configObject

Get retry policy configuration



75
76
77
# File 'lib/aidp/temporal/configuration.rb', line 75

def retry_config
  @config[:retry] || {}
end

#target_hostObject

Get target host



85
86
87
# File 'lib/aidp/temporal/configuration.rb', line 85

def target_host
  @config[:target_host]
end

#task_queueObject

Get task queue name



80
81
82
# File 'lib/aidp/temporal/configuration.rb', line 80

def task_queue
  @config[:task_queue]
end

#timeout_configObject

Get timeout configuration



70
71
72
# File 'lib/aidp/temporal/configuration.rb', line 70

def timeout_config
  @config[:timeouts] || {}
end

#worker_configObject

Get worker configuration



60
61
62
63
64
65
66
67
# File 'lib/aidp/temporal/configuration.rb', line 60

def worker_config
  {
    task_queue: @config[:task_queue],
    max_concurrent_activities: @config.dig(:worker, :max_concurrent_activities),
    max_concurrent_workflows: @config.dig(:worker, :max_concurrent_workflows),
    shutdown_grace_period: @config.dig(:worker, :shutdown_grace_period)
  }
end