Mike0021 commited on
Commit
aa2ab8d
·
verified ·
1 Parent(s): 5150013

Support dataset session paths

Browse files
Files changed (1) hide show
  1. app.py +40 -12
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 _file_name(session_name: str | None) -> str | None:
 
 
 
 
 
 
 
88
  if not session_name:
89
- return None
90
  name = str(session_name).strip()
91
- if name.endswith(FILE_SUFFIX):
92
- return name
93
- return f"{name}{FILE_SUFFIX}"
 
 
 
 
 
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 f.endswith(FILE_SUFFIX)))
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
- file_name = _file_name(session_name)
617
- if file_name is None:
618
  return _render_error("No session selected", "Choose a session from the dropdown.")
619
 
620
- try:
621
- data = _load_session(file_name)
622
- except Exception as exc:
623
- return _render_error("Could not load session", f"{type(exc).__name__}: {exc}")
 
 
 
 
 
 
 
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)