agent-factory: generate agent auto-deploy-application-to-developm

This commit is contained in:
2026-08-05 01:04:38 +00:00
parent 729c3591a1
commit 1eacad2e34
19 changed files with 586 additions and 0 deletions

0
app/nodes/__init__.py Normal file
View File

43
app/nodes/core_node.py Normal file
View File

@@ -0,0 +1,43 @@
async def process(state: dict) -> dict:
"""
Deploys an application to the development environment using the provided CI pipeline configuration
and PostgreSQL version. Utilizes an LLM to generate deployment instructions and returns the deployment
status and URL.
Args:
state (dict): A dictionary containing the input fields:
- ci_pipeline_config_path (str): Path to the CI pipeline configuration file.
- postgres_version (str): Version of PostgreSQL to use.
Returns:
dict: A dictionary containing the output fields:
- deployment_status (str): Status of the deployment (e.g., "success", "failure").
- deployment_url (str): URL of the deployed application.
"""
from app.agent import llm
from langchain_core.messages import SystemMessage, HumanMessage
try:
ci_pipeline_config_path = state.get("ci_pipeline_config_path", "")
postgres_version = state.get("postgres_version", "")
if not ci_pipeline_config_path or not postgres_version:
raise ValueError("Both 'ci_pipeline_config_path' and 'postgres_version' must be provided.")
messages = [
SystemMessage(content="You are a deployment assistant. Your task is to deploy applications to a development environment."),
HumanMessage(content=f"Deploy the application using the CI pipeline configuration at '{ci_pipeline_config_path}' and PostgreSQL version '{postgres_version}'. Provide the deployment status and URL.")
]
response = await llm.ainvoke(messages)
deployment_details = response.content.strip().split("\n")
if len(deployment_details) < 2:
raise ValueError("Unexpected response format from LLM.")
deployment_status = deployment_details[0].strip()
deployment_url = deployment_details[1].strip()
return {"deployment_status": deployment_status, "deployment_url": deployment_url, "phase": "complete"}
except Exception as exc:
return {"error": str(exc), "phase": "failed"}