• exec/chat_llm_routes.jsctrl/chat_llm.ini exec/chat_llm.js

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Sun May 31 19:06:06 2026
    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 <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)