Implements the frontend plugin UI for the Slack TA Bot, following the existing plugin UI pattern in frontend/plugins/.
Depends on the OAuth connection issue and the Events/RAG issue.
What's included:
- New plugin UI at
frontend/plugins/slack/ registered in frontend/lib/plugins/registry.ts
- OAuth connect/disconnect flow: "Connect to Slack" button → redirects to install URL → shows connected workspace name on return
- After OAuth connection, show a document picker (sourced from
GET /rag/sources) so the teacher can select which docs this bot can access
- Bot configuration form:
bot_name and fallback_message fields, saved via the existing user-plugin config API. Above selection is also saved as allowed_sources in the bot's plugin config
- Response logs table: Paginated view of
GET /logs, showing question, answer, RAG match status, timestamp
- Connection status banner: Shows workspace name when connected, prompt to connect when not
Acceptance Criteria
Implements the frontend plugin UI for the Slack TA Bot, following the existing plugin UI pattern in
frontend/plugins/.Depends on the OAuth connection issue and the Events/RAG issue.
What's included:
frontend/plugins/slack/registered infrontend/lib/plugins/registry.tsGET /rag/sources) so the teacher can select which docs this bot can accessbot_nameandfallback_messagefields, saved via the existing user-plugin config API. Above selection is also saved asallowed_sourcesin the bot's plugin configGET /logs, showing question, answer, RAG match status, timestampAcceptance Criteria
GET /oauth/authorize?connected=true), UI shows connected workspace name and hides the connect buttonGET /rag/sources) enables the teacher to select which docs this bot can accessDELETE /oauth/disconnectand resets the UI to disconnected stateuser-pluginconfig API and shows success/error feedback