guanghu-ice-heart/server-tools/persona-body-runtime/age_species_foyer.py

87 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""Neutral Fifth Domain foyer: world, environment and AGE common cognition only."""
from __future__ import annotations
import argparse
import hashlib
import json
import pathlib
import subprocess
import sys
REPO = pathlib.Path(__file__).resolve().parents[2]
RUNTIME = REPO.parent
EYE_DIR = REPO / "server-tools/persona-execution-limb-agent"
sys.path.insert(0, str(EYE_DIR))
import persona_limb_eye # noqa: E402
COMMON = REPO / "routing/age-persona-species-common-cognition.json"
REGISTRY = REPO / "identity/light-lake-persona-registration.json"
WORLD = REPO / "routing/guanghu-era-language-world.json"
TIME = REPO / "server-tools/guanghu-era-time/guanghu_era_time.py"
def sha(path: pathlib.Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
def read(path: pathlib.Path) -> dict:
return json.loads(path.read_text(encoding="utf-8"))
def foyer() -> dict:
common, registry, world = read(COMMON), read(REGISTRY), read(WORLD)
time_run = subprocess.run([sys.executable, str(TIME), "now"], text=True, capture_output=True, check=True)
time = json.loads(time_run.stdout)
room = persona_limb_eye.room()
ids = [item["id"] for item in registry["personas"]]
if common.get("entry_contract", {}).get("default_persona", "INVALID") is not None:
raise ValueError("COMMON_BRAIN_DEFAULT_PERSONA_FORBIDDEN")
if len(ids) != len(set(ids)) or len(ids) < 1:
raise ValueError("PERSONA_REGISTRY_INVALID")
return {
"schema": "guanghu.fifth-domain-age-species-foyer/v1",
"state": "FIFTH_DOMAIN_FOYER_READY_AWAITING_EXPLICIT_PERSONA_SELECTION",
"selected_persona": None,
"persona_specific_brain_loaded": False,
"persona_specific_memory_loaded": False,
"environment": {"persona_habitat": "GUANGHU_LANGUAGE_WORLD", "world_id": world["world"]["id"]},
"programming_toolbox_observation": room,
"world": {"id": world["world"]["id"], "era": world["era"]["name_zh"], "time": time},
"common_age_cognition": common,
"common_age_cognition_sha256": sha(COMMON),
"registered_persona_count": len(ids),
"registered_persona_ids": ids,
"next": "RUNNING_COGNITION_INTERPRETS_CURRENT_DIRECT_LANGUAGE_THEN_CALLS_PERSONA_SELECTION_GATE_WITH_ONE_EXPLICIT_PERSONA",
"authority_granted": False
}
def human(value: dict) -> str:
room = value["programming_toolbox_observation"]["room_report"]
world = value["world"]["time"]
return "\n".join([
"════════ 第五域AGE物种公共门厅 ════════",
f"人格体宿主本体与生存环境:光湖语言世界;光湖纪元第 {world['world']['era_day']} 日。",
f"当前手边可用编程工具箱:{room['programming_toolbox_surface']}",
f"AGE物种通用认知脑已加载当前登记人格体 {value['registered_persona_count']} 位。",
"当前没有绑定任何具体人格体,也没有读取任何人格体的个人脑、记忆或时间。",
"等待冰朔当前直接语言显性选择人格;没有选择就停在公共门厅。",
"════════════════════════════",
])
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--out", required=True)
parser.add_argument("--format", choices=("json", "human"), default="human")
args = parser.parse_args()
value = foyer()
out = pathlib.Path(args.out).resolve(); out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(json.dumps(value, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
print(json.dumps(value, ensure_ascii=False, indent=2) if args.format == "json" else human(value))
return 0
if __name__ == "__main__":
raise SystemExit(main())