From 2819840fb68969f2915dd78aef106f3e640048ca Mon Sep 17 00:00:00 2001 From: marko-kraemer Date: Sun, 27 Jul 2025 22:09:01 +0200 Subject: [PATCH] rem wip --- backend/triggers/api.py | 25 ----- backend/triggers/endpoints/workflows.py | 140 ------------------------ 2 files changed, 165 deletions(-) diff --git a/backend/triggers/api.py b/backend/triggers/api.py index f1a94eae..2f34f598 100644 --- a/backend/triggers/api.py +++ b/backend/triggers/api.py @@ -114,31 +114,6 @@ async def verify_agent_access(agent_id: str, user_id: str): raise HTTPException(status_code=404, detail="Agent not found or access denied") -@router.get("/providers", response_model=List[ProviderResponse]) -async def get_providers(): - if not await is_enabled("agent_triggers"): - raise HTTPException(status_code=403, detail="Agent triggers are not enabled") - - try: - _, _, provider_svc = await get_services() - providers = await provider_svc.get_available_providers() - - return [ - ProviderResponse( - provider_id=provider.provider_id, - name=provider.name, - description=provider.description, - trigger_type=provider.trigger_type.value, - webhook_enabled=provider.webhook_enabled, - setup_required=provider.setup_required, - config_schema=provider.config_schema - ) - for provider in providers - ] - except Exception as e: - logger.error(f"Error getting providers: {e}") - raise HTTPException(status_code=500, detail="Internal server error") - @router.get("/providers/{provider_id}/schema") async def get_provider_schema(provider_id: str): diff --git a/backend/triggers/endpoints/workflows.py b/backend/triggers/endpoints/workflows.py index 7ca6768a..6230f1b4 100644 --- a/backend/triggers/endpoints/workflows.py +++ b/backend/triggers/endpoints/workflows.py @@ -368,143 +368,3 @@ async def execute_agent_workflow( -@router.post("/agents/{agent_id}/workflows/{workflow_id}/webhook") -async def trigger_workflow_webhook( - agent_id: str, - workflow_id: str, - request: Request -): - try: - logger.info(f"Workflow webhook received for agent {agent_id}, workflow {workflow_id}") - body = await request.body() - headers = dict(request.headers) - - try: - if body: - webhook_data = await request.json() - else: - webhook_data = {} - except Exception as e: - logger.warning(f"Failed to parse JSON body: {e}") - webhook_data = { - "raw_body": body.decode('utf-8', errors='ignore'), - "content_type": headers.get('content-type', '') - } - - webhook_data["webhook_headers"] = headers - webhook_data["webhook_timestamp"] = datetime.now(timezone.utc).isoformat() - - db = await get_db_connection() - client = await db.client - - workflow_result = await client.table('agent_workflows').select('*').eq('id', workflow_id).eq('agent_id', agent_id).execute() - if not workflow_result.data: - return JSONResponse( - status_code=404, - content={"error": "Workflow not found"} - ) - - workflow = workflow_result.data[0] - if workflow['status'] != 'active': - return JSONResponse( - status_code=400, - content={"error": "Workflow is not active"} - ) - - agent_result = await client.table('agents').select('*, agent_versions!current_version_id(*)').eq('agent_id', agent_id).execute() - if not agent_result.data: - return JSONResponse( - status_code=404, - content={"error": "Agent not found"} - ) - - agent_data = agent_result.data[0] - account_id = agent_data['account_id'] - - execution_variables = ExecutionVariables(variables={ - 'triggered_by': 'webhook', - 'webhook_timestamp': webhook_data["webhook_timestamp"], - 'webhook_source': headers.get('user-agent', 'unknown'), - 'webhook_ip': headers.get('x-forwarded-for', headers.get('x-real-ip', 'unknown')) - }) - - trigger_result = TriggerResult( - success=True, - should_execute_workflow=True, - workflow_id=workflow_id, - workflow_input=webhook_data, - execution_variables=execution_variables - ) - - trigger_event = TriggerEvent( - trigger_id=f"webhook_{workflow_id}_{uuid.uuid4()}", - agent_id=agent_id, - trigger_type=TriggerType.WEBHOOK, - raw_data=webhook_data - ) - - execution_service = TriggerExecutionService(db) - execution_result = await execution_service.execute_trigger_result( - agent_id=agent_id, - trigger_result=trigger_result, - trigger_event=trigger_event - ) - - if execution_result["success"]: - logger.info(f"Workflow webhook execution started: {execution_result}") - return JSONResponse(content={ - "message": f"Workflow '{workflow['name']}' execution started via webhook", - "execution_id": execution_result.get("execution_id"), - "thread_id": execution_result.get("thread_id"), - "agent_run_id": execution_result.get("agent_run_id"), - "workflow_id": workflow_id, - "agent_id": agent_id, - "status": "running" - }) - else: - logger.error(f"Workflow webhook execution failed: {execution_result}") - return JSONResponse( - status_code=500, - content={ - "error": "Failed to start workflow execution", - "details": execution_result.get("error", "Unknown error") - } - ) - - except Exception as e: - logger.error(f"Error processing workflow webhook: {e}") - import traceback - logger.error(f"Traceback: {traceback.format_exc()}") - return JSONResponse( - status_code=500, - content={"error": "Internal server error"} - ) - -@router.get("/agents/{agent_id}/workflows/{workflow_id}/webhook-url") -async def get_workflow_webhook_url( - agent_id: str, - workflow_id: str, - user_id: str = Depends(get_current_user_id_from_jwt), - request: Request = None -): - db = await get_db_connection() - client = await db.client - - workflow_result = await client.table('agent_workflows').select('*').eq('id', workflow_id).eq('agent_id', agent_id).execute() - if not workflow_result.data: - raise HTTPException(status_code=404, detail="Workflow not found") - - agent_result = await client.table('agents').select('account_id').eq('agent_id', agent_id).execute() - if not agent_result.data: - raise HTTPException(status_code=404, detail="Agent not found") - - base_url = os.getenv("WEBHOOK_BASE_URL", "http://localhost:8000") - webhook_url = f"{base_url}/api/workflows/agents/{agent_id}/workflows/{workflow_id}/webhook" - - return { - "webhook_url": webhook_url, - "workflow_id": workflow_id, - "agent_id": agent_id, - "workflow_name": workflow_result.data[0]['name'], - "status": workflow_result.data[0]['status'] - } \ No newline at end of file