feat: finalize production cleanup with structured agent responses and project governance

This commit is contained in:
Space-Banane
2026-05-27 18:08:52 +02:00
parent a19b285232
commit c09f0ee9c0
17 changed files with 737 additions and 126 deletions

View File

@@ -31,6 +31,7 @@ class HistoryDB:
started_at TEXT,
ended_at TEXT,
result TEXT,
response_json TEXT,
error TEXT,
steps INTEGER DEFAULT 0,
cancelled INTEGER DEFAULT 0,
@@ -65,6 +66,9 @@ class HistoryDB:
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_job_events_job_id_id ON job_events(job_id, id)"
)
columns = {row[1] for row in conn.execute("PRAGMA table_info(jobs)").fetchall()}
if "response_json" not in columns:
conn.execute("ALTER TABLE jobs ADD COLUMN response_json TEXT")
conn.commit()
def create_job(
@@ -195,6 +199,7 @@ class HistoryDB:
"started_at": row["started_at"],
"ended_at": row["ended_at"],
"result": row["result"],
"response": self._parse_response_payload(row["response_json"], row["result"]),
"error": row["error"],
"steps": row["steps"],
"cancelled": bool(row["cancelled"]),
@@ -214,3 +219,17 @@ class HistoryDB:
},
}
def _parse_response_payload(self, response_json: str | None, result: str | None) -> dict[str, Any]:
fallback_return = str(result or "").strip()
if not response_json:
return {"return": fallback_return, "data": None}
try:
payload = json.loads(response_json)
if isinstance(payload, dict):
return {
"return": str(payload.get("return") or fallback_return),
"data": payload.get("data"),
}
except Exception:
pass
return {"return": fallback_return, "data": None}