Paradaux

PAR-194

0

[Epic] Agentic Discord bot + self-service onboarding

DoneNormalUnassignedTesksFeature

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.completeTriageDecision enum + hardcoded switch (tesks/.../triage/TriageService.java) with OpenAI tool-calling over the MCP/TaskSystem surface, 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 to ActivityEvent and a per-team channel map.
  • Self-service Discord install: OAuth invite + GuildJoinEvent onboarding; remove reliance on a static DISCORD_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

Comments

tesks · Jun 17, 2026, 4:12 AM

Verified — partially delivered, keeping open.

Shipped & live:

  • True agentic loopTriageService.decideAgentic runs a bounded multi-step read-tool loop (search_tasks/get_task) feeding results back before deciding, falling back to one-shot on error; TriageAgenticTest passes (commit c3771aa).
  • Per-team Discord routingDiscordActivitySink.delivers team-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 GuildJoinEvent self-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