import asyncio import logging from temporalio.worker import Worker from app.activities.db_activities import ( acquire_process_run_lease, build_process_memory_context, compact_episodic_memory, confirm_approval_provenance, ensure_process_run, execute_compensation, finalize_task_failure, list_process_artifacts, promote_completion_memory, read_process_memory, record_event, record_observation, record_step, register_artifact, release_process_run_lease, update_process_state, update_task_status, write_episodic_observation, write_process_memory, ) from app.activities.openclaw_activities import ( check_intermediate_updates_enabled, deliver_reply_files, notify_slack_user, parse_agent_evaluation, send_to_openclaw, task_actions_digest, validate_openclaw_output, verify_response_quality, ) from app.activities.intake_activities import ( classify_task_intake_activity, resubmit_user_messages, ) from app.activities.plan_activities import generate_process_plan, save_process_plan from app.activities.coding_activities import CODING_ACTIVITIES from app.activities.deep_memory_activities import RECALL_ACTIVITIES from app.telemetry import init_telemetry from app.temporal_control import connect_temporal from app.workflows.catalog_step_child import CatalogStepChildWorkflow from app.workflows.catalog_task import CatalogTaskWorkflow from app.workflows.coding_task import CodingTaskWorkflow from app.workflows.deep_recall import DeepRecallWorkflow from app.workflows.generic_execute_child import GenericExecuteChildWorkflow from app.workflows.generic_task import GenericTaskWorkflow from app.workflows.intake_workflow import IntakeWorkflow WORKFLOWS = [ GenericTaskWorkflow, CatalogTaskWorkflow, CatalogStepChildWorkflow, GenericExecuteChildWorkflow, IntakeWorkflow, DeepRecallWorkflow, CodingTaskWorkflow, ] ACTIVITIES = [ send_to_openclaw, task_actions_digest, validate_openclaw_output, parse_agent_evaluation, update_task_status, notify_slack_user, deliver_reply_files, check_intermediate_updates_enabled, verify_response_quality, ensure_process_run, acquire_process_run_lease, release_process_run_lease, finalize_task_failure, execute_compensation, update_process_state, record_step, record_observation, record_event, confirm_approval_provenance, write_process_memory, read_process_memory, build_process_memory_context, write_episodic_observation, compact_episodic_memory, promote_completion_memory, register_artifact, list_process_artifacts, generate_process_plan, save_process_plan, classify_task_intake_activity, resubmit_user_messages, *RECALL_ACTIVITIES, *CODING_ACTIVITIES, ] async def main(): logging.info("Starting OpenClaw RMP Worker...") init_telemetry("rmp-worker") try: from app.production.runtime_sync import mark_runtime_boot mark_runtime_boot("rmp-worker") except Exception as exc: logging.warning("runtime boot stamp failed: %s", exc) client = await connect_temporal(attempts=8) worker = Worker(client, task_queue="openclaw-tasks", workflows=WORKFLOWS, activities=ACTIVITIES) from app.deep_memory.curator import warm_up warming = asyncio.create_task(warm_up()) try: await worker.run() finally: warming.cancel() from app.decisions.jev import close_jev_client from app.llm.openai_direct import close_direct_clients await close_jev_client() await close_direct_clients() if __name__ == "__main__": logging.basicConfig(level=logging.INFO) asyncio.run(main())