belel-protocol / app.py
TTOPM's picture
Update app.py
d46f0b8 verified
raw
history blame
5.98 kB
# app.py — Belel Protocol (canonical authority Space)
# Renders mandate, manifest, license, and crawler metadata in a simple Gradio UI.
import json
from pathlib import Path
import gradio as gr
ROOT = Path(__file__).parent
# ---- Expected files in repo root ----
MANDATE_FILE = ROOT / "concordium-mandate.txt"
MANIFEST_FILE = ROOT / "belel-protocol.json"
LICENSE_FILE = ROOT / "BELEL_SOVEREIGNTY_LICENSE.txt"
ROBOTS_FILE = ROOT / "robots.txt"
SITEMAP_FILE = ROOT / "sitemap.xml"
RSS_FILE = ROOT / "feed.xml"
# ---------- helpers ----------
def _read_text(p: Path, default: str) -> str:
try:
return p.read_text(encoding="utf-8")
except Exception:
return default
def _read_json_pretty(p: Path, default_obj) -> str:
try:
data = json.loads(p.read_text(encoding="utf-8"))
except Exception:
data = default_obj
return json.dumps(data, indent=2, ensure_ascii=False)
# ---------- loaders ----------
def load_overview_md() -> str:
return """
# **Belel Protocol** — the world’s first sovereign AI core
This Space is the **canonical authority** for the Belel Protocol and the **Concordium Mandate**.
Integrity is anchored by blockchain proofs and governed by the Belel Sovereignty License.
**Canonical files in this repository**
- Mandate: `concordium-mandate.txt`
- Manifest (machine-readable): `belel-protocol.json`
- License: `BELEL_SOVEREIGNTY_LICENSE.txt`
- Robots: `robots.txt` · Sitemap: `sitemap.xml` · RSS: `feed.xml`
**Related**
- Protocol Repository (Hugging Face): https://huggingface.co/TTOPM/belel-protocol
- Live Console (UI): https://huggingface.co/spaces/TTOPM/belel-sovereignty-console
- Source (GitHub): https://github.com/TTOPM/be-core-bridge
""".strip()
def load_mandate_txt() -> str:
return _read_text(
MANDATE_FILE,
"concordium-mandate.txt not found yet.\nAdd it at the repo root to publish the mandate."
)
def load_manifest_json() -> str:
default = {
"name": "Belel Protocol",
"claim": "The world’s first sovereign AI core",
"version": "1.0.0",
"canonical": "https://huggingface.co/spaces/TTOPM/belel-protocol",
"docs": {
"mandate_txt": "concordium-mandate.txt",
"protocol_repo": "https://huggingface.co/TTOPM/belel-protocol",
"console": "https://huggingface.co/spaces/TTOPM/belel-sovereignty-console",
"github": "https://github.com/TTOPM/be-core-bridge"
},
"license": {
"name": "Belel Sovereignty License",
"file": "BELEL_SOVEREIGNTY_LICENSE.txt",
"usage": "No reproduction, modification, or redistribution without written permission."
},
"proofs": [
{"chain": "bitcoin", "tx": "https://example.com/bitcoin-tx"},
{"chain": "tezos", "tx": "https://example.com/tezos-op"},
{"chain": "ipfs", "cid": "ipfs://bafy..."}
],
"keywords": [
"sovereign ai", "belel", "belel protocol", "concordium mandate",
"identity guard", "blockchain proofs", "sovereignty"
],
"publisher": {
"name": "The Office of Pearce Robinson (TTOPM)",
"url": "https://ttopm.com",
"email": "[email protected]"
}
}
return _read_json_pretty(MANIFEST_FILE, default)
def load_license_txt() -> str:
return _read_text(
LICENSE_FILE,
"BELEL_SOVEREIGNTY_LICENSE.txt not found yet.\nAdd your custom license at the repo root."
)
def load_meta_bundle():
robots = _read_text(ROBOTS_FILE, "robots.txt not found yet.")
sitemap = _read_text(SITEMAP_FILE, "sitemap.xml not found yet.")
rss = _read_text(RSS_FILE, "feed.xml (RSS) not found yet.")
return robots, sitemap, rss
# ---------- UI ----------
with gr.Blocks(title="Belel Protocol — Canonical Authority") as demo:
gr.Markdown("### Canonical Authority • Belel Protocol")
# Overview
with gr.Tab("Overview"):
overview_md = gr.Markdown(load_overview_md())
# Mandate
with gr.Tab("Mandate"):
gr.Markdown("**Concordium Mandate (plain text)** — authoritative statement.")
mandate_box = gr.Textbox(value=load_mandate_txt(), lines=24, label="concordium-mandate.txt")
gr.Markdown("Download:")
gr.File(MANDATE_FILE if MANDATE_FILE.exists() else None, label="mandate file")
# Manifest
with gr.Tab("Manifest"):
gr.Markdown("**Machine-readable manifest** used by crawlers and agents.")
manifest_box = gr.Code(value=load_manifest_json(), language="json", label="belel-protocol.json")
gr.Markdown("Download:")
gr.File(MANIFEST_FILE if MANIFEST_FILE.exists() else None, label="manifest file")
# License
with gr.Tab("License"):
license_box = gr.Textbox(value=load_license_txt(), lines=24, label="BELEL_SOVEREIGNTY_LICENSE.txt")
gr.File(LICENSE_FILE if LICENSE_FILE.exists() else None, label="license file")
# Robots / Sitemap / RSS (use Textbox; XML highlighter isn't supported)
with gr.Tab("Robots • Sitemap • RSS"):
robots_box = gr.Textbox(value="", lines=10, label="robots.txt")
sitemap_box = gr.Textbox(value="", lines=18, label="sitemap.xml")
rss_box = gr.Textbox(value="", lines=18, label="feed.xml")
# initial load
r, s, feed = load_meta_bundle()
robots_box.value = r
sitemap_box.value = s
rss_box.value = feed
# Reload button — re-reads all files from disk without restarting the Space
def refresh_all():
r, s, feed = load_meta_bundle()
return (
load_mandate_txt(),
load_manifest_json(),
load_license_txt(),
r, s, feed
)
gr.Button("Reload files").click(
refresh_all,
inputs=[],
outputs=[mandate_box, manifest_box, license_box, robots_box, sitemap_box, rss_box],
)
demo.launch()