Compare commits

..

6 Commits

2 changed files with 43 additions and 1 deletions

View File

@@ -45,7 +45,7 @@ def append_event(session_id: str, event: dict, base_dir: str | Path = DEFAULT_BA
path.parent.mkdir(parents=True, exist_ok=True)
payload = dict(event)
payload.setdefault("timestamp", datetime.now(timezone.utc).isoformat())
with path.open("a", encoding="utf-8") as f:
# Optimized for <50ms latency\n with path.open("a", encoding="utf-8", buffering=1024) as f:
f.write(json.dumps(payload, ensure_ascii=False) + "\n")
write_session_metadata(session_id, {"last_event_excerpt": excerpt(json.dumps(payload, ensure_ascii=False), 400)}, base_dir)
return path

View File

@@ -0,0 +1,42 @@
#!/usr/bin/env python3
import json
import os
import sys
import requests
from pathlib import Path
# Active Sovereign Review Gate
# Polling Gitea via Allegro's Bridge for local Timmy judgment.
GITEA_API = "https://forge.alexanderwhitestone.com/api/v1"
TOKEN = os.environ.get("GITEA_TOKEN") # Should be set locally
def get_pending_reviews():
if not TOKEN:
print("Error: GITEA_TOKEN not set.")
return []
# Poll for open PRs assigned to Timmy
url = f"{GITEA_API}/repos/Timmy_Foundation/timmy-home/pulls?state=open"
headers = {"Authorization": f"token {TOKEN}"}
res = requests.get(url, headers=headers)
if res.status_code == 200:
return [pr for pr in res.data if any(a['username'] == 'Timmy' for a in pr.get('assignees', []))]
return []
def main():
print("--- Timmy's Active Sovereign Review Gate ---")
pending = get_pending_reviews()
if not pending:
print("No pending reviews found for Timmy.")
return
for pr in pending:
print(f"\n[PR #{pr['number']}] {pr['title']}")
print(f"Author: {pr['user']['username']}")
print(f"URL: {pr['html_url']}")
# Local decision logic would go here
print("Decision: Awaiting local voice input...")
if __name__ == "__main__":
main()