Chan-Compass / trace_publish.py
ranranrunforit's picture
Upload 25 files
c341e23 verified
Raw
History Blame Contribute Delete
2.34 kB
"""trace_publish.py - upload /data/traces to the Hub as a dataset, using the
HF_TOKEN secret. No command line; the custom gradio.Server app calls it directly.
"""
from __future__ import annotations
import os
import tempfile
import paths
def publish_traces(repo_id: str) -> str:
repo_id = (repo_id or "").strip()
if "/" not in repo_id:
return "⚠️ Enter a repo id like `username/dataset-name`."
token = (os.environ.get("HF_TOKEN") or os.environ.get("HUGGING_FACE_HUB_TOKEN")
or "").strip()
if not token:
return ("⚠️ No `HF_TOKEN` secret found. Add it in Space → Settings → "
"Variables and secrets (a **write** token), then try again.")
try:
traces = [f for f in os.listdir(paths.TRACES_DIR) if f.endswith(".json")]
except OSError:
traces = []
if not traces:
return "⚠️ No traces yet — run a few Auto Research reports first."
try:
from huggingface_hub import HfApi
api = HfApi(token=token)
api.create_repo(repo_id, repo_type="dataset", exist_ok=True)
card = (
"---\nlicense: mit\ntags: [agent-trace, finance, chan-theory, llama-cpp]\n---\n\n"
"# Chan Compass — agent traces\n\n"
"JSON traces from the Chan Compass multi-agent research desk. Each file "
"is one ticker's run: the plan, every evidence-tool call and its result, "
"and each local sub-agent's request and response. Shared for the "
"Build Small hackathon (*Sharing is Caring*).\n\n"
"*Educational data — not investment advice.*\n")
rp = os.path.join(tempfile.gettempdir(), "README.md")
with open(rp, "w", encoding="utf-8") as f:
f.write(card)
api.upload_file(path_or_fileobj=rp, path_in_repo="README.md",
repo_id=repo_id, repo_type="dataset")
api.upload_folder(folder_path=paths.TRACES_DIR, path_in_repo="traces",
repo_id=repo_id, repo_type="dataset")
url = f"https://huggingface.co/datasets/{repo_id}"
return (f"✅ Published {len(traces)} trace(s) to {repo_id} ({url}). "
f"Put that link in your submission for the Sharing is Caring badge.")
except Exception as e:
return f"❌ Upload failed: {e}"