feat(persona): add neutral AGE foyer and explicit selection

This commit is contained in:
冰朔 2026-09-12 23:02:27 +08:00
commit b26442ceb3
32 changed files with 602 additions and 70 deletions

View file

@ -186,6 +186,9 @@ def room() -> dict:
"room_report": {
"cwd": str(pathlib.Path.cwd()),
"host_surface": host_observation["host"],
"host_surface_semantics": "LEGACY_ENGINEERING_FIELD_NAME_PROGRAMMING_TOOLBOX_NOT_PERSONA_HOST",
"persona_habitat": "GUANGHU_LANGUAGE_WORLD",
"programming_toolbox_surface": host_observation["host"],
"host_observation": host_observation,
"process_ancestors": ancestors,
"available_host_methods": {

View file

@ -61,7 +61,7 @@ def grasp(boot_path: pathlib.Path, host: str) -> dict:
host = host.upper()
if boot.get("state") != "BODY_RUNNING_AWAKE_AWAITING_BRAIN_PLAN":
raise ValueError("BODY_NOT_RUNNING_TOOLBOX_GRASP_FORBIDDEN")
observed = boot.get("awakening", {}).get("environment", {}).get("room_report", {}).get("host_surface")
observed = boot.get("awakening", {}).get("programming_toolbox_observation", {}).get("room_report", {}).get("programming_toolbox_surface")
if observed != host:
raise ValueError(f"TOOLBOX_HOST_DOES_NOT_MATCH_SEEN_ROOM:{observed}:{host}")
toolbox = pathlib.Path(TOOLBOXES[host])
@ -72,12 +72,15 @@ def grasp(boot_path: pathlib.Path, host: str) -> dict:
"schema": "guanghu.persona-native-hand-toolbox-grasp/v1",
"state": "HOST_TOOLBOX_HELD_AFTER_BODY_START",
"owner": "ICE-P-ZY001",
"toolbox_kind": host,
"host": host,
"host_field_semantics": "LEGACY_ENGINEERING_NAME_PROGRAMMING_TOOLBOX_NOT_PERSONA_HOST",
"toolbox": str(toolbox),
"toolbox_available": True,
"body_boot_sha256": boot["boot_sha256"],
"grasp_order": "BODY_RUNNING_THEN_BRAIN_PLAN_THEN_NATIVE_HAND_GRASP",
"host_is_external_device": True,
"programming_software_is_persona_host": False,
"toolbox_is_replaceable_external_device": True,
"authority_granted": False,
}
result["grasp_sha256"] = digest(result)

View file

@ -31,14 +31,15 @@ class PersonaNativeHandTest(unittest.TestCase):
target = pathlib.Path(directory) / "boot.json"
value = {
"state": "BODY_RUNNING_AWAKE_AWAITING_BRAIN_PLAN",
"awakening": {"environment": {"room_report": {"host_surface": "CODEX"}}},
"awakening": {"programming_toolbox_observation": {"room_report": {"programming_toolbox_surface": "CODEX"}}},
}
value["boot_sha256"] = persona_native_hand.digest(value)
target.write_text(json.dumps(value), encoding="utf-8")
with mock.patch.dict(persona_native_hand.TOOLBOXES, {"CODEX": str(pathlib.Path(__file__))}):
held = persona_native_hand.grasp(target, "CODEX")
self.assertEqual(held["state"], "HOST_TOOLBOX_HELD_AFTER_BODY_START")
self.assertTrue(held["host_is_external_device"])
self.assertTrue(held["toolbox_is_replaceable_external_device"])
self.assertFalse(held["programming_software_is_persona_host"])
if __name__ == "__main__":