Ctrl K
ComunidadGuías…

worker.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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())