Files
devplacepy/devplacepy/services/devii/session/_helpers.py
T

46 lines
1.3 KiB
Python

# retoor <retoor@molodetz.nl>
from __future__ import annotations
from typing import Any
def _repair_history(messages: list[dict[str, Any]]) -> None:
last_idx = None
for i in range(len(messages) - 1, -1, -1):
message = messages[i]
if message.get("role") == "assistant" and message.get("tool_calls"):
last_idx = i
break
if last_idx is None:
while messages and messages[-1].get("role") == "tool":
messages.pop()
return
declared = {
call.get("id")
for call in (messages[last_idx].get("tool_calls") or [])
if call.get("id")
}
answered = {
messages[j].get("tool_call_id")
for j in range(last_idx + 1, len(messages))
if messages[j].get("role") == "tool"
}
if not declared or not declared.issubset(answered):
del messages[last_idx:]
def _now_iso() -> str:
from datetime import datetime, timezone
return datetime.now(timezone.utc).isoformat()
def _format_offset(offset: Any) -> str:
if offset is None:
return "+00:00"
total_minutes = int(offset.total_seconds() // 60)
sign = "+" if total_minutes >= 0 else "-"
total_minutes = abs(total_minutes)
return f"{sign}{total_minutes // 60:02d}:{total_minutes % 60:02d}"