Subj : exec/chat_llm_routes.jsctrl/chat_llm.ini exec/chat_llm.js To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Sun May 31 2026 19:06:06 https://gitlab.synchro.net/main/sbbs/-/commit/2e23b7ebea8150c6e1f31ae1 Added Files: exec/chat_llm_routes.js Modified Files: ctrl/chat_llm.ini exec/chat_llm.js Log Message: chat_llm: extract all intent routing into pluggable router modules classify_intent now ships NO routing of its own -- it is a priority-ordered dispatcher over routers registered by modules named in chat_llm.ini's `intent_routers` key (loaded once by ensure_intent_routers()). register_intent_router(fn, priority) orders them, so a site module can slot between stock ones. The stock routing (bbs_directory, this_bbs, external_archives, relay_message + ARCHIVE_TOPICS) moves verbatim into the new stock module exec/chat_llm_routes.js (two routers: BBS-directory at priority 10, this_bbs/relay/archives at 30). The generic text helpers (_strip_bbs_suffix, _looks_like_proper_noun / _network / _os) stay in the engine as shared utilities both stock and site routers call. Site-specific routing (Synchronet's GitLab git_* tools) lives in a separate local module loaded alongside (priority 20, preserving its original mid-order position). ctrl/chat_llm.ini: intent_routers = chat_llm_routes (stock now gets its routing via the module; a clean install with the key empty has none). Behavior-preserving: the classify_intent regression suite stays green -- engine-alone routes nothing, stock+site routes identically to before. Co-Authored-By: Claude Opus 4.8 --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .