feat: add gitea agentic runtime control plane
This commit is contained in:
42
engine/devops_agent/compiler.py
Normal file
42
engine/devops_agent/compiler.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from engine.devops_agent.spec import WorkflowSpec
|
||||
|
||||
|
||||
def _compile_triggers(frontmatter: dict[str, Any]) -> list[dict[str, Any]]:
|
||||
triggers = frontmatter.get("on") or {}
|
||||
if not isinstance(triggers, dict):
|
||||
return []
|
||||
|
||||
compiled: list[dict[str, Any]] = []
|
||||
for event_name, event_config in triggers.items():
|
||||
normalized = {
|
||||
"event": str(event_name),
|
||||
}
|
||||
if isinstance(event_config, dict):
|
||||
normalized.update(event_config)
|
||||
compiled.append(normalized)
|
||||
return compiled
|
||||
|
||||
|
||||
def compile_workflow(spec: WorkflowSpec) -> dict[str, Any]:
|
||||
policy = spec.frontmatter.get("policy") or {}
|
||||
evidence = spec.frontmatter.get("evidence") or {}
|
||||
|
||||
return {
|
||||
"version": 1,
|
||||
"workflow_name": spec.name,
|
||||
"provider": spec.provider,
|
||||
"source": str(spec.source_path.as_posix()),
|
||||
"triggers": _compile_triggers(spec.frontmatter),
|
||||
"safe_outputs": spec.frontmatter.get("safe_outputs") or {},
|
||||
"required_evidence": evidence.get("required") or [],
|
||||
"policy": {
|
||||
"require_human_merge": bool(policy.get("require_human_merge", True)),
|
||||
"require_fixed_issue": bool(policy.get("require_fixed_issue", False)),
|
||||
"path_scope": policy.get("path_scope") or [],
|
||||
},
|
||||
"instructions": spec.body,
|
||||
}
|
||||
Reference in New Issue
Block a user