Commit Graph

12 Commits

Author SHA1 Message Date
ee865426c7 discord-bot: real-Chrome fallback for bot-blocked web research
Add scripts/web-fetch-chrome.py — drives the installed Chrome 148 headlessly
via Playwright (channel="chrome", no Chromium download), runs JS, strips the
HeadlessChrome UA tell, isolated profile so it never touches a human's open
Chrome. Wire it into DISCORD_CLAUDE.md ("Web Research / Bot-Blocked Sites":
WebFetch first, real-Chrome fallback) and refine the headless rule to permit
headless fetching while still forbidding visible/interactive browser windows.
Add playwright to requirements.txt (no `playwright install` needed). Restarted bot.

Tested: static + JS-rendered pages render; UA reports Chrome/148 (not Headless).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:14:55 -07:00
eda8420ba6 discord-bot: resolve Rob's Syncro scope contradiction — full billing access
Rob's CAN list granted full Syncro "same as any tech" (incl. bill time +
create invoices), but the CANNOT list forbade billing actions (add line
items, create invoices, update ticket status) — a direct conflict that left
the bot's behavior on Rob's billing requests undefined. Per Mike, Rob gets
full Syncro including billing; remove the contradicting CANNOT line. Restarted bot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 12:43:50 -07:00
8e8a18ce6f access(rob): grant Rob Williams full Syncro access
Updated scope from read-only Syncro to full access: create/update/close tickets,
add comments, bill time, create invoices. Same as any tech.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 14:07:15 -07:00
063b209209 fix: Rob Williams (not Quirarte) 2026-05-21 14:02:25 -07:00
67dd7a457a access: add Rob as limited operator in Discord bot (remediation-tool + IX/Websvr hosting) 2026-05-21 14:02:02 -07:00
6c476066ee Discord bot: pin Howard's ID, add Rob as recognized read-only user
Howard (624667664501178379) gets his ID pinned (full trust). Rob
(261978810713505792) added under a new "Recognized — Restricted
(read-only)" tier: greeted by name, but informational responses only —
no writes, git, system changes, M365, or vault. Restarted bot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:44:57 -07:00
8973229c2f Discord bot: pin Mike's Discord ID (264814939619721216)
Replace the placeholder so the owner is recognized from his first
message. Restarted bot to load the change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:30:36 -07:00
81eea1111b Discord bot: record Winter's username alongside her ID
Her Discord username is @Winter (ID 624666486362996755); store both so
the match against the [DISCORD_CONTEXT] block is robust. Restarted bot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:29:45 -07:00
9fb16a7308 Discord bot: pin Winter's Discord ID for first-message recognition
Replace the (note on first interaction) placeholder with her user ID
624666486362996755 so the bot matches her from the [DISCORD_CONTEXT]
block immediately. Restarted the bot to load the change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:29:16 -07:00
8a6695bb71 Discord bot: grant Winter full access, mark her Syncro SME
Add Winter to the bot's known team members with full trust, and note she
is the go-to person for Syncro questions (also flagged on the /syncro
skill row). Restarted the bot to load the updated system prompt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:26:45 -07:00
c5474cdb3d Session log: Discord bot instruction corrections
Reverse the no-questions rule (bot can/should ask via persistent thread
sessions), add a headless-operation constraint (no Chrome/credential
windows/GUI auth at BEAST), and add a Task Loop (identify requester ->
do work -> anything else? -> offer Syncro -> /save). Restarted the bot
service to load the corrected system prompt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:20:55 -07:00
020ae0cc1c feat: Discord bot — per-session rules, user identity, and DISCORD_CLAUDE.md
- Add DISCORD_CLAUDE.md as the Discord bot's dedicated system prompt,
  replacing the main CLAUDE.md for bot sessions. Covers: no-interactive
  rules, Discord user authorization, vault/remediation guidance, /save
  after every task, and formatting rules for Discord.

- config.py: add discord_system_prompt field (default: projects/discord-bot/
  DISCORD_CLAUDE.md, overridable via env var).

- client.py: _load_system_prompt() now loads discord_system_prompt path
  with fallback to CLAUDE.md if file is missing.

- message_handler.py: inject [DISCORD_CONTEXT] header into every agent
  message containing Discord username, display name, user ID, channel,
  and guild so the agent always knows who is asking.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 10:11:36 -07:00