brightspace-mcp-server 1.2.5 → 1.5.0
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.
- package/README.md +9 -2
- package/build/api/cache.d.ts +1 -1
- package/build/api/cache.js +1 -1
- package/build/api/client.d.ts +1 -1
- package/build/api/client.d.ts.map +1 -1
- package/build/api/client.js +25 -3
- package/build/api/client.js.map +1 -1
- package/build/api/errors.d.ts +2 -2
- package/build/api/errors.js +2 -2
- package/build/api/index.d.ts +1 -1
- package/build/api/index.js +1 -1
- package/build/api/rate-limiter.d.ts +2 -2
- package/build/api/rate-limiter.js +2 -2
- package/build/api/types.d.ts +1 -1
- package/build/api/types.js +1 -1
- package/build/api/version-discovery.d.ts +2 -2
- package/build/api/version-discovery.js +2 -2
- package/build/auth/auth-runner.d.ts +2 -2
- package/build/auth/auth-runner.d.ts.map +1 -1
- package/build/auth/auth-runner.js +61 -12
- package/build/auth/auth-runner.js.map +1 -1
- package/build/auth/browser-auth.d.ts +35 -1
- package/build/auth/browser-auth.d.ts.map +1 -1
- package/build/auth/browser-auth.js +219 -28
- package/build/auth/browser-auth.js.map +1 -1
- package/build/auth/index.d.ts +5 -2
- package/build/auth/index.d.ts.map +1 -1
- package/build/auth/index.js +4 -2
- package/build/auth/index.js.map +1 -1
- package/build/auth/purdue-sso.d.ts +30 -1
- package/build/auth/purdue-sso.d.ts.map +1 -1
- package/build/auth/purdue-sso.js +144 -17
- package/build/auth/purdue-sso.js.map +1 -1
- package/build/auth/session-store.d.ts +1 -1
- package/build/auth/session-store.js +1 -1
- package/build/auth/sso-flow.d.ts +24 -0
- package/build/auth/sso-flow.d.ts.map +1 -0
- package/build/auth/sso-flow.js +21 -0
- package/build/auth/sso-flow.js.map +1 -0
- package/build/auth/suny-sso.d.ts +49 -0
- package/build/auth/suny-sso.d.ts.map +1 -0
- package/build/auth/suny-sso.js +146 -0
- package/build/auth/suny-sso.js.map +1 -0
- package/build/auth/token-manager.d.ts +29 -2
- package/build/auth/token-manager.d.ts.map +1 -1
- package/build/auth/token-manager.js +83 -4
- package/build/auth/token-manager.js.map +1 -1
- package/build/auth/token-mint.d.ts +32 -0
- package/build/auth/token-mint.d.ts.map +1 -0
- package/build/auth/token-mint.js +71 -0
- package/build/auth/token-mint.js.map +1 -0
- package/build/auth-cli.d.ts +1 -1
- package/build/auth-cli.js +9 -4
- package/build/auth-cli.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.js +6 -2
- package/build/index.js.map +1 -1
- package/build/setup.d.ts +2 -2
- package/build/setup.js +30 -4
- package/build/setup.js.map +1 -1
- package/build/tools/download-file.d.ts +6 -2
- package/build/tools/download-file.d.ts.map +1 -1
- package/build/tools/download-file.js +27 -7
- package/build/tools/download-file.js.map +1 -1
- package/build/tools/get-announcements.d.ts +65 -2
- package/build/tools/get-announcements.d.ts.map +1 -1
- package/build/tools/get-announcements.js +69 -25
- package/build/tools/get-announcements.js.map +1 -1
- package/build/tools/get-assignments.d.ts +8 -2
- package/build/tools/get-assignments.d.ts.map +1 -1
- package/build/tools/get-assignments.js +76 -17
- package/build/tools/get-assignments.js.map +1 -1
- package/build/tools/get-classlist-emails.d.ts +2 -2
- package/build/tools/get-classlist-emails.js +2 -2
- package/build/tools/get-course-content.d.ts +2 -2
- package/build/tools/get-course-content.js +2 -2
- package/build/tools/get-discussions.d.ts +1 -1
- package/build/tools/get-discussions.js +1 -1
- package/build/tools/get-my-courses.d.ts +2 -2
- package/build/tools/get-my-courses.d.ts.map +1 -1
- package/build/tools/get-my-courses.js +10 -4
- package/build/tools/get-my-courses.js.map +1 -1
- package/build/tools/get-my-grades.d.ts +1 -1
- package/build/tools/get-my-grades.js +1 -1
- package/build/tools/get-roster.d.ts +2 -2
- package/build/tools/get-roster.js +2 -2
- package/build/tools/get-syllabus.d.ts +1 -1
- package/build/tools/get-syllabus.js +1 -1
- package/build/tools/get-upcoming-due-dates.d.ts +2 -2
- package/build/tools/get-upcoming-due-dates.d.ts.map +1 -1
- package/build/tools/get-upcoming-due-dates.js +121 -45
- package/build/tools/get-upcoming-due-dates.js.map +1 -1
- package/build/tools/index.d.ts +2 -2
- package/build/tools/index.js +2 -2
- package/build/tools/schemas.d.ts +3 -3
- package/build/tools/schemas.d.ts.map +1 -1
- package/build/tools/schemas.js +11 -5
- package/build/tools/schemas.js.map +1 -1
- package/build/tools/tool-helpers.d.ts +1 -1
- package/build/tools/tool-helpers.js +1 -1
- package/build/types/index.d.ts +12 -2
- package/build/types/index.d.ts.map +1 -1
- package/build/types/index.js +2 -2
- package/build/update.d.ts +1 -1
- package/build/update.js +1 -1
- package/build/utils/config-store.d.ts +3 -2
- package/build/utils/config-store.d.ts.map +1 -1
- package/build/utils/config-store.js +2 -2
- package/build/utils/config-store.js.map +1 -1
- package/build/utils/config.d.ts +2 -2
- package/build/utils/config.d.ts.map +1 -1
- package/build/utils/config.js +3 -2
- package/build/utils/config.js.map +1 -1
- package/build/utils/course-filter.d.ts +2 -2
- package/build/utils/course-filter.js +2 -2
- package/build/utils/deep-links.d.ts +15 -0
- package/build/utils/deep-links.d.ts.map +1 -0
- package/build/utils/deep-links.js +31 -0
- package/build/utils/deep-links.js.map +1 -0
- package/build/utils/download-helpers.d.ts +2 -2
- package/build/utils/download-helpers.js +2 -2
- package/build/utils/errors.d.ts +2 -2
- package/build/utils/errors.js +2 -2
- package/build/utils/file-validator.d.ts +2 -2
- package/build/utils/file-validator.d.ts.map +1 -1
- package/build/utils/file-validator.js +21 -11
- package/build/utils/file-validator.js.map +1 -1
- package/build/utils/html-converter.d.ts +2 -2
- package/build/utils/html-converter.js +2 -2
- package/build/utils/logger.d.ts +2 -2
- package/build/utils/logger.js +2 -2
- package/build/utils/pdf-extractor.d.ts +2 -2
- package/build/utils/pdf-extractor.js +2 -2
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
import { log } from "./logger.js";
|
|
7
7
|
/**
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
/** Link to the submit-files page of a dropbox folder. */
|
|
7
|
+
export declare function assignmentUrl(baseUrl: string, courseId: number, folderId: number): string;
|
|
8
|
+
/** Link to the summary page of a quiz. */
|
|
9
|
+
export declare function quizUrl(baseUrl: string, courseId: number, quizId: number): string;
|
|
10
|
+
/**
|
|
11
|
+
* Link to a course's own grades page. There is no per-column page a student
|
|
12
|
+
* may open, so every gradebook row in a course shares this one link.
|
|
13
|
+
*/
|
|
14
|
+
export declare function gradebookUrl(baseUrl: string, courseId: number): string;
|
|
15
|
+
//# sourceMappingURL=deep-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-links.d.ts","sourceRoot":"","sources":["../../src/utils/deep-links.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,yDAAyD;AACzD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,0CAA0C;AAC1C,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* Deep links into the Brightspace web UI.
|
|
8
|
+
*
|
|
9
|
+
* The templates were harvested from live Brightspace markup: they are the same
|
|
10
|
+
* URLs the course pages themselves link to, so they open the item directly.
|
|
11
|
+
*/
|
|
12
|
+
/** Drop trailing slashes so the templates below join cleanly. */
|
|
13
|
+
function trimBaseUrl(baseUrl) {
|
|
14
|
+
return baseUrl.replace(/\/+$/, "");
|
|
15
|
+
}
|
|
16
|
+
/** Link to the submit-files page of a dropbox folder. */
|
|
17
|
+
export function assignmentUrl(baseUrl, courseId, folderId) {
|
|
18
|
+
return `${trimBaseUrl(baseUrl)}/d2l/lms/dropbox/user/folder_submit_files.d2l?db=${folderId}&grpid=0&ou=${courseId}`;
|
|
19
|
+
}
|
|
20
|
+
/** Link to the summary page of a quiz. */
|
|
21
|
+
export function quizUrl(baseUrl, courseId, quizId) {
|
|
22
|
+
return `${trimBaseUrl(baseUrl)}/d2l/lms/quizzing/user/quiz_summary.d2l?qi=${quizId}&ou=${courseId}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Link to a course's own grades page. There is no per-column page a student
|
|
26
|
+
* may open, so every gradebook row in a course shares this one link.
|
|
27
|
+
*/
|
|
28
|
+
export function gradebookUrl(baseUrl, courseId) {
|
|
29
|
+
return `${trimBaseUrl(baseUrl)}/d2l/lms/grades/my_grades/main.d2l?ou=${courseId}`;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=deep-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-links.js","sourceRoot":"","sources":["../../src/utils/deep-links.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,iEAAiE;AACjE,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,QAAgB,EAChB,QAAgB;IAEhB,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,oDAAoD,QAAQ,eAAe,QAAQ,EAAE,CAAC;AACtH,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,OAAO,CACrB,OAAe,EACf,QAAgB,EAChB,MAAc;IAEd,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,8CAA8C,MAAM,OAAO,QAAQ,EAAE,CAAC;AACtG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,QAAgB;IAC5D,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,yCAAyC,QAAQ,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Resolve filename conflicts by appending (1), (2), etc.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
import fs from "node:fs/promises";
|
|
7
7
|
import path from "node:path";
|
package/build/utils/errors.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
export declare class AuthError extends Error {
|
|
7
7
|
readonly cause?: Error | undefined;
|
package/build/utils/errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
export class AuthError extends Error {
|
|
7
7
|
cause;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Maximum file size for downloads (50 MB).
|
|
@@ -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,
|
|
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,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { fileTypeFromBuffer } from "file-type";
|
|
@@ -88,15 +88,25 @@ export async function validateFileType(buffer, allowedTypes = ALLOWED_MIME_TYPES
|
|
|
88
88
|
}
|
|
89
89
|
return { mime: detected.mime, ext: detected.ext };
|
|
90
90
|
}
|
|
91
|
-
// Fallback for text files
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
91
|
+
// Fallback for text-based files with no magic-byte signature: accept if the
|
|
92
|
+
// buffer decodes as UTF-8 (rejecting binaries and NUL bytes), then sniff HTML.
|
|
93
|
+
if (!buffer.includes(0)) {
|
|
94
|
+
let decoded = null;
|
|
95
|
+
try {
|
|
96
|
+
decoded = new TextDecoder("utf-8", { fatal: true }).decode(buffer);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Invalid UTF-8 — treat as binary.
|
|
100
|
+
}
|
|
101
|
+
if (decoded !== null) {
|
|
102
|
+
const noBom = decoded.charCodeAt(0) === 0xfeff ? decoded.slice(1) : decoded;
|
|
103
|
+
const head = noBom.trimStart().toLowerCase();
|
|
104
|
+
const isHtml = head.startsWith("<!doctype html") || head.startsWith("<html");
|
|
105
|
+
const mime = isHtml ? "text/html" : "text/plain";
|
|
106
|
+
const ext = isHtml ? "html" : "txt";
|
|
107
|
+
if (allowedTypes.includes(mime)) {
|
|
108
|
+
return { mime, ext };
|
|
109
|
+
}
|
|
100
110
|
}
|
|
101
111
|
}
|
|
102
112
|
throw new Error("Could not determine file type or type not allowed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-validator.js","sourceRoot":"","sources":["../../src/utils/file-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,YAAY;IACZ,iBAAiB;IACjB,yEAAyE,EAAE,QAAQ;IACnF,2EAA2E,EAAE,QAAQ;IACrF,mEAAmE,EAAE,QAAQ;IAC7E,oBAAoB,EAAE,OAAO;IAC7B,+BAA+B,EAAE,OAAO;IACxC,0BAA0B,EAAE,OAAO;IACnC,SAAS;IACT,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,eAAe;IACf,OAAO;IACP,YAAY;IACZ,UAAU;IACV,WAAW;IACX,OAAO;IACP,kBAAkB;IAClB,WAAW;IACX,iBAAiB;IACjB,8BAA8B;IAC9B,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,QAAgB;IAEhB,gCAAgC;IAChC,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE7C,gEAAgE;IAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,gDAAgD;IAChD,IACE,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;QAC7C,QAAQ,KAAK,YAAY,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,eAAyB,kBAAkB;IAE3C,iCAAiC;IACjC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,cAAc,QAAQ,CAAC,IAAI,iCAAiC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"file-validator.js","sourceRoot":"","sources":["../../src/utils/file-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Convert D2L HTML content to clean markdown.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
import TurndownService from "turndown";
|
|
7
7
|
/**
|
package/build/utils/logger.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
import type { LogLevel } from "../types/index.js";
|
|
7
7
|
export declare function setLogLevel(level: LogLevel): void;
|
package/build/utils/logger.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
let currentLevel = "INFO";
|
|
7
7
|
const LEVEL_ORDER = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Extract text content from a PDF buffer.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Purdue Brightspace MCP Server
|
|
3
|
-
* Copyright (c)
|
|
4
|
-
* Licensed under
|
|
3
|
+
* Copyright (c) 2026 Rohan Muppa. All rights reserved.
|
|
4
|
+
* Licensed under MIT — see LICENSE file for details.
|
|
5
5
|
*/
|
|
6
6
|
import { extractText } from "unpdf";
|
|
7
7
|
import { log } from "./logger.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "brightspace-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
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",
|