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/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/activities/prepare_next_iteration_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



83
84
85
86
# File 'lib/aidp/temporal.rb', line 83

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



32
33
34
35
# File 'lib/aidp/temporal.rb', line 32

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



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

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)


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

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



64
65
66
67
# File 'lib/aidp/temporal.rb', line 64

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)



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

def reset!
  @configurations = {}
end

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

Signal a workflow



77
78
79
80
# File 'lib/aidp/temporal.rb', line 77

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



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

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



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

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



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

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



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

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