cctally 1.27.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/bin/_cctally_alerts.py +26 -1
- package/bin/_cctally_cache.py +278 -6
- package/bin/_cctally_config.py +153 -11
- package/bin/_cctally_core.py +230 -41
- package/bin/_cctally_dashboard.py +399 -37
- package/bin/_cctally_db.py +594 -163
- package/bin/_cctally_doctor.py +11 -0
- package/bin/_cctally_forecast.py +700 -57
- package/bin/_cctally_milestones.py +273 -28
- package/bin/_cctally_parser.py +44 -4
- package/bin/_cctally_record.py +328 -50
- package/bin/_cctally_setup.py +7 -3
- package/bin/_cctally_statusline.py +8 -0
- package/bin/_cctally_update.py +3 -3
- package/bin/_cctally_weekrefs.py +30 -6
- package/bin/_lib_alert_axes.py +8 -1
- package/bin/_lib_alerts_payload.py +95 -3
- package/bin/_lib_budget.py +48 -0
- package/bin/_lib_conversation.py +162 -0
- package/bin/_lib_conversation_query.py +524 -0
- package/bin/_lib_doctor.py +60 -1
- package/bin/_lib_transcript_access.py +80 -0
- package/bin/cctally +40 -1
- package/dashboard/static/assets/{index-D34qf0LE.css → index-Bj5ckRUE.css} +1 -1
- package/dashboard/static/assets/index-Dw4G5FD9.js +18 -0
- package/dashboard/static/dashboard.html +2 -2
- package/package.json +4 -1
- package/dashboard/static/assets/index-C2F1_Mxt.js +0 -18
package/bin/_cctally_doctor.py
CHANGED
|
@@ -331,7 +331,13 @@ def doctor_gather_state(
|
|
|
331
331
|
# `dashboard_bind_stored = "loopback"` (the same fallback the
|
|
332
332
|
# original try/except gave); the dedicated `config_json_valid`
|
|
333
333
|
# check surfaces the corruption separately.
|
|
334
|
+
#
|
|
335
|
+
# `dashboard.expose_transcripts` (Plan 2, spec §5) is read off the same raw
|
|
336
|
+
# JSON via the same chokepoint (defaults False; hand-edited junk → False).
|
|
337
|
+
# `_check_safety_dashboard_bind` only consults it when the bind is LAN, so
|
|
338
|
+
# a loopback report is byte-identical whether or not it's set.
|
|
334
339
|
dashboard_bind_stored = "loopback"
|
|
340
|
+
expose_transcripts = False
|
|
335
341
|
try:
|
|
336
342
|
if _cctally_core.CONFIG_PATH.exists():
|
|
337
343
|
raw_cfg = json.loads(_cctally_core.CONFIG_PATH.read_text(encoding="utf-8"))
|
|
@@ -339,6 +345,9 @@ def doctor_gather_state(
|
|
|
339
345
|
dashboard_bind_stored = (
|
|
340
346
|
c._config_known_value(raw_cfg, "dashboard.bind") or "loopback"
|
|
341
347
|
)
|
|
348
|
+
expose_transcripts = bool(
|
|
349
|
+
c._config_known_value(raw_cfg, "dashboard.expose_transcripts")
|
|
350
|
+
)
|
|
342
351
|
except (json.JSONDecodeError, OSError):
|
|
343
352
|
pass
|
|
344
353
|
|
|
@@ -427,6 +436,8 @@ def doctor_gather_state(
|
|
|
427
436
|
codex_jsonl_present=codex_jsonl_present,
|
|
428
437
|
dashboard_bind_stored=dashboard_bind_stored,
|
|
429
438
|
runtime_bind=runtime_bind,
|
|
439
|
+
# Conversation viewer (Plan 2, spec §5): only consulted on a LAN bind.
|
|
440
|
+
expose_transcripts=expose_transcripts,
|
|
430
441
|
config_json_error=config_json_error,
|
|
431
442
|
update_state=update_state,
|
|
432
443
|
update_state_error=update_state_error,
|