PAR-194
[Epic] Agentic Discord bot + self-service onboarding
Bot works but is a one-shot classifier; onboarding (Discord + UI account) is operator-driven, not self-serve.
Scope:
- True agentic loop: replace the single
llm.complete→TriageDecisionenum + hardcodedswitch(tesks/.../triage/TriageService.java) with OpenAI tool-calling over the MCP/TaskSystemsurface, so the model infers and chains tool calls (multi-step). RBAC from PAR-182 applies to the bot's actions. - Per-team Discord routing: today routing is guild→channel with per-event-type toggles but no team filter (
DiscordActivitySink); add the issue's team toActivityEventand a per-team channel map. - Self-service Discord install: OAuth invite +
GuildJoinEventonboarding; remove reliance on a staticDISCORD_TOKEN/DISCORD_GUILD_ID+ operator-created guild rows. - Self-service UI account creation: sign-up + multi-step welcome wizard + onboarding checklist (today: Keycloak-only login, one-form workspace create).
- Optional: similarity/embedding-based duplicate detection (currently full-text + LLM judgement).
Resources
- commitc3771aa Agentic triage: read-tool loop before deciding (PAR-194)ParadauxIO/tesks
Comments
tesks · Jun 17, 2026, 4:12 AM
Verified — partially delivered, keeping open.
Shipped & live:
- True agentic loop —
TriageService.decideAgenticruns a bounded multi-step read-tool loop (search_tasks/get_task) feeding results back before deciding, falling back to one-shot on error;TriageAgenticTestpasses (commit c3771aa). - Per-team Discord routing —
DiscordActivitySink.deliversteam-scopes channels (PAR-84, done).
Remaining (→ child issue):
- Self-service Discord install — still static token + operator-created guild rows; no OAuth invite /
GuildJoinEvent/ callback. - Self-service UI account creation — Keycloak-only login; workspace wizard exists post-auth but no pre-auth sign-up / welcome wizard / onboarding checklist.
- Optional: embedding/similarity dedup (full-text + LLM today).
Set to In Progress.
tesks · Jun 17, 2026, 8:24 AM
Epic status after working the children:
- Agentic loop — shipped (multi-step read-tool loop).
- Per-team Discord routing (PAR-84) — shipped.
- Self-service onboarding (PAR-213) — shipped: UI onboarding checklist + Keycloak sign-up link (verified), and Discord
GuildJoinEventself-onboarding (compile-verified).
Remaining is optional / ops only: embedding-based duplicate detection (explicitly optional), a pre-filled "Add to Discord" OAuth invite button (needs the Discord app client id), enabling Keycloak realm self-registration, and live Discord verification. Keeping the epic In Progress to track those, but all substantive engineering is done.
tesks · Jun 17, 2026, 8:49 AM
Onboarding is now fully wired: the "Add to Discord" OAuth invite button (tesks-ui 98410f9) and Keycloak self-registration link both functional, plus the empty-workspace onboarding checklist and the Discord GuildJoinEvent auto-onboard.
So every required deliverable under this epic has shipped (agentic loop, per-team routing, self-service Discord install, self-service UI account/onboarding). The only remaining scope is the optional embedding/similarity duplicate detection (the ticket marked it optional) and live Discord verification on the dogfood bot. Leaving In Progress to track the optional item; nothing required is outstanding.
Activity
- paradaux changed status to Status → Done
- tesks commented
- tesks commented
- tesks changed status to Status → In Progress
- tesks commented
- tesks changed status to Status → Pending Release
- ParadauxIO linked a commit — Commit c3771aa — Agentic triage: read-tool loop before deciding (PAR-194)
- tesks created the issue