• exec/chat_llm_irc.js

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri May 29 23:59:56 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/fc683fabeb009dde1a814d14
    Modified Files:
    exec/chat_llm_irc.js
    Log Message:
    chat_llm_irc: add per-user mute/unmute

    A user can address the bot with "mute me" (or "shut up", "be quiet",
    "stfu", "leave me alone", ...) to stop it replying to them and stop it auto-intervening on their questions; "unmute me" (or "talk to me",
    "come back", ...) resumes. Per-user, keyed by lowercased nick,
    persisted to data/<bot_file_base>_mute.json so a restart doesn't
    silently un-mute everyone. Mute/unmute are honored even while muted, so
    a user can always bring the bot back.

    IRC-only by design: IRC is the only context where the guru speaks
    unprompted (direct address + high-confidence intervention). The
    Terminal Server guru-paging and private/jsexec chat are pull-based, so
    there is nothing to mute there.

    Also adds a CHAT_LLM_IRC_NO_MAIN guard so the adapter can be loaded for
    unit testing without connecting a duplicate bot (mirrors chat_llm.js's CHAT_LLM_NO_STANDALONE).

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Jun 21 00:59:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e46fe0a6e953b0563203af59
    Modified Files:
    exec/chat_llm_irc.js
    Log Message:
    chat_llm_irc: disable SpiderMonkey branch-limit in the bot main loop

    js.branch_limit (alias of js.time_limit) caps the cumulative operation- callback count over the JS runtime's whole life. A long-lived daemon that polls in a while-loop for days inevitably reaches it, at which point jsexec sets js.terminated and the bot exits; the launcher relaunches it, producing
    the periodic 'guru dropped and rejoined' churn on IRC.

    Set js.branch_limit = 0 (disabled) at the top of main_loop(). This loop is
    not a runaway: it blocks on sock.poll() with a timeout and leaves promptly on js.terminated or the .stop semfile, so real shutdown still works.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Oct 2 15:10:06 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/4d40adac11c5860e42aa4f83
    Modified Files:
    exec/chat_llm_irc.js
    Log Message:
    chat_llm_irc: don't reply to other bots

    Another BBS's guru (PooBahLoo_Guru) and ours traded five replies in two
    minutes in #synchronet, each answering the other. Never speak to a nick
    that looks like a bot: "bot" or "guru" as a delimited part of the nick ("VERT_Guru", "bot-x"), a CamelCase part ("SomeBot", "GuruBob"), or a
    trailing suffix ("chatbot"). Plain substrings don't count, so nicks
    like "Abbott" or "Robotron" are still answered.

    Their lines still feed the channel context, and relays queued for them
    are still delivered.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net