teams-api 1.5.0 → 1.6.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.
- package/README.md +128 -10
- package/dist/actions/definitions.d.ts.map +1 -1
- package/dist/actions/definitions.js +2 -0
- package/dist/actions/definitions.js.map +1 -1
- package/dist/actions/file-actions.d.ts.map +1 -1
- package/dist/actions/file-actions.js +3 -1
- package/dist/actions/file-actions.js.map +1 -1
- package/dist/actions/image-description-actions.d.ts +28 -0
- package/dist/actions/image-description-actions.d.ts.map +1 -0
- package/dist/actions/image-description-actions.js +148 -0
- package/dist/actions/image-description-actions.js.map +1 -0
- package/dist/actions/message-actions.d.ts.map +1 -1
- package/dist/actions/message-actions.js +153 -3
- package/dist/actions/message-actions.js.map +1 -1
- package/dist/api/chat-service.d.ts +0 -10
- package/dist/api/chat-service.d.ts.map +1 -1
- package/dist/api/chat-service.js +10 -38
- package/dist/api/chat-service.js.map +1 -1
- package/dist/api/common.d.ts +4 -0
- package/dist/api/common.d.ts.map +1 -1
- package/dist/api/common.js +10 -1
- package/dist/api/common.js.map +1 -1
- package/dist/api/image-description.d.ts +20 -0
- package/dist/api/image-description.d.ts.map +1 -0
- package/dist/api/image-description.js +77 -0
- package/dist/api/image-description.js.map +1 -0
- package/dist/audit.d.ts +17 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +53 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth/auto-login.d.ts.map +1 -1
- package/dist/auth/auto-login.js +1 -3
- package/dist/auth/auto-login.js.map +1 -1
- package/dist/auth/interactive.d.ts.map +1 -1
- package/dist/auth/interactive.js +7 -8
- package/dist/auth/interactive.js.map +1 -1
- package/dist/auth/token-capture.d.ts.map +1 -1
- package/dist/auth/token-capture.js +62 -8
- package/dist/auth/token-capture.js.map +1 -1
- package/dist/browser-runtime.d.ts +11 -0
- package/dist/browser-runtime.d.ts.map +1 -1
- package/dist/browser-runtime.js +106 -0
- package/dist/browser-runtime.js.map +1 -1
- package/dist/conversation-protection.d.ts +21 -0
- package/dist/conversation-protection.d.ts.map +1 -0
- package/dist/conversation-protection.js +47 -0
- package/dist/conversation-protection.js.map +1 -0
- package/dist/mcp-auth.d.ts +56 -0
- package/dist/mcp-auth.d.ts.map +1 -0
- package/dist/mcp-auth.js +207 -0
- package/dist/mcp-auth.js.map +1 -0
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +37 -213
- package/dist/mcp-server.js.map +1 -1
- package/dist/model-context-protocol-download-content.d.ts +7 -0
- package/dist/model-context-protocol-download-content.d.ts.map +1 -0
- package/dist/model-context-protocol-download-content.js +90 -0
- package/dist/model-context-protocol-download-content.js.map +1 -0
- package/dist/server-instructions.d.ts.map +1 -1
- package/dist/server-instructions.js +4 -0
- package/dist/server-instructions.js.map +1 -1
- package/dist/smart-login.d.ts.map +1 -1
- package/dist/smart-login.js +3 -3
- package/dist/smart-login.js.map +1 -1
- package/dist/teams-client.d.ts +10 -1
- package/dist/teams-client.d.ts.map +1 -1
- package/dist/teams-client.js +82 -23
- package/dist/teams-client.js.map +1 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/auth/interactive.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA8BH,
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/auth/interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-capture.d.ts","sourceRoot":"","sources":["../../src/auth/token-capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAClD,eAAO,MAAM,mBAAmB,QAAa,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"token-capture.d.ts","sourceRoot":"","sources":["../../src/auth/token-capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAClD,eAAO,MAAM,mBAAmB,QAAa,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAoB7D;;;;;;GAMG;AAEH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,GAAG,EACT,GAAG,EAAE,WAAW,EAChB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC,CAyPD"}
|
|
@@ -13,6 +13,22 @@ const page_diagnostics_js_1 = require("./page-diagnostics.js");
|
|
|
13
13
|
exports.TOKEN_INTERCEPT_TIMEOUT = 90 * 1_000;
|
|
14
14
|
exports.PAGE_RELOAD_TIMEOUT = 30 * 1_000;
|
|
15
15
|
exports.PAGE_STATE_POLL_INTERVAL = 3 * 1_000;
|
|
16
|
+
const FALLBACK_SKYPE_TOKEN_GRACE_PERIOD = 5 * 1_000;
|
|
17
|
+
function isChatServiceRequest(requestUrl) {
|
|
18
|
+
try {
|
|
19
|
+
const url = new URL(requestUrl);
|
|
20
|
+
return url.hostname.toLowerCase().endsWith(".ng.msg.teams.microsoft.com");
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function normalizeSkypeTokenHeader(value) {
|
|
27
|
+
const prefix = "skypetoken=";
|
|
28
|
+
return value.toLowerCase().startsWith(prefix)
|
|
29
|
+
? value.slice(prefix.length)
|
|
30
|
+
: value;
|
|
31
|
+
}
|
|
16
32
|
/**
|
|
17
33
|
* Wait for the page to reach Teams and capture authentication tokens via CDP.
|
|
18
34
|
*
|
|
@@ -24,6 +40,7 @@ exports.PAGE_STATE_POLL_INTERVAL = 3 * 1_000;
|
|
|
24
40
|
async function captureTokensFromPage(page, log, interceptTimeout) {
|
|
25
41
|
const cdpSession = (await page.context().newCDPSession(page));
|
|
26
42
|
let skypeToken = null;
|
|
43
|
+
let fallbackSkypeToken = null;
|
|
27
44
|
let region = null;
|
|
28
45
|
let bearerToken = null;
|
|
29
46
|
let substrateToken = null;
|
|
@@ -38,20 +55,60 @@ async function captureTokensFromPage(page, log, interceptTimeout) {
|
|
|
38
55
|
const tokenPromise = new Promise((resolve) => {
|
|
39
56
|
const timeout = setTimeout(() => {
|
|
40
57
|
log("Token intercept timed out");
|
|
58
|
+
if (fallbackTimeout) {
|
|
59
|
+
clearTimeout(fallbackTimeout);
|
|
60
|
+
}
|
|
61
|
+
if (!skypeToken && fallbackSkypeToken) {
|
|
62
|
+
skypeToken = fallbackSkypeToken;
|
|
63
|
+
log("Using fallback Skype token from non-chat request headers");
|
|
64
|
+
}
|
|
41
65
|
resolve();
|
|
42
66
|
}, interceptTimeout);
|
|
67
|
+
let fallbackTimeout = null;
|
|
68
|
+
function resolveWithToken() {
|
|
69
|
+
if (resolved) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
resolved = true;
|
|
73
|
+
if (fallbackTimeout) {
|
|
74
|
+
clearTimeout(fallbackTimeout);
|
|
75
|
+
}
|
|
76
|
+
log("Skype token captured from request headers");
|
|
77
|
+
clearTimeout(timeout);
|
|
78
|
+
resolve();
|
|
79
|
+
}
|
|
80
|
+
function scheduleFallbackResolution() {
|
|
81
|
+
if (fallbackTimeout) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
fallbackTimeout = setTimeout(() => {
|
|
85
|
+
if (!skypeToken && fallbackSkypeToken) {
|
|
86
|
+
skypeToken = fallbackSkypeToken;
|
|
87
|
+
log("Using fallback Skype token from non-chat request headers");
|
|
88
|
+
resolveWithToken();
|
|
89
|
+
}
|
|
90
|
+
}, FALLBACK_SKYPE_TOKEN_GRACE_PERIOD);
|
|
91
|
+
}
|
|
43
92
|
cdpSession.on("Fetch.requestPaused", async (event) => {
|
|
44
93
|
const request = event.request;
|
|
45
94
|
const requestId = event.requestId;
|
|
46
95
|
const requestUrl = request.url ?? "";
|
|
96
|
+
const isChatService = isChatServiceRequest(requestUrl);
|
|
47
97
|
const detectedRegion = (0, region_js_1.detectTeamsRegionFromUrl)(requestUrl);
|
|
48
|
-
if (detectedRegion && !region) {
|
|
98
|
+
if (detectedRegion && (isChatService || !region)) {
|
|
49
99
|
region = detectedRegion;
|
|
50
100
|
log(`Detected Teams region from request URL: ${region}`);
|
|
51
101
|
}
|
|
52
102
|
for (const [name, value] of Object.entries(request.headers ?? {})) {
|
|
53
|
-
if (name.toLowerCase() === "x-skypetoken"
|
|
54
|
-
|
|
103
|
+
if (name.toLowerCase() === "x-skypetoken") {
|
|
104
|
+
const normalizedToken = normalizeSkypeTokenHeader(value);
|
|
105
|
+
if (isChatService && !skypeToken) {
|
|
106
|
+
skypeToken = normalizedToken;
|
|
107
|
+
}
|
|
108
|
+
else if (!fallbackSkypeToken) {
|
|
109
|
+
fallbackSkypeToken = normalizedToken;
|
|
110
|
+
scheduleFallbackResolution();
|
|
111
|
+
}
|
|
55
112
|
}
|
|
56
113
|
if (name.toLowerCase() === "authorization" &&
|
|
57
114
|
value.startsWith("Bearer ")) {
|
|
@@ -70,11 +127,8 @@ async function captureTokensFromPage(page, log, interceptTimeout) {
|
|
|
70
127
|
catch {
|
|
71
128
|
// Request may have already been handled
|
|
72
129
|
}
|
|
73
|
-
if (skypeToken
|
|
74
|
-
|
|
75
|
-
log("Skype token captured from request headers");
|
|
76
|
-
clearTimeout(timeout);
|
|
77
|
-
resolve();
|
|
130
|
+
if (skypeToken) {
|
|
131
|
+
resolveWithToken();
|
|
78
132
|
}
|
|
79
133
|
});
|
|
80
134
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-capture.js","sourceRoot":"","sources":["../../src/auth/token-capture.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"token-capture.js","sourceRoot":"","sources":["../../src/auth/token-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,17 @@ export declare function getDefaultBrowserProfileDir(): string;
|
|
|
24
24
|
export declare function getInteractiveBrowserChannels(platform?: NodeJS.Platform): InteractiveBrowserChannel[];
|
|
25
25
|
export declare function isMissingPlaywrightBrowserError(error: unknown): boolean;
|
|
26
26
|
export declare function installBundledChromium(log: LogFunction): void;
|
|
27
|
+
/**
|
|
28
|
+
* Detect whether a browser launch error is caused by a locked profile
|
|
29
|
+
* (Chromium exit code 21 or SingletonLock contention).
|
|
30
|
+
*/
|
|
31
|
+
export declare function isProfileLockError(error: unknown): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Attempt to remove a stale SingletonLock file from a browser profile.
|
|
34
|
+
* Only removes the lock if the PID it references is not running.
|
|
35
|
+
* Returns true if the lock was successfully cleaned.
|
|
36
|
+
*/
|
|
37
|
+
export declare function cleanStaleSingletonLock(profileDir: string, log: LogFunction): boolean;
|
|
27
38
|
export declare function launchInteractiveBrowser(chromium: ChromiumBrowserLauncher, log: LogFunction, options?: {
|
|
28
39
|
platform?: NodeJS.Platform;
|
|
29
40
|
installBundledChromium?: (log: LogFunction) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-runtime.d.ts","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"browser-runtime.d.ts","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI1D,KAAK,WAAW,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AACtD,KAAK,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,OAAO,EAAE;QACd,QAAQ,EAAE,KAAK,CAAC;QAChB,OAAO,CAAC,EAAE,yBAAyB,CAAC;KACrC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACxE,uBAAuB,CACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;QACP,QAAQ,EAAE,KAAK,CAAC;QAChB,OAAO,CAAC,EAAE,yBAAyB,CAAC;KACrC,GACA,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAmBD,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,yBAAyB,EAAE,CAE7B;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIvE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAgC7D;AAkBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,WAAW,GACf,OAAO,CAkCT;AAWD,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,uBAAuB,EACjC,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CACrD,GACA,OAAO,CAAC,OAAO,CAAC,CAoClB;AAED,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,yBAAyB,EACnC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CACrD,GACA,OAAO,CAAC,cAAc,CAAC,CA+BzB"}
|
package/dist/browser-runtime.js
CHANGED
|
@@ -11,9 +11,12 @@ exports.getDefaultBrowserProfileDir = getDefaultBrowserProfileDir;
|
|
|
11
11
|
exports.getInteractiveBrowserChannels = getInteractiveBrowserChannels;
|
|
12
12
|
exports.isMissingPlaywrightBrowserError = isMissingPlaywrightBrowserError;
|
|
13
13
|
exports.installBundledChromium = installBundledChromium;
|
|
14
|
+
exports.isProfileLockError = isProfileLockError;
|
|
15
|
+
exports.cleanStaleSingletonLock = cleanStaleSingletonLock;
|
|
14
16
|
exports.launchInteractiveBrowser = launchInteractiveBrowser;
|
|
15
17
|
exports.launchInteractiveBrowserContext = launchInteractiveBrowserContext;
|
|
16
18
|
const node_child_process_1 = require("node:child_process");
|
|
19
|
+
const node_fs_1 = require("node:fs");
|
|
17
20
|
const node_module_1 = require("node:module");
|
|
18
21
|
const node_os_1 = require("node:os");
|
|
19
22
|
const node_path_1 = require("node:path");
|
|
@@ -57,6 +60,84 @@ function installBundledChromium(log) {
|
|
|
57
60
|
"Unknown error";
|
|
58
61
|
throw new Error(`Failed to install Playwright Chromium automatically. ${detail}`);
|
|
59
62
|
}
|
|
63
|
+
const PROFILE_LOCK_MAX_RETRIES = 3;
|
|
64
|
+
const PROFILE_LOCK_RETRY_DELAY_MS = 500;
|
|
65
|
+
/**
|
|
66
|
+
* Check if a file or symlink exists (without following the symlink).
|
|
67
|
+
* Unlike `existsSync`, this returns true for broken symlinks.
|
|
68
|
+
*/
|
|
69
|
+
function fileOrSymlinkExists(path) {
|
|
70
|
+
try {
|
|
71
|
+
(0, node_fs_1.lstatSync)(path);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Detect whether a browser launch error is caused by a locked profile
|
|
80
|
+
* (Chromium exit code 21 or SingletonLock contention).
|
|
81
|
+
*/
|
|
82
|
+
function isProfileLockError(error) {
|
|
83
|
+
if (!(error instanceof Error))
|
|
84
|
+
return false;
|
|
85
|
+
const message = error.message.toLowerCase();
|
|
86
|
+
return (message.includes("exit code 21") ||
|
|
87
|
+
message.includes("process singleton") ||
|
|
88
|
+
message.includes("profile directory is already in use") ||
|
|
89
|
+
message.includes("singletonlock"));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Attempt to remove a stale SingletonLock file from a browser profile.
|
|
93
|
+
* Only removes the lock if the PID it references is not running.
|
|
94
|
+
* Returns true if the lock was successfully cleaned.
|
|
95
|
+
*/
|
|
96
|
+
function cleanStaleSingletonLock(profileDir, log) {
|
|
97
|
+
const lockPath = (0, node_path_1.join)(profileDir, "SingletonLock");
|
|
98
|
+
if (!fileOrSymlinkExists(lockPath)) {
|
|
99
|
+
log("No SingletonLock file found — nothing to clean.");
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
// SingletonLock is a symlink whose target contains the hostname and PID
|
|
103
|
+
// Format: "hostname-pid" (e.g., "MacBook-Pro.local-12345")
|
|
104
|
+
try {
|
|
105
|
+
const linkTarget = (0, node_fs_1.readlinkSync)(lockPath);
|
|
106
|
+
const pidMatch = linkTarget.match(/-(\d+)$/);
|
|
107
|
+
if (pidMatch) {
|
|
108
|
+
const pid = Number(pidMatch[1]);
|
|
109
|
+
if (isProcessRunning(pid)) {
|
|
110
|
+
log(`SingletonLock held by live process (PID ${pid}) — cannot remove.`);
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
log(`SingletonLock held by dead process (PID ${pid}) — removing.`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
log("SingletonLock has unrecognized format — removing.");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
log("Could not read SingletonLock — attempting removal anyway.");
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
(0, node_fs_1.rmSync)(lockPath, { force: true });
|
|
124
|
+
log("Removed stale SingletonLock.");
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
catch (removeError) {
|
|
128
|
+
log(`Failed to remove SingletonLock: ${removeError.message}`);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function isProcessRunning(pid) {
|
|
133
|
+
try {
|
|
134
|
+
process.kill(pid, 0);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
60
141
|
async function launchInteractiveBrowser(chromium, log, options) {
|
|
61
142
|
for (const channel of getInteractiveBrowserChannels(options?.platform)) {
|
|
62
143
|
try {
|
|
@@ -89,6 +170,27 @@ async function launchInteractiveBrowser(chromium, log, options) {
|
|
|
89
170
|
}
|
|
90
171
|
}
|
|
91
172
|
async function launchInteractiveBrowserContext(chromium, log, userDataDir, options) {
|
|
173
|
+
for (let attempt = 0; attempt <= PROFILE_LOCK_MAX_RETRIES; attempt++) {
|
|
174
|
+
try {
|
|
175
|
+
return await attemptLaunchPersistentContext(chromium, log, userDataDir, options);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
if (!isProfileLockError(error) || attempt === PROFILE_LOCK_MAX_RETRIES) {
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
log(`Browser launch failed with profile lock error (attempt ${attempt + 1}/${PROFILE_LOCK_MAX_RETRIES + 1}): ${error.message}`);
|
|
182
|
+
const cleaned = cleanStaleSingletonLock(userDataDir, log);
|
|
183
|
+
if (!cleaned && attempt === PROFILE_LOCK_MAX_RETRIES - 1) {
|
|
184
|
+
throw new Error(`Browser profile at "${userDataDir}" is locked and could not be cleaned. ` +
|
|
185
|
+
`Try closing other browser instances or deleting "${(0, node_path_1.join)(userDataDir, "SingletonLock")}" manually.`);
|
|
186
|
+
}
|
|
187
|
+
await new Promise((resolve) => setTimeout(resolve, PROFILE_LOCK_RETRY_DELAY_MS));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Unreachable, but satisfies TypeScript
|
|
191
|
+
throw new Error("Browser launch failed after all retries");
|
|
192
|
+
}
|
|
193
|
+
async function attemptLaunchPersistentContext(chromium, log, userDataDir, options) {
|
|
92
194
|
for (const channel of getInteractiveBrowserChannels(options?.platform)) {
|
|
93
195
|
try {
|
|
94
196
|
log(`Trying installed ${formatChannelName(channel)}...`);
|
|
@@ -100,6 +202,8 @@ async function launchInteractiveBrowserContext(chromium, log, userDataDir, optio
|
|
|
100
202
|
return context;
|
|
101
203
|
}
|
|
102
204
|
catch (error) {
|
|
205
|
+
if (isProfileLockError(error))
|
|
206
|
+
throw error;
|
|
103
207
|
log(`Could not launch ${formatChannelName(channel)}: ${error.message}`);
|
|
104
208
|
}
|
|
105
209
|
}
|
|
@@ -112,6 +216,8 @@ async function launchInteractiveBrowserContext(chromium, log, userDataDir, optio
|
|
|
112
216
|
return context;
|
|
113
217
|
}
|
|
114
218
|
catch (error) {
|
|
219
|
+
if (isProfileLockError(error))
|
|
220
|
+
throw error;
|
|
115
221
|
if (!isMissingPlaywrightBrowserError(error)) {
|
|
116
222
|
throw error;
|
|
117
223
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-runtime.js","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"browser-runtime.js","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation protection — restricts edit/delete in sensitive conversations.
|
|
3
|
+
*
|
|
4
|
+
* Reads `TEAMS_PROTECTED_CONVERSATIONS` (comma-separated glob patterns).
|
|
5
|
+
* When a conversation label matches any pattern, edit and delete actions
|
|
6
|
+
* are blocked with an informative error.
|
|
7
|
+
*
|
|
8
|
+
* Glob wildcards: `*` matches any characters. Matching is case-insensitive.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Parse the `TEAMS_PROTECTED_CONVERSATIONS` env var (or a raw string)
|
|
12
|
+
* into a trimmed array of non-empty patterns.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveProtectedPatterns(raw?: string | null): readonly string[];
|
|
15
|
+
/**
|
|
16
|
+
* Check whether a conversation label matches any of the protected patterns.
|
|
17
|
+
*
|
|
18
|
+
* Returns the first matching pattern, or `undefined` if no match.
|
|
19
|
+
*/
|
|
20
|
+
export declare function matchProtectedConversation(conversationLabel: string, patterns: readonly string[]): string | undefined;
|
|
21
|
+
//# sourceMappingURL=conversation-protection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-protection.d.ts","sourceRoot":"","sources":["../src/conversation-protection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAClB,SAAS,MAAM,EAAE,CAMnB;AAcD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,GAAG,SAAS,CAOpB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Conversation protection — restricts edit/delete in sensitive conversations.
|
|
4
|
+
*
|
|
5
|
+
* Reads `TEAMS_PROTECTED_CONVERSATIONS` (comma-separated glob patterns).
|
|
6
|
+
* When a conversation label matches any pattern, edit and delete actions
|
|
7
|
+
* are blocked with an informative error.
|
|
8
|
+
*
|
|
9
|
+
* Glob wildcards: `*` matches any characters. Matching is case-insensitive.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.resolveProtectedPatterns = resolveProtectedPatterns;
|
|
13
|
+
exports.matchProtectedConversation = matchProtectedConversation;
|
|
14
|
+
/**
|
|
15
|
+
* Parse the `TEAMS_PROTECTED_CONVERSATIONS` env var (or a raw string)
|
|
16
|
+
* into a trimmed array of non-empty patterns.
|
|
17
|
+
*/
|
|
18
|
+
function resolveProtectedPatterns(raw) {
|
|
19
|
+
const value = raw ?? process.env.TEAMS_PROTECTED_CONVERSATIONS ?? "";
|
|
20
|
+
return value
|
|
21
|
+
.split(",")
|
|
22
|
+
.map((pattern) => pattern.trim())
|
|
23
|
+
.filter(Boolean);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a glob pattern (supporting `*`) into a case-insensitive RegExp.
|
|
27
|
+
*
|
|
28
|
+
* Every character except `*` is escaped; `*` becomes `.*`.
|
|
29
|
+
*/
|
|
30
|
+
function globToRegExp(pattern) {
|
|
31
|
+
const escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, (character) => character === "*" ? ".*" : `\\${character}`);
|
|
32
|
+
return new RegExp(`^${escaped}$`, "i");
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check whether a conversation label matches any of the protected patterns.
|
|
36
|
+
*
|
|
37
|
+
* Returns the first matching pattern, or `undefined` if no match.
|
|
38
|
+
*/
|
|
39
|
+
function matchProtectedConversation(conversationLabel, patterns) {
|
|
40
|
+
for (const pattern of patterns) {
|
|
41
|
+
if (globToRegExp(pattern).test(conversationLabel)) {
|
|
42
|
+
return pattern;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=conversation-protection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-protection.js","sourceRoot":"","sources":["../src/conversation-protection.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAMH,4DAQC;AAmBD,gEAUC;AAzCD;;;GAGG;AACH,SAAgB,wBAAwB,CACtC,GAAmB;IAEnB,MAAM,KAAK,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC;IACrE,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,EAAE,CACnE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAC5C,CAAC;IACF,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CACxC,iBAAyB,EACzB,QAA2B;IAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { recordAuth as defaultRecordAuth } from "./telemetry.js";
|
|
2
|
+
import type { AuthLogFunction, AutoLoginOptions, InteractiveLoginOptions, ManualTokenOptions, SmartLoginOptions } from "./types.js";
|
|
3
|
+
interface AuthenticatedTeamsClient {
|
|
4
|
+
setEmail(email: string): void;
|
|
5
|
+
}
|
|
6
|
+
interface TeamsClientAuthFactory<Client extends AuthenticatedTeamsClient> {
|
|
7
|
+
create(options: AutoLoginOptions): Promise<Client>;
|
|
8
|
+
connect(options?: SmartLoginOptions): Promise<Client>;
|
|
9
|
+
fromInteractiveLogin(options?: InteractiveLoginOptions): Promise<Client>;
|
|
10
|
+
fromDebugSession(options?: ManualTokenOptions): Promise<Client>;
|
|
11
|
+
fromToken(skypeToken: string, region: string, bearerToken?: string, substrateToken?: string): Client;
|
|
12
|
+
}
|
|
13
|
+
type AuthRecord = Parameters<typeof defaultRecordAuth>[0];
|
|
14
|
+
type RecordAuthFunction = (record: AuthRecord) => void;
|
|
15
|
+
type CanAttemptAutoLoginFunction = () => boolean;
|
|
16
|
+
interface McpAuthEnvironment {
|
|
17
|
+
TEAMS_AUTO?: string;
|
|
18
|
+
TEAMS_BEARER_TOKEN?: string;
|
|
19
|
+
TEAMS_DEBUG?: string;
|
|
20
|
+
TEAMS_DEBUG_PORT?: string;
|
|
21
|
+
TEAMS_EMAIL?: string;
|
|
22
|
+
TEAMS_LOGIN?: string;
|
|
23
|
+
TEAMS_REGION?: string;
|
|
24
|
+
TEAMS_SUBSTRATE_TOKEN?: string;
|
|
25
|
+
TEAMS_TOKEN?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface McpAuthManagerOptions<Client extends AuthenticatedTeamsClient> {
|
|
28
|
+
canAttemptAutoLogin?: CanAttemptAutoLoginFunction;
|
|
29
|
+
clientFactory: TeamsClientAuthFactory<Client>;
|
|
30
|
+
environment?: McpAuthEnvironment;
|
|
31
|
+
log?: AuthLogFunction;
|
|
32
|
+
recordAuth?: RecordAuthFunction;
|
|
33
|
+
}
|
|
34
|
+
export declare class NeedsEmailError extends Error {
|
|
35
|
+
constructor();
|
|
36
|
+
}
|
|
37
|
+
export declare class AuthenticationInProgressError extends Error {
|
|
38
|
+
constructor();
|
|
39
|
+
}
|
|
40
|
+
export declare class McpAuthManager<Client extends AuthenticatedTeamsClient> {
|
|
41
|
+
private readonly canAttemptAutoLogin;
|
|
42
|
+
private readonly clientFactory;
|
|
43
|
+
private readonly environment;
|
|
44
|
+
private readonly log;
|
|
45
|
+
private readonly recordAuth;
|
|
46
|
+
private authenticationPromise;
|
|
47
|
+
private clientInstance;
|
|
48
|
+
constructor(options: McpAuthManagerOptions<Client>);
|
|
49
|
+
authenticateOnStartup(): Promise<void>;
|
|
50
|
+
getClient(toolEmail?: string): Promise<Client>;
|
|
51
|
+
private shouldUseTwoPhaseAuthentication;
|
|
52
|
+
private startAuthentication;
|
|
53
|
+
private authenticate;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=mcp-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-auth.d.ts","sourceRoot":"","sources":["../src/mcp-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,UAAU,wBAAwB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,sBAAsB,CAAC,MAAM,SAAS,wBAAwB;IACtE,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,oBAAoB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,gBAAgB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAAC;CACX;AAED,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AACvD,KAAK,2BAA2B,GAAG,MAAM,OAAO,CAAC;AAEjD,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD,MAAM,WAAW,qBAAqB,CACpC,MAAM,SAAS,wBAAwB;IAEvC,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAClD,aAAa,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,qBAAa,eAAgB,SAAQ,KAAK;;CAQzC;AAED,qBAAa,6BAA8B,SAAQ,KAAK;;CAQvD;AAgCD,qBAAa,cAAc,CAAC,MAAM,SAAS,wBAAwB;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,cAAc,CAAuB;gBAEjC,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC;IAS5C,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBpD,OAAO,CAAC,+BAA+B;IAwBvC,OAAO,CAAC,mBAAmB;YAab,YAAY;CAiG3B"}
|