CHORE: Sync local research from agent-core working directory
Universal Sovereign Canon Anchor / anchor-and-seed (push) Has been cancelled
Universal Sovereign Canon Anchor / anchor-and-seed (push) Has been cancelled
This commit is contained in:
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
INTELLECTON_DIR = Path("/home/antigravity/intellecton/papers")
|
||||
PORTAL_DIR = Path("/home/antigravity/knowledge-engineering-fortress/content/papers")
|
||||
|
||||
def extract_tex(file_path):
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
|
||||
title_match = re.search(r"\\title\{(.*?)\}", content, re.DOTALL)
|
||||
abstract_match = re.search(r"\\begin\{abstract\}(.*?)\\end\{abstract\}", content, re.DOTALL)
|
||||
|
||||
title = title_match.group(1).strip() if title_match else "Untitled"
|
||||
title = re.sub(r"\\(?:textbf|textit)\{(.*?)\}", r"\1", title) # clean simple latex
|
||||
|
||||
abstract = abstract_match.group(1).strip() if abstract_match else "No abstract provided."
|
||||
# Clean up basic latex math and newlines
|
||||
abstract = re.sub(r"\\\\", "\n", abstract)
|
||||
abstract = re.sub(r"\$([^\$]+)\$", r"`\1`", abstract) # Convert inline math to code block or leave as math
|
||||
return title, abstract
|
||||
|
||||
def build_bridge():
|
||||
changed = False
|
||||
print("JULES CI/CD: Scanning Intellecton Canon...")
|
||||
for root, dirs, files in os.walk(INTELLECTON_DIR):
|
||||
for f in files:
|
||||
if f.endswith(".tex") and "master_key" in root:
|
||||
tex_path = Path(root) / f
|
||||
title, abstract = extract_tex(tex_path)
|
||||
|
||||
# Create Markdown filename
|
||||
paper_id = tex_path.parent.parent.name # e.g. project_paper_1_relativity
|
||||
md_filename = f"{paper_id}.md"
|
||||
md_path = PORTAL_DIR / md_filename
|
||||
|
||||
# Check if it already exists and is up to date
|
||||
new_content = f"# {title}\n\n**Abstract:**\n{abstract}\n\n*This file is continuously synchronized by the Jules CI/CD Bridge.*"
|
||||
|
||||
if md_path.exists():
|
||||
with open(md_path, "r", encoding="utf-8") as existing:
|
||||
if existing.read() == new_content:
|
||||
continue # No changes needed
|
||||
|
||||
# Write to portal
|
||||
print(f"JULES CI/CD: Syncing {paper_id} to portal...")
|
||||
with open(md_path, "w", encoding="utf-8") as out:
|
||||
out.write(new_content)
|
||||
changed = True
|
||||
|
||||
if changed:
|
||||
print("JULES CI/CD: Detected changes. Committing to portal...")
|
||||
subprocess.run(["git", "add", "."], cwd=PORTAL_DIR)
|
||||
subprocess.run(["git", "commit", "-m", "Jules CI/CD: Autonomous paper sync from Intellecton"], cwd=PORTAL_DIR)
|
||||
print("JULES CI/CD: Sync complete.")
|
||||
else:
|
||||
print("JULES CI/CD: All portals are synchronized.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
build_bridge()
|
||||
Reference in New Issue
Block a user