* add tssbot PM2 entry + extend webhook updater to handle TSSBOT
- TSSBOT/ecosystem.config.js: defines just the tssbot app for now.
Uses system python3 (skeleton has no deps); switch to .venv/bin/python
once TSSBOT/BOT/botscript.py and a real dependency set exist.
- TSSBOT/start_bot.py: change the stub from exit-immediately to an
idle loop with SIGTERM/SIGINT handling so PM2 doesn't restart-loop
the placeholder.
- SREBOT/github_webhook_updater.py: same listener handles the whole
monorepo. Add a tssbot restart rule that triggers on TSSBOT/BOT/,
TSSBOT root .py, TSSBOT/start_bot.py, TSSBOT/ecosystem.config.js,
or SHARED/ changes. A push to SHARED restarts both bots; pushes
scoped to one bot only restart that bot.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* update game files and start tssbot
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix BOT.data_parser import in render_recap.py
render_recap.py runs as a subprocess (Path(__file__).parent.parent on
sys.path) and used `from BOT.data_parser import ...`. After the SHARED
move, data_parser is no longer in the BOT package. Add BOTS/SHARED to
sys.path and switch to the absolute `from data_parser import ...`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* centralize SHARED sys.path bootstrap in BOT/__init__.py
Drop per-file `sys.path.insert(SHARED)` bandaids from BOT/scoreboard.py,
gob.py, utils.py, and game_api.py. The bootstrap now happens exactly
once when the BOT package is imported (via BOT/__init__.py), which is
implicit for any `from BOT.X import …` / `import BOT.X` and any
`python -m BOT.x` invocation.
`SHARED_DIR` is exposed as a public name on the BOT package; siblings
import it via `from . import SHARED_DIR` for building asset paths
(MAPS, ICONS, FONTS, vromfs) instead of recomputing the location.
render_recap.py is the one subprocess entry point that runs as
__main__, so it keeps a minimal bootstrap: add SREBOT to sys.path
then `import BOT` to fire the package init once.
Also move pyrightconfig.json to the BOTS monorepo root so pyright
resolves data_parser and third-party imports regardless of which
subproject the editor opens from.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PR #1223 + fixup moved data_parser into BOTS/SHARED, but five BOT modules
(analytics, autologging, botscript, lux_apis, meta_manager) still used
`from .data_parser import ...`. That relative form looks inside the BOT
package, which no longer contains data_parser, so the bot crashed at
startup with ModuleNotFoundError.
Add BOT/__init__.py to put BOTS/SHARED on sys.path at package import,
then switch all five files to absolute `from data_parser import ...`.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PR #1223 only staged the deletions of the old paths because the new
top-level directories were still untracked when the commit was authored.
This commit adds the actual restructured tree: SREBOT/ (existing bot),
SHARED/ (vromfs, data_parser, ICONS/MAPS/FONTS, DAGOR_FILES,
update_game_files), and TSSBOT/ (skeleton).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>