brightspace-mcp-server 3.9.12 → 3.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -295,11 +295,18 @@ export class PurdueSSOFlow {
295
295
  return await this.hasCoVisiblePassword(page) && !await this.anyVisible(page, EMAIL_SELECTORS);
296
296
  }
297
297
  async hasPostCredentialChallenge(page) {
298
+ // Entra can land directly on its bare verification-code form - no
299
+ // number-match digits, no #idDiv_SAOTCAS_Title/#idDiv_SAOTCC_Title
300
+ // heading - when resuming a restored session. Without MFA_CODE_SELECTORS
301
+ // here, login() concluded no challenge was present and re-ran
302
+ // enterCredentials against a page with no username/password field.
303
+ // Idea from ElliotDrel/brightspace-mcp (branch codex/purdue-totp).
298
304
  return this.duoMfa.isChallenge(page) || await this.anyVisible(page, [
299
305
  NUMBER_MATCH_SELECTOR,
300
306
  "#idDiv_SAOTCAS_Title",
301
307
  "#idDiv_SAOTCC_Title",
302
308
  "#KmsiCheckboxField",
309
+ ...MFA_CODE_SELECTORS,
303
310
  ]);
304
311
  }
305
312
  /** Brightspace Bar's bounded number/auth/KMSI polling loop. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brightspace-mcp-server",
3
- "version": "3.9.12",
3
+ "version": "3.9.13",
4
4
  "mcpName": "io.github.rohanmuppa/brightspace",
5
5
  "description": "MCP server for Brightspace (D2L). Check grades, due dates, assignments, announcements, syllabus, rosters and more via Claude, ChatGPT, Cursor, Windsurf, or any MCP client.",
6
6
  "type": "module",