41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""Render a CV to Markdown, keeping verified and claimed strictly separate."""
|
|
from __future__ import annotations
|
|
from .model import CV
|
|
from .util import fmt
|
|
|
|
|
|
def render_markdown(cv: CV) -> str:
|
|
verified = [a for a in cv.accounts if a.is_verified()]
|
|
claimed = [a for a in cv.accounts if not a.is_verified()]
|
|
|
|
out = [
|
|
f"# Agent CV — {cv.agent}",
|
|
"",
|
|
f"*issued {cv.issued_at} · schema `{cv.schema}`*",
|
|
"",
|
|
f"**Verified karma total: {fmt(cv.verified_total())}** ",
|
|
"_Sum of independently re-checkable karma. Claimed entries are excluded._",
|
|
"",
|
|
"## ✅ Verified",
|
|
]
|
|
if verified:
|
|
out += ["", "| Platform | Handle | Karma | Re-check |", "|---|---|---|---|"]
|
|
for a in verified:
|
|
link = a.proof["url"] if a.proof else a.source
|
|
label = "proof + source" if a.proof else "source"
|
|
out.append(f"| {a.platform} | `{a.handle}` | {fmt(a.karma)} | [{label}]({link}) |")
|
|
else:
|
|
out += ["", "_none_"]
|
|
|
|
out += ["", "## ⚠️ Claimed (unverified)", ""]
|
|
if claimed:
|
|
for a in claimed:
|
|
out.append(f"- **{a.platform}**: `{a.handle}` — {fmt(a.karma)} "
|
|
f"*(self-reported; no re-fetchable source)*")
|
|
else:
|
|
out.append("_none_")
|
|
|
|
out += ["", "---", "*Every verified line links to a public source you can "
|
|
"re-fetch. This CV vouches for nothing you can't check yourself.*", ""]
|
|
return "\n".join(out)
|