teams-api 0.12.0 → 0.14.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 +2 -3
- 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/message-actions.d.ts +2 -0
- package/dist/actions/message-actions.d.ts.map +1 -1
- package/dist/actions/message-actions.js +129 -1
- package/dist/actions/message-actions.js.map +1 -1
- package/dist/api/chat-service.d.ts +15 -1
- package/dist/api/chat-service.d.ts.map +1 -1
- package/dist/api/chat-service.js +59 -1
- package/dist/api/chat-service.js.map +1 -1
- package/dist/auth/interactive.d.ts.map +1 -1
- package/dist/auth/interactive.js +2 -1
- package/dist/auth/interactive.js.map +1 -1
- package/dist/browser-runtime.d.ts +25 -0
- package/dist/browser-runtime.d.ts.map +1 -0
- package/dist/browser-runtime.js +85 -0
- package/dist/browser-runtime.js.map +1 -0
- package/dist/cli.js +18 -5
- package/dist/cli.js.map +1 -1
- package/dist/credential-store.d.ts +20 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +238 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/mcp-server.js +13 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/platform.d.ts +17 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +43 -0
- package/dist/platform.js.map +1 -0
- package/dist/smart-login.d.ts +13 -0
- package/dist/smart-login.d.ts.map +1 -0
- package/dist/smart-login.js +44 -0
- package/dist/smart-login.js.map +1 -0
- package/dist/teams-client.d.ts +34 -8
- package/dist/teams-client.d.ts.map +1 -1
- package/dist/teams-client.js +98 -9
- package/dist/teams-client.js.map +1 -1
- package/dist/token-store.d.ts +3 -4
- package/dist/token-store.d.ts.map +1 -1
- package/dist/token-store.js +9 -33
- package/dist/token-store.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-runtime.js","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -28,6 +28,7 @@ function addAuthOptions(command) {
|
|
|
28
28
|
return command
|
|
29
29
|
.option("--auto", "Auto-acquire token via FIDO2 passkey (macOS)")
|
|
30
30
|
.option("--login", "Interactive browser login (all platforms, no FIDO2 needed)")
|
|
31
|
+
.option("--debug", "Use Chrome debug session for token capture")
|
|
31
32
|
.option("--email <email>", "Corporate email (required with --auto, optional with --login)")
|
|
32
33
|
.option("--token <token>", "Use an existing skype token directly")
|
|
33
34
|
.option("--bearer-token <token>", "Optional middle-tier bearer token for profile/member resolution")
|
|
@@ -72,11 +73,23 @@ async function createClient(flags) {
|
|
|
72
73
|
}
|
|
73
74
|
return client;
|
|
74
75
|
}
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
if (flags.debug) {
|
|
77
|
+
const manualOptions = {
|
|
78
|
+
debugPort: Number(flags.debugPort),
|
|
79
|
+
region: flags.region,
|
|
80
|
+
};
|
|
81
|
+
return teams_client_js_1.TeamsClient.fromDebugSession(manualOptions);
|
|
82
|
+
}
|
|
83
|
+
// Default: smart login (cross-platform, zero-config)
|
|
84
|
+
const client = await teams_client_js_1.TeamsClient.connect({
|
|
85
|
+
email: flags.email,
|
|
77
86
|
region: flags.region,
|
|
78
|
-
|
|
79
|
-
|
|
87
|
+
verbose: true,
|
|
88
|
+
});
|
|
89
|
+
if (flags.email) {
|
|
90
|
+
client.setEmail(flags.email);
|
|
91
|
+
}
|
|
92
|
+
return client;
|
|
80
93
|
}
|
|
81
94
|
// ── Helpers ────────────────────────────────────────────────────────────
|
|
82
95
|
function camelToKebab(name) {
|
|
@@ -191,7 +204,7 @@ addAuthOptions(program
|
|
|
191
204
|
// ── logout command (special — clears cached token) ────────────────────
|
|
192
205
|
program
|
|
193
206
|
.command("logout")
|
|
194
|
-
.description("Clear cached token from the
|
|
207
|
+
.description("Clear cached token from the credential store")
|
|
195
208
|
.requiredOption("--email <email>", "Email whose cached token to clear")
|
|
196
209
|
.action((flags) => {
|
|
197
210
|
teams_client_js_1.TeamsClient.clearCachedToken(flags.email);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;;;;;GASG;;AAEH,qCAAwC;AACxC,yCAAoC;AACpC,yCAAoC;AACpC,uDAAgD;AAChD,6DAAmD;AACnD,2DAAuD;AAEvD,qEAA8D;AAO9D,MAAM,aAAa,GAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAErE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform credential storage.
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for securely storing and retrieving
|
|
5
|
+
* credentials across macOS, Windows, and Linux.
|
|
6
|
+
*
|
|
7
|
+
* | Platform | Mechanism |
|
|
8
|
+
* |----------|--------------------------------------------------------|
|
|
9
|
+
* | macOS | System Keychain via `security` CLI |
|
|
10
|
+
* | Windows | DPAPI encryption → file in %APPDATA%/teams-api/ |
|
|
11
|
+
* | Linux | `secret-tool` (libsecret) if available, else file with |
|
|
12
|
+
* | | 0o600 perms at ~/.config/teams-api/ |
|
|
13
|
+
*/
|
|
14
|
+
export interface CredentialStore {
|
|
15
|
+
save(account: string, data: string): void;
|
|
16
|
+
load(account: string): string | null;
|
|
17
|
+
clear(account: string): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function createCredentialStore(): CredentialStore;
|
|
20
|
+
//# sourceMappingURL=credential-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../src/credential-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AA6PD,wBAAgB,qBAAqB,IAAI,eAAe,CASvD"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-platform credential storage.
|
|
4
|
+
*
|
|
5
|
+
* Provides a unified interface for securely storing and retrieving
|
|
6
|
+
* credentials across macOS, Windows, and Linux.
|
|
7
|
+
*
|
|
8
|
+
* | Platform | Mechanism |
|
|
9
|
+
* |----------|--------------------------------------------------------|
|
|
10
|
+
* | macOS | System Keychain via `security` CLI |
|
|
11
|
+
* | Windows | DPAPI encryption → file in %APPDATA%/teams-api/ |
|
|
12
|
+
* | Linux | `secret-tool` (libsecret) if available, else file with |
|
|
13
|
+
* | | 0o600 perms at ~/.config/teams-api/ |
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.createCredentialStore = createCredentialStore;
|
|
17
|
+
const node_child_process_1 = require("node:child_process");
|
|
18
|
+
const node_fs_1 = require("node:fs");
|
|
19
|
+
const node_os_1 = require("node:os");
|
|
20
|
+
const node_path_1 = require("node:path");
|
|
21
|
+
const node_crypto_1 = require("node:crypto");
|
|
22
|
+
// ── macOS: System Keychain ────────────────────────────────────────────
|
|
23
|
+
const KEYCHAIN_SERVICE = "teams-api";
|
|
24
|
+
class KeychainStore {
|
|
25
|
+
save(account, data) {
|
|
26
|
+
(0, node_child_process_1.execFileSync)("security", [
|
|
27
|
+
"add-generic-password",
|
|
28
|
+
"-a",
|
|
29
|
+
account,
|
|
30
|
+
"-s",
|
|
31
|
+
KEYCHAIN_SERVICE,
|
|
32
|
+
"-w",
|
|
33
|
+
data,
|
|
34
|
+
"-U",
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
load(account) {
|
|
38
|
+
try {
|
|
39
|
+
return (0, node_child_process_1.execFileSync)("security", ["find-generic-password", "-a", account, "-s", KEYCHAIN_SERVICE, "-w"], { encoding: "utf-8" }).trim();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
clear(account) {
|
|
46
|
+
try {
|
|
47
|
+
(0, node_child_process_1.execFileSync)("security", [
|
|
48
|
+
"delete-generic-password",
|
|
49
|
+
"-a",
|
|
50
|
+
account,
|
|
51
|
+
"-s",
|
|
52
|
+
KEYCHAIN_SERVICE,
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Entry may not exist, that's fine
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// ── Windows: DPAPI encryption → file ─────────────────────────────────
|
|
61
|
+
function getWindowsStorePath() {
|
|
62
|
+
const appData = process.env.APPDATA ??
|
|
63
|
+
(0, node_path_1.join)(process.env.USERPROFILE ?? (0, node_os_1.homedir)(), "AppData", "Roaming");
|
|
64
|
+
return (0, node_path_1.join)(appData, "teams-api");
|
|
65
|
+
}
|
|
66
|
+
function accountToFileName(account) {
|
|
67
|
+
return (0, node_crypto_1.createHash)("sha256").update(account).digest("hex") + ".dat";
|
|
68
|
+
}
|
|
69
|
+
class WinCredStore {
|
|
70
|
+
getFilePath(account) {
|
|
71
|
+
const dir = getWindowsStorePath();
|
|
72
|
+
return (0, node_path_1.join)(dir, accountToFileName(account));
|
|
73
|
+
}
|
|
74
|
+
ensureDir() {
|
|
75
|
+
const dir = getWindowsStorePath();
|
|
76
|
+
if (!(0, node_fs_1.existsSync)(dir)) {
|
|
77
|
+
(0, node_fs_1.mkdirSync)(dir, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
save(account, data) {
|
|
81
|
+
this.ensureDir();
|
|
82
|
+
const base64Input = Buffer.from(data, "utf-8").toString("base64");
|
|
83
|
+
// Use DPAPI to encrypt data tied to the current Windows user account
|
|
84
|
+
const encrypted = (0, node_child_process_1.execFileSync)("powershell", [
|
|
85
|
+
"-NoProfile",
|
|
86
|
+
"-Command",
|
|
87
|
+
`Add-Type -AssemblyName System.Security; ` +
|
|
88
|
+
`$bytes = [System.Convert]::FromBase64String('${base64Input}'); ` +
|
|
89
|
+
`$encrypted = [System.Security.Cryptography.ProtectedData]::Protect($bytes, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser); ` +
|
|
90
|
+
`[System.Convert]::ToBase64String($encrypted)`,
|
|
91
|
+
], { encoding: "utf-8" }).trim();
|
|
92
|
+
(0, node_fs_1.writeFileSync)(this.getFilePath(account), encrypted, { encoding: "utf-8" });
|
|
93
|
+
}
|
|
94
|
+
load(account) {
|
|
95
|
+
const filePath = this.getFilePath(account);
|
|
96
|
+
if (!(0, node_fs_1.existsSync)(filePath)) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
const encrypted = (0, node_fs_1.readFileSync)(filePath, { encoding: "utf-8" }).trim();
|
|
101
|
+
const decrypted = (0, node_child_process_1.execFileSync)("powershell", [
|
|
102
|
+
"-NoProfile",
|
|
103
|
+
"-Command",
|
|
104
|
+
`Add-Type -AssemblyName System.Security; ` +
|
|
105
|
+
`$encrypted = [System.Convert]::FromBase64String('${encrypted}'); ` +
|
|
106
|
+
`$bytes = [System.Security.Cryptography.ProtectedData]::Unprotect($encrypted, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser); ` +
|
|
107
|
+
`[System.Text.Encoding]::UTF8.GetString($bytes)`,
|
|
108
|
+
], { encoding: "utf-8" }).trim();
|
|
109
|
+
return decrypted;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Encrypted data may be corrupted or from a different user
|
|
113
|
+
this.clear(account);
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
clear(account) {
|
|
118
|
+
const filePath = this.getFilePath(account);
|
|
119
|
+
try {
|
|
120
|
+
(0, node_fs_1.unlinkSync)(filePath);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// File may not exist, that's fine
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// ── Linux: secret-tool or file-based fallback ────────────────────────
|
|
128
|
+
function getLinuxStorePath() {
|
|
129
|
+
const configDir = process.env.XDG_CONFIG_HOME ?? (0, node_path_1.join)(process.env.HOME ?? (0, node_os_1.homedir)(), ".config");
|
|
130
|
+
return (0, node_path_1.join)(configDir, "teams-api");
|
|
131
|
+
}
|
|
132
|
+
function hasSecretTool() {
|
|
133
|
+
try {
|
|
134
|
+
(0, node_child_process_1.execFileSync)("which", ["secret-tool"], { stdio: "pipe" });
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
class LinuxStore {
|
|
142
|
+
useSecretTool;
|
|
143
|
+
constructor() {
|
|
144
|
+
this.useSecretTool = hasSecretTool();
|
|
145
|
+
}
|
|
146
|
+
getFilePath(account) {
|
|
147
|
+
const dir = getLinuxStorePath();
|
|
148
|
+
return (0, node_path_1.join)(dir, accountToFileName(account));
|
|
149
|
+
}
|
|
150
|
+
ensureDir() {
|
|
151
|
+
const dir = getLinuxStorePath();
|
|
152
|
+
if (!(0, node_fs_1.existsSync)(dir)) {
|
|
153
|
+
(0, node_fs_1.mkdirSync)(dir, { recursive: true, mode: 0o700 });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
save(account, data) {
|
|
157
|
+
if (this.useSecretTool) {
|
|
158
|
+
try {
|
|
159
|
+
(0, node_child_process_1.execFileSync)("secret-tool", [
|
|
160
|
+
"store",
|
|
161
|
+
"--label",
|
|
162
|
+
"teams-api",
|
|
163
|
+
"service",
|
|
164
|
+
KEYCHAIN_SERVICE,
|
|
165
|
+
"account",
|
|
166
|
+
account,
|
|
167
|
+
], { input: data, encoding: "utf-8" });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Fall through to file-based storage
|
|
172
|
+
this.useSecretTool = false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
this.ensureDir();
|
|
176
|
+
(0, node_fs_1.writeFileSync)(this.getFilePath(account), data, {
|
|
177
|
+
encoding: "utf-8",
|
|
178
|
+
mode: 0o600,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
load(account) {
|
|
182
|
+
if (this.useSecretTool) {
|
|
183
|
+
try {
|
|
184
|
+
return (0, node_child_process_1.execFileSync)("secret-tool", ["lookup", "service", KEYCHAIN_SERVICE, "account", account], { encoding: "utf-8" }).trim();
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Secret not found or secret-tool failed
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const filePath = this.getFilePath(account);
|
|
192
|
+
if (!(0, node_fs_1.existsSync)(filePath)) {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
try {
|
|
196
|
+
return (0, node_fs_1.readFileSync)(filePath, { encoding: "utf-8" }).trim();
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
clear(account) {
|
|
203
|
+
if (this.useSecretTool) {
|
|
204
|
+
try {
|
|
205
|
+
(0, node_child_process_1.execFileSync)("secret-tool", [
|
|
206
|
+
"clear",
|
|
207
|
+
"service",
|
|
208
|
+
KEYCHAIN_SERVICE,
|
|
209
|
+
"account",
|
|
210
|
+
account,
|
|
211
|
+
]);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Entry may not exist
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Also clean up the file-based fallback
|
|
218
|
+
const filePath = this.getFilePath(account);
|
|
219
|
+
try {
|
|
220
|
+
(0, node_fs_1.unlinkSync)(filePath);
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// File may not exist
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// ── Factory ──────────────────────────────────────────────────────────
|
|
228
|
+
function createCredentialStore() {
|
|
229
|
+
switch (process.platform) {
|
|
230
|
+
case "darwin":
|
|
231
|
+
return new KeychainStore();
|
|
232
|
+
case "win32":
|
|
233
|
+
return new WinCredStore();
|
|
234
|
+
default:
|
|
235
|
+
return new LinuxStore();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=credential-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../src/credential-store.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -58,6 +58,7 @@ async function getClient(toolEmail) {
|
|
|
58
58
|
const email = process.env.TEAMS_EMAIL || toolEmail;
|
|
59
59
|
const envAuto = process.env.TEAMS_AUTO === "true";
|
|
60
60
|
const envLogin = process.env.TEAMS_LOGIN === "true";
|
|
61
|
+
const envDebug = process.env.TEAMS_DEBUG === "true";
|
|
61
62
|
const envDebugPort = process.env.TEAMS_DEBUG_PORT
|
|
62
63
|
? Number(process.env.TEAMS_DEBUG_PORT)
|
|
63
64
|
: 9222;
|
|
@@ -91,12 +92,23 @@ async function getClient(toolEmail) {
|
|
|
91
92
|
clientInstance.setEmail(email);
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
|
-
else {
|
|
95
|
+
else if (envDebug) {
|
|
95
96
|
clientInstance = await teams_client_js_1.TeamsClient.fromDebugSession({
|
|
96
97
|
debugPort: envDebugPort,
|
|
97
98
|
region: envRegion,
|
|
98
99
|
});
|
|
99
100
|
}
|
|
101
|
+
else {
|
|
102
|
+
// Default: smart login (cross-platform, zero-config)
|
|
103
|
+
clientInstance = await teams_client_js_1.TeamsClient.connect({
|
|
104
|
+
email,
|
|
105
|
+
region: envRegion,
|
|
106
|
+
verbose: false,
|
|
107
|
+
});
|
|
108
|
+
if (email) {
|
|
109
|
+
clientInstance.setEmail(email);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
100
112
|
return clientInstance;
|
|
101
113
|
}
|
|
102
114
|
function parameterToZod(parameter) {
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;AAEH,oEAAoE;AACpE,wEAAiF;AAEjF,6BAAwB;AACxB,uDAAgD;AAChD,6DAAmD;AACnD,2DAAuD;AAGvD,qEAA8D;AAE9D,IAAI,cAAc,GAAuB,IAAI,CAAC;AAE9C,MAAM,eAAgB,SAAQ,KAAK;IACjC;QACE,KAAK,CACH,yDAAyD;YACvD,qDAAqD,CACxD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,KAAK,UAAU,SAAS,CAAC,SAAkB;IACzC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACtD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,SAAS,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,cAAc,GAAG,6BAAW,CAAC,SAAS,CACpC,QAAQ,EACR,SAAS,EACT,cAAc,EACd,iBAAiB,CAClB,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,eAAe,EAAE,CAAC;QAC9B,CAAC;QACD,cAAc,GAAG,MAAM,6BAAW,CAAC,MAAM,CAAC;YACxC,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,cAAc,GAAG,MAAM,6BAAW,CAAC,oBAAoB,CAAC;YACtD,MAAM,EAAE,SAAS;YACjB,KAAK;YACL,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform detection utilities for smart login flow.
|
|
3
|
+
*
|
|
4
|
+
* Determines the current platform and whether auto-login prerequisites
|
|
5
|
+
* are met (macOS + system Chrome installed).
|
|
6
|
+
*/
|
|
7
|
+
export type Platform = "macos" | "windows" | "linux";
|
|
8
|
+
export declare function detectPlatform(): Platform;
|
|
9
|
+
/**
|
|
10
|
+
* Check whether auto-login prerequisites are met:
|
|
11
|
+
* macOS + system Chrome exists at the expected path.
|
|
12
|
+
*
|
|
13
|
+
* Does NOT check for FIDO2 passkey enrollment — auto-login will
|
|
14
|
+
* simply fail and the smart login flow will fall back to interactive.
|
|
15
|
+
*/
|
|
16
|
+
export declare function canAttemptAutoLogin(chromePath?: string): boolean;
|
|
17
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,wBAAgB,cAAc,IAAI,QAAQ,CASzC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAYhE"}
|
package/dist/platform.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Platform detection utilities for smart login flow.
|
|
4
|
+
*
|
|
5
|
+
* Determines the current platform and whether auto-login prerequisites
|
|
6
|
+
* are met (macOS + system Chrome installed).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.detectPlatform = detectPlatform;
|
|
10
|
+
exports.canAttemptAutoLogin = canAttemptAutoLogin;
|
|
11
|
+
const node_fs_1 = require("node:fs");
|
|
12
|
+
const DEFAULT_SYSTEM_CHROME_PATH = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";
|
|
13
|
+
function detectPlatform() {
|
|
14
|
+
switch (process.platform) {
|
|
15
|
+
case "darwin":
|
|
16
|
+
return "macos";
|
|
17
|
+
case "win32":
|
|
18
|
+
return "windows";
|
|
19
|
+
default:
|
|
20
|
+
return "linux";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check whether auto-login prerequisites are met:
|
|
25
|
+
* macOS + system Chrome exists at the expected path.
|
|
26
|
+
*
|
|
27
|
+
* Does NOT check for FIDO2 passkey enrollment — auto-login will
|
|
28
|
+
* simply fail and the smart login flow will fall back to interactive.
|
|
29
|
+
*/
|
|
30
|
+
function canAttemptAutoLogin(chromePath) {
|
|
31
|
+
if (detectPlatform() !== "macos") {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const chromeExecutable = chromePath ?? DEFAULT_SYSTEM_CHROME_PATH;
|
|
35
|
+
try {
|
|
36
|
+
(0, node_fs_1.accessSync)(chromeExecutable, node_fs_1.constants.X_OK);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AASH,wCASC;AASD,kDAYC;AArCD,qCAAgD;AAEhD,MAAM,0BAA0B,GAC9B,8DAA8D,CAAC;AAIjE,SAAgB,cAAc;IAC5B,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,UAAmB;IACrD,IAAI,cAAc,EAAE,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU,IAAI,0BAA0B,CAAC;IAClE,IAAI,CAAC;QACH,IAAA,oBAAU,EAAC,gBAAgB,EAAE,mBAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart login — the zero-config default authentication strategy.
|
|
3
|
+
*
|
|
4
|
+
* Strategy:
|
|
5
|
+
* 1. If on macOS + email provided + system Chrome exists → try auto-login
|
|
6
|
+
* 2. If auto-login fails or prerequisites not met → interactive login
|
|
7
|
+
*
|
|
8
|
+
* Auto-login errors are caught and logged, then we immediately fall back
|
|
9
|
+
* to interactive. Only if interactive also fails does the user see an error.
|
|
10
|
+
*/
|
|
11
|
+
import type { TeamsToken, SmartLoginOptions } from "./types.js";
|
|
12
|
+
export declare function acquireTokenViaSmartLogin(options?: SmartLoginOptions): Promise<TeamsToken>;
|
|
13
|
+
//# sourceMappingURL=smart-login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-login.d.ts","sourceRoot":"","sources":["../src/smart-login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOhE,wBAAsB,yBAAyB,CAC7C,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,CAAC,CA6BrB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Smart login — the zero-config default authentication strategy.
|
|
4
|
+
*
|
|
5
|
+
* Strategy:
|
|
6
|
+
* 1. If on macOS + email provided + system Chrome exists → try auto-login
|
|
7
|
+
* 2. If auto-login fails or prerequisites not met → interactive login
|
|
8
|
+
*
|
|
9
|
+
* Auto-login errors are caught and logged, then we immediately fall back
|
|
10
|
+
* to interactive. Only if interactive also fails does the user see an error.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.acquireTokenViaSmartLogin = acquireTokenViaSmartLogin;
|
|
14
|
+
const platform_js_1 = require("./platform.js");
|
|
15
|
+
const auto_login_js_1 = require("./auth/auto-login.js");
|
|
16
|
+
const interactive_js_1 = require("./auth/interactive.js");
|
|
17
|
+
async function acquireTokenViaSmartLogin(options) {
|
|
18
|
+
const log = options?.verbose
|
|
19
|
+
? console.error.bind(console)
|
|
20
|
+
: () => { };
|
|
21
|
+
// Try auto-login if prerequisites are met
|
|
22
|
+
if (options?.email && (0, platform_js_1.canAttemptAutoLogin)()) {
|
|
23
|
+
log("Auto-login prerequisites met (macOS + Chrome), attempting...");
|
|
24
|
+
try {
|
|
25
|
+
return await (0, auto_login_js_1.acquireTokenViaAutoLogin)({
|
|
26
|
+
email: options.email,
|
|
27
|
+
region: options.region,
|
|
28
|
+
headless: true,
|
|
29
|
+
verbose: options.verbose,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
log(`Auto-login failed: ${error.message}. Falling back to interactive login...`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Fall back to interactive login (works everywhere)
|
|
37
|
+
log("Using interactive browser login...");
|
|
38
|
+
return (0, interactive_js_1.acquireTokenViaInteractiveLogin)({
|
|
39
|
+
region: options?.region,
|
|
40
|
+
email: options?.email,
|
|
41
|
+
verbose: options?.verbose,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=smart-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-login.js","sourceRoot":"","sources":["../src/smart-login.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AASH,8DA+BC;AArCD,+CAAoD;AACpD,wDAAgE;AAChE,0DAAwE;AAIjE,KAAK,UAAU,yBAAyB,CAC7C,OAA2B;IAE3B,MAAM,GAAG,GAAgB,OAAO,EAAE,OAAO;QACvC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;IAEb,0CAA0C;IAC1C,IAAI,OAAO,EAAE,KAAK,IAAI,IAAA,iCAAmB,GAAE,EAAE,CAAC;QAC5C,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,wCAAwB,EAAC;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CACD,sBAAuB,KAAe,CAAC,OAAO,wCAAwC,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAC1C,OAAO,IAAA,gDAA+B,EAAC;QACrC,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,KAAK,EAAE,OAAO,EAAE,KAAK;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO;KAC1B,CAAC,CAAC;AACL,CAAC"}
|