brightspace-mcp-server 2.0.0 → 3.0.1

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.
Files changed (83) hide show
  1. package/README.md +35 -52
  2. package/build/api/client.d.ts +32 -7
  3. package/build/api/client.d.ts.map +1 -1
  4. package/build/api/client.js +93 -27
  5. package/build/api/client.js.map +1 -1
  6. package/build/auth/auth-cooldown.d.ts +8 -0
  7. package/build/auth/auth-cooldown.d.ts.map +1 -1
  8. package/build/auth/auth-cooldown.js +15 -2
  9. package/build/auth/auth-cooldown.js.map +1 -1
  10. package/build/auth/auth-lock.d.ts.map +1 -1
  11. package/build/auth/auth-lock.js +51 -3
  12. package/build/auth/auth-lock.js.map +1 -1
  13. package/build/auth/auth-runner.d.ts +15 -4
  14. package/build/auth/auth-runner.d.ts.map +1 -1
  15. package/build/auth/auth-runner.js +128 -109
  16. package/build/auth/auth-runner.js.map +1 -1
  17. package/build/auth/browser-auth.d.ts +2 -1
  18. package/build/auth/browser-auth.d.ts.map +1 -1
  19. package/build/auth/browser-auth.js +15 -4
  20. package/build/auth/browser-auth.js.map +1 -1
  21. package/build/auth/credential-store.d.ts.map +1 -1
  22. package/build/auth/credential-store.js +12 -2
  23. package/build/auth/credential-store.js.map +1 -1
  24. package/build/auth/purdue-sso.d.ts +7 -0
  25. package/build/auth/purdue-sso.d.ts.map +1 -1
  26. package/build/auth/purdue-sso.js +46 -0
  27. package/build/auth/purdue-sso.js.map +1 -1
  28. package/build/auth/sso-flow.d.ts +2 -1
  29. package/build/auth/sso-flow.d.ts.map +1 -1
  30. package/build/auth/sso-flow.js +10 -3
  31. package/build/auth/sso-flow.js.map +1 -1
  32. package/build/auth/suny-sso.d.ts +3 -0
  33. package/build/auth/suny-sso.d.ts.map +1 -1
  34. package/build/auth/suny-sso.js +2 -0
  35. package/build/auth/suny-sso.js.map +1 -1
  36. package/build/auth-cli.js +49 -4
  37. package/build/auth-cli.js.map +1 -1
  38. package/build/index.js +13 -61
  39. package/build/index.js.map +1 -1
  40. package/build/setup.js +32 -13
  41. package/build/setup.js.map +1 -1
  42. package/build/tools/get-assignments.d.ts.map +1 -1
  43. package/build/tools/get-assignments.js +157 -82
  44. package/build/tools/get-assignments.js.map +1 -1
  45. package/build/tools/tool-helpers.d.ts +7 -1
  46. package/build/tools/tool-helpers.d.ts.map +1 -1
  47. package/build/tools/tool-helpers.js +96 -11
  48. package/build/tools/tool-helpers.js.map +1 -1
  49. package/build/utils/browser-install.d.ts +23 -0
  50. package/build/utils/browser-install.d.ts.map +1 -0
  51. package/build/utils/browser-install.js +33 -0
  52. package/build/utils/browser-install.js.map +1 -0
  53. package/build/utils/commands.d.ts +26 -0
  54. package/build/utils/commands.d.ts.map +1 -0
  55. package/build/utils/commands.js +26 -0
  56. package/build/utils/commands.js.map +1 -0
  57. package/build/utils/config.d.ts.map +1 -1
  58. package/build/utils/config.js +4 -2
  59. package/build/utils/config.js.map +1 -1
  60. package/build/utils/download-errors.d.ts +45 -0
  61. package/build/utils/download-errors.d.ts.map +1 -0
  62. package/build/utils/download-errors.js +45 -0
  63. package/build/utils/download-errors.js.map +1 -0
  64. package/build/utils/download-helpers.d.ts.map +1 -1
  65. package/build/utils/download-helpers.js +2 -1
  66. package/build/utils/download-helpers.js.map +1 -1
  67. package/build/utils/file-validator.d.ts +1 -1
  68. package/build/utils/file-validator.d.ts.map +1 -1
  69. package/build/utils/file-validator.js +47 -7
  70. package/build/utils/file-validator.js.map +1 -1
  71. package/build/utils/install-sites.d.ts +61 -0
  72. package/build/utils/install-sites.d.ts.map +1 -0
  73. package/build/utils/install-sites.js +207 -0
  74. package/build/utils/install-sites.js.map +1 -0
  75. package/build/utils/self-update.d.ts +61 -0
  76. package/build/utils/self-update.d.ts.map +1 -0
  77. package/build/utils/self-update.js +92 -0
  78. package/build/utils/self-update.js.map +1 -0
  79. package/build/utils/update-checker.d.ts +85 -7
  80. package/build/utils/update-checker.d.ts.map +1 -1
  81. package/build/utils/update-checker.js +141 -36
  82. package/build/utils/update-checker.js.map +1 -1
  83. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"get-assignments.js","sourceRoot":"","sources":["../../src/tools/get-assignments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-assignments.js","sourceRoot":"","sources":["../../src/tools/get-assignments.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,13 @@
5
5
  */
6
6
  import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
7
7
  /**
8
- * Wrap data as MCP-compatible tool result
8
+ * Wrap data as MCP-compatible tool result.
9
+ *
10
+ * Every tool returns through here, which makes it the one place an update
11
+ * notice can reach a user regardless of which tool they happen to call. The
12
+ * notice is appended as a separate content block so content[0].text stays a
13
+ * pure JSON document for anything parsing it, and it is throttled inside
14
+ * getUpdateNotice so a busy session is not spammed.
9
15
  */
10
16
  export declare function toolResponse(data: unknown): CallToolResult;
11
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAKpE;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAS1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAU7D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA2C5D"}
1
+ {"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAcpE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAY1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAU7D;AA2DD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA+E5D"}
@@ -5,19 +5,32 @@
5
5
  */
6
6
  import { ZodError } from "zod";
7
7
  import { ApiError, RateLimitError, NetworkError } from "../api/index.js";
8
+ import { TokenRefreshError } from "../api/errors.js";
9
+ import { AuthProcessError } from "../auth/auth-runner.js";
8
10
  import { log } from "../utils/logger.js";
11
+ import { AUTH_COMMAND } from "../utils/commands.js";
12
+ import { getUpdateNotice } from "../utils/update-checker.js";
13
+ import { DownloadError, isSafeDetail, } from "../utils/download-errors.js";
9
14
  /**
10
- * Wrap data as MCP-compatible tool result
15
+ * Wrap data as MCP-compatible tool result.
16
+ *
17
+ * Every tool returns through here, which makes it the one place an update
18
+ * notice can reach a user regardless of which tool they happen to call. The
19
+ * notice is appended as a separate content block so content[0].text stays a
20
+ * pure JSON document for anything parsing it, and it is throttled inside
21
+ * getUpdateNotice so a busy session is not spammed.
11
22
  */
12
23
  export function toolResponse(data) {
13
- return {
14
- content: [
15
- {
16
- type: "text",
17
- text: JSON.stringify(data, null, 2),
18
- },
19
- ],
20
- };
24
+ const content = [
25
+ {
26
+ type: "text",
27
+ text: JSON.stringify(data, null, 2),
28
+ },
29
+ ];
30
+ const notice = getUpdateNotice();
31
+ if (notice)
32
+ content.push({ type: "text", text: notice });
33
+ return { content };
21
34
  }
22
35
  /**
23
36
  * Wrap error message as MCP-compatible tool result
@@ -33,6 +46,51 @@ export function errorResponse(message) {
33
46
  isError: true,
34
47
  };
35
48
  }
49
+ /**
50
+ * What to tell the user for each way an automatic sign-in can fail.
51
+ *
52
+ * Authentication is the one failure mode where "an unexpected error occurred"
53
+ * costs the user a fix they could apply themselves, and it now happens inside
54
+ * an ordinary tool call rather than in a dedicated auth step. The text is
55
+ * keyed off AuthProcessError.kind, a closed set this package assigns itself;
56
+ * nothing is derived from the caught message, so a child process cannot put
57
+ * words in the response. The full error still goes to the log.
58
+ */
59
+ const AUTH_FAILURE_GUIDANCE = {
60
+ busy: "A sign-in is already running in another process. Let it finish, then try again.",
61
+ cooldown: "Automatic sign-in is paused because an MFA prompt went unanswered. " +
62
+ `Run \`${AUTH_COMMAND}\` in a terminal to retry now and see the number to enter.`,
63
+ unsupported: "This login needs something your AI client cannot supply, usually a code from an "
64
+ + "authenticator app. " +
65
+ `Run \`${AUTH_COMMAND}\` in a terminal and sign in there.`,
66
+ secureStorage: "The operating system credential store is locked or unavailable, so the saved " +
67
+ "password could not be read. Unlock your keychain or keyring, then try again.",
68
+ transport: "Brightspace could not be reached to sign in. The saved session was kept. " +
69
+ "Check your connection and try again in a few minutes.",
70
+ timeout: "The sign-in did not finish in time, usually a missed MFA prompt. " +
71
+ `Run \`${AUTH_COMMAND}\` in a terminal to complete it with the number visible.`,
72
+ failed: `The sign-in did not complete. Run \`${AUTH_COMMAND}\` in a terminal to see why, ` +
73
+ "or `brightspace-setup` if your saved school or username is wrong.",
74
+ };
75
+ /**
76
+ * What to tell someone when a download fails.
77
+ *
78
+ * Same contract as AUTH_FAILURE_GUIDANCE: keyed off a kind this package
79
+ * assigns, never off the caught message, so a Content-Disposition header or a
80
+ * file body cannot put words in a tool response. The only value that crosses
81
+ * from the remote side is a detected MIME type, and only after isSafeDetail
82
+ * confirms it is a bare type token.
83
+ */
84
+ const DOWNLOAD_FAILURE_GUIDANCE = {
85
+ unsupportedType: "The file's format is not on the allowed download list. " +
86
+ "Open it from Brightspace in a browser instead.",
87
+ undetectableType: "The file's format could not be identified, so it was not saved. " +
88
+ "This usually means Brightspace returned an error page instead of the file.",
89
+ badFilename: "The name Brightspace gave this file cannot be used on disk. " +
90
+ "Pass customFilename to choose one yourself.",
91
+ pathTraversal: "The name Brightspace gave this file pointed outside the download " +
92
+ "directory and was refused. Pass customFilename to choose one yourself.",
93
+ };
36
94
  /**
37
95
  * Sanitize errors for user-friendly messages
38
96
  *
@@ -41,14 +99,41 @@ export function errorResponse(message) {
41
99
  export function sanitizeError(error) {
42
100
  // Log full error to stderr for debugging (token redaction handled by logger)
43
101
  log("ERROR", "Tool error", error);
102
+ // Authentication runs inside the tool call now, so its failures surface
103
+ // here rather than from a dedicated auth tool. Checked first: the kind
104
+ // carries guidance that the generic branches below would throw away.
105
+ if (error instanceof AuthProcessError) {
106
+ return errorResponse(`Could not sign in to Brightspace automatically. ${AUTH_FAILURE_GUIDANCE[error.kind]}`);
107
+ }
108
+ // Checked before NetworkError, which it extends: a token service that is
109
+ // briefly down is not a dead internet connection, and the saved session
110
+ // survives it.
111
+ if (error instanceof TokenRefreshError) {
112
+ return errorResponse("Brightspace could not renew your session right now. Your saved login was kept. " +
113
+ "Try again in a few minutes.");
114
+ }
44
115
  // Map to user-friendly messages
116
+ // Without this every validation failure lands in the generic fallback, which
117
+ // is how a .doc download reported nothing more than "unexpected error".
118
+ if (error instanceof DownloadError) {
119
+ const detail = error.detail && isSafeDetail(error.detail)
120
+ ? ` (detected type: ${error.detail})`
121
+ : "";
122
+ return errorResponse(`Could not save the file.${detail} ${DOWNLOAD_FAILURE_GUIDANCE[error.kind]}`);
123
+ }
45
124
  if (error instanceof ApiError) {
46
125
  if (error.status === 404) {
47
126
  return errorResponse("Resource not found. The course or item may not exist, or you may not have access.");
48
127
  }
49
128
  if (error.status === 401) {
50
- return errorResponse("Authentication expired. Auto-reauthentication was attempted but failed. " +
51
- "Please run `brightspace-auth` manually in your terminal, then try again.");
129
+ // A stale install is a common cause of sign-in failing, so this is the
130
+ // one error worth attaching the update notice to.
131
+ const result = errorResponse("Authentication expired. Auto-reauthentication was attempted but failed. " +
132
+ `Please run \`${AUTH_COMMAND}\` in your terminal, then try again.`);
133
+ const notice = getUpdateNotice();
134
+ if (notice)
135
+ result.content.push({ type: "text", text: notice });
136
+ return result;
52
137
  }
53
138
  if (error.status === 403) {
54
139
  return errorResponse("Access denied. You may not have permission to access this resource.");
@@ -1 +1 @@
1
- {"version":3,"file":"tool-helpers.js","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,6EAA6E;IAC7E,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAElC,gCAAgC;IAChC,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,aAAa,CAClB,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,aAAa,CAClB,0EAA0E;gBAC1E,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,aAAa,CAClB,qEAAqE,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,aAAa,CAClB,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,aAAa,CAClB,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,OAAO,aAAa,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,mBAAmB;IACnB,OAAO,aAAa,CAAC,iDAAiD,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"tool-helpers.js","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Brightspace MCP Server. Copyright (c) 2026 Rohan Muppa. MIT licensed.
3
+ *
4
+ * Recognising a missing Playwright browser.
5
+ *
6
+ * This package's postinstall downloads Chromium. npm skips postinstall under
7
+ * `--ignore-scripts` and under the newer allow-scripts policy, both of which
8
+ * are common on global installs, so the package can land without a browser and
9
+ * fail only later, at first sign-in.
10
+ *
11
+ * Playwright's own message does say what to run, but by the time it has been
12
+ * wrapped in BrowserAuthError and then flattened into a generic
13
+ * "Authentication failed" by the auth runner, the actionable command is gone.
14
+ * Matching the error lets us keep the fix attached to the failure.
15
+ *
16
+ * Matching reactively rather than probing for the executable up front keeps us
17
+ * off Playwright's internals, and means no false positives: this only ever
18
+ * fires after a launch has genuinely failed.
19
+ */
20
+ export declare const PLAYWRIGHT_INSTALL_HINT: string;
21
+ /** True when an error is Playwright reporting that no browser binary exists. */
22
+ export declare function isMissingBrowserError(error: unknown): boolean;
23
+ //# sourceMappingURL=browser-install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-install.d.ts","sourceRoot":"","sources":["../../src/utils/browser-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,eAAO,MAAM,uBAAuB,QAKoD,CAAC;AAEzF,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAO7D"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Brightspace MCP Server. Copyright (c) 2026 Rohan Muppa. MIT licensed.
3
+ *
4
+ * Recognising a missing Playwright browser.
5
+ *
6
+ * This package's postinstall downloads Chromium. npm skips postinstall under
7
+ * `--ignore-scripts` and under the newer allow-scripts policy, both of which
8
+ * are common on global installs, so the package can land without a browser and
9
+ * fail only later, at first sign-in.
10
+ *
11
+ * Playwright's own message does say what to run, but by the time it has been
12
+ * wrapped in BrowserAuthError and then flattened into a generic
13
+ * "Authentication failed" by the auth runner, the actionable command is gone.
14
+ * Matching the error lets us keep the fix attached to the failure.
15
+ *
16
+ * Matching reactively rather than probing for the executable up front keeps us
17
+ * off Playwright's internals, and means no false positives: this only ever
18
+ * fires after a launch has genuinely failed.
19
+ */
20
+ import { CLEAR_NPX_CACHE_COMMAND } from "./commands.js";
21
+ export const PLAYWRIGHT_INSTALL_HINT = "Chromium is not installed, so sign-in cannot start. Your package manager " +
22
+ "skipped this package's postinstall script, which is what normally downloads it " +
23
+ "(common with --ignore-scripts or an allow-scripts policy). Run: " +
24
+ "npx playwright install chromium" +
25
+ `. If that does not help, reinstall and clear caches with ${CLEAR_NPX_CACHE_COMMAND}.`;
26
+ /** True when an error is Playwright reporting that no browser binary exists. */
27
+ export function isMissingBrowserError(error) {
28
+ const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
29
+ if (!message)
30
+ return false;
31
+ return /Executable doesn't exist|playwright install|Failed to launch.*because executable doesn't exist/i.test(message);
32
+ }
33
+ //# sourceMappingURL=browser-install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-install.js","sourceRoot":"","sources":["../../src/utils/browser-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,CAAC,MAAM,uBAAuB,GAClC,2EAA2E;IAC3E,iFAAiF;IACjF,kEAAkE;IAClE,iCAAiC;IACjC,4DAA4D,uBAAuB,GAAG,CAAC;AAEzF,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,iGAAiG,CAAC,IAAI,CAC3G,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Brightspace MCP Server. Copyright (c) 2026 Rohan Muppa. MIT licensed.
3
+ *
4
+ * Canonical command strings shown to users.
5
+ *
6
+ * Every npx command here is pinned to @latest deliberately. Invoking npx with
7
+ * a bare package name, no version tag, prefers a binary already on PATH, so on
8
+ * a machine with an old global install it silently runs that stale copy
9
+ * instead of fetching the current release. That is exactly how a healthy
10
+ * v2.0.0 server ended up printing instructions that executed v1.2.6, whose
11
+ * sign-in flow no longer worked. Pinning makes every printed command
12
+ * self-updating.
13
+ *
14
+ * Import these instead of writing the command inline. A release test greps the
15
+ * source for untagged forms and fails the build if one reappears.
16
+ */
17
+ export declare const PACKAGE_NAME = "brightspace-mcp-server";
18
+ /** Re-authenticate. Always runs the current published release. */
19
+ export declare const AUTH_COMMAND = "npx -y brightspace-mcp-server@latest auth";
20
+ /** Re-run the setup wizard. Always runs the current published release. */
21
+ export declare const SETUP_COMMAND = "npx -y brightspace-mcp-server@latest setup";
22
+ /** Bring a global install up to date. The only fix for a stale `npm i -g` copy. */
23
+ export declare const GLOBAL_INSTALL_COMMAND = "npm install -g brightspace-mcp-server@latest";
24
+ /** Drop cached npx copies so the next `@latest` genuinely refetches. */
25
+ export declare const CLEAR_NPX_CACHE_COMMAND = "npx clear-npx-cache";
26
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/utils/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,YAAY,2BAA2B,CAAC;AAErD,kEAAkE;AAClE,eAAO,MAAM,YAAY,8CAAuC,CAAC;AAEjE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,+CAAwC,CAAC;AAEnE,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,iDAA0C,CAAC;AAE9E,wEAAwE;AACxE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Brightspace MCP Server. Copyright (c) 2026 Rohan Muppa. MIT licensed.
3
+ *
4
+ * Canonical command strings shown to users.
5
+ *
6
+ * Every npx command here is pinned to @latest deliberately. Invoking npx with
7
+ * a bare package name, no version tag, prefers a binary already on PATH, so on
8
+ * a machine with an old global install it silently runs that stale copy
9
+ * instead of fetching the current release. That is exactly how a healthy
10
+ * v2.0.0 server ended up printing instructions that executed v1.2.6, whose
11
+ * sign-in flow no longer worked. Pinning makes every printed command
12
+ * self-updating.
13
+ *
14
+ * Import these instead of writing the command inline. A release test greps the
15
+ * source for untagged forms and fails the build if one reappears.
16
+ */
17
+ export const PACKAGE_NAME = "brightspace-mcp-server";
18
+ /** Re-authenticate. Always runs the current published release. */
19
+ export const AUTH_COMMAND = `npx -y ${PACKAGE_NAME}@latest auth`;
20
+ /** Re-run the setup wizard. Always runs the current published release. */
21
+ export const SETUP_COMMAND = `npx -y ${PACKAGE_NAME}@latest setup`;
22
+ /** Bring a global install up to date. The only fix for a stale `npm i -g` copy. */
23
+ export const GLOBAL_INSTALL_COMMAND = `npm install -g ${PACKAGE_NAME}@latest`;
24
+ /** Drop cached npx copies so the next `@latest` genuinely refetches. */
25
+ export const CLEAR_NPX_CACHE_COMMAND = "npx clear-npx-cache";
26
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/utils/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAErD,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,YAAY,cAAc,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,YAAY,eAAe,CAAC;AAEnE,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,YAAY,SAAS,CAAC;AAE9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAoErD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhG;AASD,YAAY,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,wBAAsB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAsErD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhG;AASD,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -25,8 +25,10 @@ export async function loadConfig() {
25
25
  : store?.sessionDir
26
26
  ? expandTilde(store.sessionDir)
27
27
  : path.join(os.homedir(), ".d2l-session");
28
- // Authentication always runs without a visible browser in v2.
29
- const headless = true;
28
+ // Code-entry and other interactive MFA methods need a visible browser.
29
+ const headless = process.env.D2L_HEADLESS !== undefined
30
+ ? process.env.D2L_HEADLESS !== "false"
31
+ : store?.headless ?? true;
30
32
  // Resolve tokenTtl: env > store > default (3600)
31
33
  const tokenTtl = process.env.D2L_TOKEN_TTL
32
34
  ? parseInt(process.env.D2L_TOKEN_TTL, 10)
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Purdue Brightspace MCP Server
3
+ * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
+ * Licensed under MIT — see LICENSE file for details.
5
+ *
6
+ * Typed download failures.
7
+ *
8
+ * A download that failed validation used to throw a plain Error, which
9
+ * sanitizeError has no branch for, so every one of them reached the user as
10
+ * "An unexpected error occurred. Please try again." That is the least useful
11
+ * sentence available, and it hid a real bug for as long as the tool has
12
+ * existed: no legacy Office file could ever be downloaded.
13
+ *
14
+ * The guidance keyed off `kind` follows the same contract as the auth table:
15
+ * the text is chosen from a closed set this package controls, never built from
16
+ * a caught message. That matters here more than on the auth path, because a
17
+ * download error message can embed a MIME type and a filename that both
18
+ * originate from remote HTTP headers or remote file bytes.
19
+ */
20
+ /** Closed set of ways a download can fail before the bytes reach disk. */
21
+ export type DownloadFailureKind = "unsupportedType" | "undetectableType" | "badFilename" | "pathTraversal";
22
+ export declare class DownloadError extends Error {
23
+ readonly kind: DownloadFailureKind;
24
+ /**
25
+ * One short fact worth showing the user, currently only a detected MIME
26
+ * type. Rendered only after isSafeDetail approves it, so a crafted
27
+ * Content-Disposition header or file body cannot put prose in a response.
28
+ */
29
+ readonly detail?: string | undefined;
30
+ constructor(kind: DownloadFailureKind, message: string,
31
+ /**
32
+ * One short fact worth showing the user, currently only a detected MIME
33
+ * type. Rendered only after isSafeDetail approves it, so a crafted
34
+ * Content-Disposition header or file body cannot put prose in a response.
35
+ */
36
+ detail?: string | undefined);
37
+ }
38
+ /**
39
+ * True only for something shaped like a bare MIME type.
40
+ *
41
+ * This is the narrowest shape that still answers "what actually went wrong",
42
+ * and it admits no spaces, so no free text, path, or response body can pass.
43
+ */
44
+ export declare function isSafeDetail(value: string): boolean;
45
+ //# sourceMappingURL=download-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-errors.d.ts","sourceRoot":"","sources":["../../src/utils/download-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,eAAe,CAAC;AAEpB,qBAAa,aAAc,SAAQ,KAAK;aAEpB,IAAI,EAAE,mBAAmB;IAEzC;;;;OAIG;aACa,MAAM,CAAC,EAAE,MAAM;gBAPf,IAAI,EAAE,mBAAmB,EACzC,OAAO,EAAE,MAAM;IACf;;;;OAIG;IACa,MAAM,CAAC,EAAE,MAAM,YAAA;CAKlC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Purdue Brightspace MCP Server
3
+ * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
+ * Licensed under MIT — see LICENSE file for details.
5
+ *
6
+ * Typed download failures.
7
+ *
8
+ * A download that failed validation used to throw a plain Error, which
9
+ * sanitizeError has no branch for, so every one of them reached the user as
10
+ * "An unexpected error occurred. Please try again." That is the least useful
11
+ * sentence available, and it hid a real bug for as long as the tool has
12
+ * existed: no legacy Office file could ever be downloaded.
13
+ *
14
+ * The guidance keyed off `kind` follows the same contract as the auth table:
15
+ * the text is chosen from a closed set this package controls, never built from
16
+ * a caught message. That matters here more than on the auth path, because a
17
+ * download error message can embed a MIME type and a filename that both
18
+ * originate from remote HTTP headers or remote file bytes.
19
+ */
20
+ export class DownloadError extends Error {
21
+ kind;
22
+ detail;
23
+ constructor(kind, message,
24
+ /**
25
+ * One short fact worth showing the user, currently only a detected MIME
26
+ * type. Rendered only after isSafeDetail approves it, so a crafted
27
+ * Content-Disposition header or file body cannot put prose in a response.
28
+ */
29
+ detail) {
30
+ super(message);
31
+ this.kind = kind;
32
+ this.detail = detail;
33
+ this.name = "DownloadError";
34
+ }
35
+ }
36
+ /**
37
+ * True only for something shaped like a bare MIME type.
38
+ *
39
+ * This is the narrowest shape that still answers "what actually went wrong",
40
+ * and it admits no spaces, so no free text, path, or response body can pass.
41
+ */
42
+ export function isSafeDetail(value) {
43
+ return value.length <= 64 && /^[a-z0-9][a-z0-9.+-]*\/[a-z0-9][a-z0-9.+-]*$/.test(value);
44
+ }
45
+ //# sourceMappingURL=download-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-errors.js","sourceRoot":"","sources":["../../src/utils/download-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB;IAOA;IARlB,YACkB,IAAyB,EACzC,OAAe;IACf;;;;OAIG;IACa,MAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QATC,SAAI,GAAJ,IAAI,CAAqB;QAOzB,WAAM,GAAN,MAAM,CAAS;QAG/B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,8CAA8C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"download-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/download-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiDxD"}
1
+ {"version":3,"file":"download-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/download-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkDxD"}
@@ -72,7 +72,8 @@ export async function secureDownload(options) {
72
72
  }
73
73
  log("DEBUG", `secureDownload: file size ${size} bytes (within limit)`);
74
74
  // Validate file type via magic bytes
75
- const { mime } = await validateFileType(data, allowedTypes);
75
+ // The filename decides which legacy Office format a CFB container is.
76
+ const { mime } = await validateFileType(data, allowedTypes, filename);
76
77
  log("DEBUG", `secureDownload: file type validated as ${mime}`);
77
78
  // Validate download path (prevent path traversal)
78
79
  const validatedPath = validateDownloadPath(targetDir, filename);
@@ -1 +1 @@
1
- {"version":3,"file":"download-helpers.js","sourceRoot":"","sources":["../../src/utils/download-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download-helpers.js","sourceRoot":"","sources":["../../src/utils/download-helpers.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export declare function validateDownloadPath(baseDir: string, filename: string):
31
31
  * @returns Detected MIME type and extension
32
32
  * @throws Error if file type not allowed
33
33
  */
34
- export declare function validateFileType(buffer: Buffer, allowedTypes?: string[]): Promise<{
34
+ export declare function validateFileType(buffer: Buffer, allowedTypes?: string[], filename?: string): Promise<{
35
35
  mime: string;
36
36
  ext: string;
37
37
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"file-validator.d.ts","sourceRoot":"","sources":["../../src/utils/file-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAmB,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EA4BtC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,CAwBR;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,MAAM,EAAuB,GAC1C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAyCxC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAQrD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAM1E"}
1
+ {"version":3,"file":"file-validator.d.ts","sourceRoot":"","sources":["../../src/utils/file-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+BH;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAmB,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EA4BtC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,CA+BR;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,MAAM,EAAuB,EAC3C,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAwDxC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAQrD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAM1E"}