Module: Aidp::Temporal

Defined in:
lib/aidp/temporal.rb,
lib/aidp/temporal/worker.rb,
lib/aidp/temporal/connection.rb,
lib/aidp/temporal/configuration.rb,
lib/aidp/temporal/workflow_client.rb,
lib/aidp/temporal/workflows/base_workflow.rb,
lib/aidp/temporal/activities/base_activity.rb,
lib/aidp/temporal/workflows/sub_issue_workflow.rb,
lib/aidp/temporal/workflows/work_loop_workflow.rb,
lib/aidp/temporal/activities/create_pr_activity.rb,
lib/aidp/temporal/activities/run_agent_activity.rb,
lib/aidp/temporal/activities/run_tests_activity.rb,
lib/aidp/temporal/workflows/issue_to_pr_workflow.rb,
lib/aidp/temporal/activities/create_plan_activity.rb,
lib/aidp/temporal/activities/analyze_issue_activity.rb,
lib/aidp/temporal/activities/create_prompt_activity.rb,
lib/aidp/temporal/workflows/strategy_branch_workflow.rb,
lib/aidp/temporal/activities/analyze_sub_task_activity.rb,
lib/aidp/temporal/activities/diagnose_failure_activity.rb,
lib/aidp/temporal/activities/record_checkpoint_activity.rb,
lib/aidp/temporal/workflows/strategy_execution_workflow.rb,
lib/aidp/temporal/activities/execute_cli_command_activity.rb,
lib/aidp/temporal/activities/prepare_next_iteration_activity.rb,
lib/aidp/temporal/activities/manage_experience_store_activity.rb,
lib/aidp/temporal/activities/run_work_loop_iteration_activity.rb

Defined Under Namespace

Modules: Activities, Workflows Classes: Configuration, Connection, Worker, WorkflowClient

Class Method Summary collapse

Class Method Details

.cancel_workflow(workflow_id, project_dir: Dir.pwd) ⇒ Object

Cancel a workflow



87
88
89
90
# File 'lib/aidp/temporal.rb', line 87

def cancel_workflow(workflow_id, project_dir: Dir.pwd)
  client = workflow_client(project_dir)
  client.cancel_workflow(workflow_id)
end

.configuration(project_dir = Dir.pwd) ⇒ Object

Get the default configuration



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

def configuration(project_dir = Dir.pwd)
  @configurations ||= {}
  @configurations[project_dir] ||= Configuration.new(project_dir)
end

.connection(project_dir = Dir.pwd) ⇒ Object

Build a connection with project configuration



47
48
49
# File 'lib/aidp/temporal.rb', line 47

def connection(project_dir = Dir.pwd)
  configuration(project_dir).build_connection
end

.enabled?(project_dir = Dir.pwd) ⇒ Boolean

Check if Temporal is enabled

Returns:

  • (Boolean)


42
43
44
# File 'lib/aidp/temporal.rb', line 42

def enabled?(project_dir = Dir.pwd)
  configuration(project_dir).enabled?
end

.execute_workflow(workflow_class, input, project_dir: Dir.pwd, **options) ⇒ Object

Execute a workflow synchronously



68
69
70
71
# File 'lib/aidp/temporal.rb', line 68

def execute_workflow(workflow_class, input, project_dir: Dir.pwd, **options)
  client = workflow_client(project_dir)
  client.execute_workflow(workflow_class, input, options)
end

.reset!Object

Reset configuration cache (useful for testing)



93
94
95
# File 'lib/aidp/temporal.rb', line 93

def reset!
  @configurations = {}
end

.signal_workflow(workflow_id, signal_name, *args, project_dir: Dir.pwd) ⇒ Object

Signal a workflow



81
82
83
84
# File 'lib/aidp/temporal.rb', line 81

def signal_workflow(workflow_id, signal_name, *args, project_dir: Dir.pwd)
  client = workflow_client(project_dir)
  client.signal_workflow(workflow_id, signal_name, *args)
end

.start_workflow(workflow_class, input, project_dir: Dir.pwd, **options) ⇒ Object

Start a workflow



62
63
64
65
# File 'lib/aidp/temporal.rb', line 62

def start_workflow(workflow_class, input, project_dir: Dir.pwd, **options)
  client = workflow_client(project_dir)
  client.start_workflow(workflow_class, input, options)
end

.worker(project_dir = Dir.pwd) ⇒ Object

Build a worker with project configuration



57
58
59
# File 'lib/aidp/temporal.rb', line 57

def worker(project_dir = Dir.pwd)
  configuration(project_dir).build_worker
end

.workflow_client(project_dir = Dir.pwd) ⇒ Object

Build a workflow client with project configuration



52
53
54
# File 'lib/aidp/temporal.rb', line 52

def workflow_client(project_dir = Dir.pwd)
  configuration(project_dir).build_workflow_client
end

.workflow_status(workflow_id, project_dir: Dir.pwd) ⇒ Object

Get workflow status



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

def workflow_status(workflow_id, project_dir: Dir.pwd)
  client = workflow_client(project_dir)
  handle = client.get_workflow(workflow_id)
  handle.describe
end