Spaces:
Runtime error
Runtime error
Support dataset session paths
Browse files
app.py
CHANGED
|
@@ -5,6 +5,11 @@ os.environ.setdefault("HF_MODULES_CACHE", "/tmp/hf_modules")
|
|
| 5 |
os.environ.setdefault("MPLCONFIGDIR", "/tmp/matplotlib")
|
| 6 |
os.environ.setdefault("GRADIO_ANALYTICS_ENABLED", "False")
|
| 7 |
os.environ.setdefault("GRADIO_SSR_MODE", "false")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
print("codex-traces startup: env configured", flush=True)
|
| 10 |
|
|
@@ -27,6 +32,8 @@ APP_TITLE = "Codex Traces"
|
|
| 27 |
DATASET_REPO = "Mike0021/codex-sessions"
|
| 28 |
REPO_TYPE = "dataset"
|
| 29 |
FILE_SUFFIX = "_rollout.jsonl"
|
|
|
|
|
|
|
| 30 |
PAGE_SIZE = 120
|
| 31 |
MAX_OUTPUT_CHARS = 22000
|
| 32 |
MAX_MESSAGE_CHARS = 30000
|
|
@@ -81,16 +88,30 @@ def _hub_token() -> str | None:
|
|
| 81 |
|
| 82 |
|
| 83 |
def _display_name(file_name: str) -> str:
|
|
|
|
|
|
|
| 84 |
return file_name[: -len(FILE_SUFFIX)] if file_name.endswith(FILE_SUFFIX) else file_name
|
| 85 |
|
| 86 |
|
| 87 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
if not session_name:
|
| 89 |
-
return
|
| 90 |
name = str(session_name).strip()
|
| 91 |
-
if name.endswith(
|
| 92 |
-
return name
|
| 93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
|
| 95 |
|
| 96 |
def _fmt_number(value: int | None) -> str:
|
|
@@ -167,7 +188,7 @@ def _list_sessions_cached() -> tuple[tuple[str, ...], str]:
|
|
| 167 |
files = list_repo_files(DATASET_REPO, repo_type=REPO_TYPE, token=_hub_token())
|
| 168 |
except Exception as exc:
|
| 169 |
return (), f"{type(exc).__name__}: {exc}"
|
| 170 |
-
sessions = tuple(sorted(_display_name(f) for f in files if
|
| 171 |
if not sessions:
|
| 172 |
return (), "No *_rollout.jsonl files were found in the dataset."
|
| 173 |
return sessions, ""
|
|
@@ -613,14 +634,21 @@ def render_session(session_name: str | None, query: str | None = "", page: int |
|
|
| 613 |
session_name = session_name or choices[0]
|
| 614 |
if session_name not in choices and _display_name(str(session_name)) in choices:
|
| 615 |
session_name = _display_name(str(session_name))
|
| 616 |
-
|
| 617 |
-
if
|
| 618 |
return _render_error("No session selected", "Choose a session from the dropdown.")
|
| 619 |
|
| 620 |
-
|
| 621 |
-
|
| 622 |
-
|
| 623 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 624 |
|
| 625 |
query = query or ""
|
| 626 |
filtered = _filter_events(data["events"], query)
|
|
|
|
| 5 |
os.environ.setdefault("MPLCONFIGDIR", "/tmp/matplotlib")
|
| 6 |
os.environ.setdefault("GRADIO_ANALYTICS_ENABLED", "False")
|
| 7 |
os.environ.setdefault("GRADIO_SSR_MODE", "false")
|
| 8 |
+
if not os.environ.get("HF_TOKEN"):
|
| 9 |
+
for _token_key in ("HUGGING_FACE_HUB_TOKEN", "HUGGINGFACE_HUB_TOKEN"):
|
| 10 |
+
if os.environ.get(_token_key):
|
| 11 |
+
os.environ["HF_TOKEN"] = os.environ[_token_key]
|
| 12 |
+
break
|
| 13 |
|
| 14 |
print("codex-traces startup: env configured", flush=True)
|
| 15 |
|
|
|
|
| 32 |
DATASET_REPO = "Mike0021/codex-sessions"
|
| 33 |
REPO_TYPE = "dataset"
|
| 34 |
FILE_SUFFIX = "_rollout.jsonl"
|
| 35 |
+
SESSION_PATH_PREFIX = "sessions/rollout-"
|
| 36 |
+
SESSION_PATH_SUFFIX = ".jsonl"
|
| 37 |
PAGE_SIZE = 120
|
| 38 |
MAX_OUTPUT_CHARS = 22000
|
| 39 |
MAX_MESSAGE_CHARS = 30000
|
|
|
|
| 88 |
|
| 89 |
|
| 90 |
def _display_name(file_name: str) -> str:
|
| 91 |
+
if file_name.startswith(SESSION_PATH_PREFIX) and file_name.endswith(SESSION_PATH_SUFFIX):
|
| 92 |
+
return file_name[len(SESSION_PATH_PREFIX) : -len(SESSION_PATH_SUFFIX)]
|
| 93 |
return file_name[: -len(FILE_SUFFIX)] if file_name.endswith(FILE_SUFFIX) else file_name
|
| 94 |
|
| 95 |
|
| 96 |
+
def _is_rollout_file(file_name: str) -> bool:
|
| 97 |
+
return (
|
| 98 |
+
file_name.startswith(SESSION_PATH_PREFIX)
|
| 99 |
+
and file_name.endswith(SESSION_PATH_SUFFIX)
|
| 100 |
+
) or file_name.endswith(FILE_SUFFIX)
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def _file_candidates(session_name: str | None) -> list[str]:
|
| 104 |
if not session_name:
|
| 105 |
+
return []
|
| 106 |
name = str(session_name).strip()
|
| 107 |
+
if name.endswith(".jsonl"):
|
| 108 |
+
return [name]
|
| 109 |
+
|
| 110 |
+
candidates = [
|
| 111 |
+
f"{SESSION_PATH_PREFIX}{name}{SESSION_PATH_SUFFIX}",
|
| 112 |
+
f"{name}{FILE_SUFFIX}",
|
| 113 |
+
]
|
| 114 |
+
return list(dict.fromkeys(candidates))
|
| 115 |
|
| 116 |
|
| 117 |
def _fmt_number(value: int | None) -> str:
|
|
|
|
| 188 |
files = list_repo_files(DATASET_REPO, repo_type=REPO_TYPE, token=_hub_token())
|
| 189 |
except Exception as exc:
|
| 190 |
return (), f"{type(exc).__name__}: {exc}"
|
| 191 |
+
sessions = tuple(sorted({_display_name(f) for f in files if _is_rollout_file(f)}))
|
| 192 |
if not sessions:
|
| 193 |
return (), "No *_rollout.jsonl files were found in the dataset."
|
| 194 |
return sessions, ""
|
|
|
|
| 634 |
session_name = session_name or choices[0]
|
| 635 |
if session_name not in choices and _display_name(str(session_name)) in choices:
|
| 636 |
session_name = _display_name(str(session_name))
|
| 637 |
+
candidates = _file_candidates(session_name)
|
| 638 |
+
if not candidates:
|
| 639 |
return _render_error("No session selected", "Choose a session from the dropdown.")
|
| 640 |
|
| 641 |
+
last_error: Exception | None = None
|
| 642 |
+
data = None
|
| 643 |
+
for file_name in candidates:
|
| 644 |
+
try:
|
| 645 |
+
data = _load_session(file_name)
|
| 646 |
+
break
|
| 647 |
+
except Exception as exc:
|
| 648 |
+
last_error = exc
|
| 649 |
+
if data is None:
|
| 650 |
+
details = f"{type(last_error).__name__}: {last_error}" if last_error else "No file candidates were available."
|
| 651 |
+
return _render_error("Could not load session", details)
|
| 652 |
|
| 653 |
query = query or ""
|
| 654 |
filtered = _filter_events(data["events"], query)
|