teams-api 0.8.0 → 0.10.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/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 +16 -0
- package/dist/actions/file-actions.d.ts.map +1 -0
- package/dist/actions/file-actions.js +120 -0
- package/dist/actions/file-actions.js.map +1 -0
- package/dist/actions/formatters.d.ts +1 -1
- package/dist/actions/formatters.d.ts.map +1 -1
- package/dist/actions/message-actions.d.ts.map +1 -1
- package/dist/actions/message-actions.js +194 -8
- package/dist/actions/message-actions.js.map +1 -1
- package/dist/api/attachments.d.ts +106 -0
- package/dist/api/attachments.d.ts.map +1 -0
- package/dist/api/attachments.js +341 -0
- package/dist/api/attachments.js.map +1 -0
- package/dist/api/chat-service.d.ts +14 -2
- package/dist/api/chat-service.d.ts.map +1 -1
- package/dist/api/chat-service.js +90 -1
- package/dist/api/chat-service.js.map +1 -1
- package/dist/auth/auto-login.d.ts.map +1 -1
- package/dist/auth/auto-login.js +4 -1
- package/dist/auth/auto-login.js.map +1 -1
- package/dist/auth/interactive.d.ts.map +1 -1
- package/dist/auth/interactive.js +3 -1
- package/dist/auth/interactive.js.map +1 -1
- package/dist/auth/token-capture.d.ts +3 -0
- package/dist/auth/token-capture.d.ts.map +1 -1
- package/dist/auth/token-capture.js +67 -0
- package/dist/auth/token-capture.js.map +1 -1
- package/dist/cli.js +16 -3
- package/dist/cli.js.map +1 -1
- package/dist/mcp-server.js +129 -11
- package/dist/mcp-server.js.map +1 -1
- package/dist/teams-client.d.ts +87 -4
- package/dist/teams-client.d.ts.map +1 -1
- package/dist/teams-client.js +167 -8
- package/dist/teams-client.js.map +1 -1
- package/dist/token-store.d.ts.map +1 -1
- package/dist/token-store.js +6 -0
- package/dist/token-store.js.map +1 -1
- package/dist/types.d.ts +84 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/auth/interactive.js
CHANGED
|
@@ -74,12 +74,14 @@ async function acquireTokenViaInteractiveLogin(options) {
|
|
|
74
74
|
`Current state: ${state.phase} — ${state.detail} (URL: ${state.url})`);
|
|
75
75
|
}
|
|
76
76
|
log("Login detected, capturing token...");
|
|
77
|
-
const { skypeToken, region, bearerToken, substrateToken } = await (0, token_capture_js_1.captureTokensFromPage)(page, log, token_capture_js_1.TOKEN_INTERCEPT_TIMEOUT);
|
|
77
|
+
const { skypeToken, region, bearerToken, substrateToken, amsToken, sharePointToken, } = await (0, token_capture_js_1.captureTokensFromPage)(page, log, token_capture_js_1.TOKEN_INTERCEPT_TIMEOUT);
|
|
78
78
|
return {
|
|
79
79
|
skypeToken,
|
|
80
80
|
region: (0, region_js_1.resolveTeamsRegion)(options?.region, region),
|
|
81
81
|
bearerToken,
|
|
82
82
|
substrateToken,
|
|
83
|
+
amsToken,
|
|
84
|
+
sharePointToken,
|
|
83
85
|
};
|
|
84
86
|
}
|
|
85
87
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/auth/interactive.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA0BH,
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/auth/interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,5 +20,8 @@ export declare function captureTokensFromPage(page: any, log: LogFunction, inter
|
|
|
20
20
|
region: string | undefined;
|
|
21
21
|
bearerToken: string | undefined;
|
|
22
22
|
substrateToken: string | undefined;
|
|
23
|
+
amsToken: string | undefined;
|
|
24
|
+
sharePointToken: string | undefined;
|
|
25
|
+
sharePointHost: string | undefined;
|
|
23
26
|
}>;
|
|
24
27
|
//# sourceMappingURL=token-capture.d.ts.map
|
|
@@ -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;AAE7D;;;;;;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;CACpC,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;AAE7D;;;;;;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,CA6MD"}
|
|
@@ -113,11 +113,78 @@ async function captureTokensFromPage(page, log, interceptTimeout) {
|
|
|
113
113
|
if (substrateToken) {
|
|
114
114
|
log("Substrate token also captured for people/chat search");
|
|
115
115
|
}
|
|
116
|
+
// Read the AMS (IC3) token from the browser's MSAL cache in localStorage.
|
|
117
|
+
// This token has audience https://ic3.teams.office.com and is used for image uploads
|
|
118
|
+
// to the Async Media Service. It's acquired by MSAL during login but may not appear
|
|
119
|
+
// in network requests during a page reload (AMS requests only happen with images).
|
|
120
|
+
let amsToken;
|
|
121
|
+
let sharePointToken;
|
|
122
|
+
let sharePointHost;
|
|
123
|
+
try {
|
|
124
|
+
const msalTokens = await page.evaluate(() => {
|
|
125
|
+
let foundAmsToken = null;
|
|
126
|
+
let foundSharePointToken = null;
|
|
127
|
+
let foundSharePointHost = null;
|
|
128
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
129
|
+
const key = localStorage.key(i);
|
|
130
|
+
if (key && key.includes("accesstoken")) {
|
|
131
|
+
try {
|
|
132
|
+
const value = JSON.parse(localStorage.getItem(key) ?? "");
|
|
133
|
+
if (value.target &&
|
|
134
|
+
value.target.includes("ic3.teams.office.com") &&
|
|
135
|
+
value.secret) {
|
|
136
|
+
foundAmsToken = value.secret;
|
|
137
|
+
}
|
|
138
|
+
if (value.target &&
|
|
139
|
+
value.target.includes("sharepoint.com") &&
|
|
140
|
+
value.secret) {
|
|
141
|
+
foundSharePointToken = value.secret;
|
|
142
|
+
// Extract the SharePoint host from the MSAL target field.
|
|
143
|
+
// The target looks like "https://contoso-my.sharepoint.com/.default"
|
|
144
|
+
// or "contoso-my.sharepoint.com/AllSites.Write AllSites.Read".
|
|
145
|
+
// We also check the environment/realm fields from the MSAL cache key.
|
|
146
|
+
const targetString = value.target;
|
|
147
|
+
const hostMatch = targetString.match(/([a-z0-9-]+\.sharepoint\.com)/i);
|
|
148
|
+
if (hostMatch) {
|
|
149
|
+
foundSharePointHost = hostMatch[1];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// Skip malformed entries
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
amsToken: foundAmsToken,
|
|
160
|
+
sharePointToken: foundSharePointToken,
|
|
161
|
+
sharePointHost: foundSharePointHost,
|
|
162
|
+
};
|
|
163
|
+
});
|
|
164
|
+
amsToken = msalTokens?.amsToken ?? undefined;
|
|
165
|
+
sharePointToken = msalTokens?.sharePointToken ?? undefined;
|
|
166
|
+
sharePointHost = msalTokens?.sharePointHost ?? undefined;
|
|
167
|
+
if (amsToken) {
|
|
168
|
+
log("AMS token captured from MSAL cache for image upload");
|
|
169
|
+
}
|
|
170
|
+
if (sharePointToken) {
|
|
171
|
+
log("SharePoint token captured from MSAL cache for file download");
|
|
172
|
+
if (sharePointHost) {
|
|
173
|
+
log(`SharePoint host: ${sharePointHost}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// page.evaluate may fail if the page context is unavailable
|
|
179
|
+
}
|
|
116
180
|
return {
|
|
117
181
|
skypeToken,
|
|
118
182
|
region: region ?? undefined,
|
|
119
183
|
bearerToken: bearerToken ?? undefined,
|
|
120
184
|
substrateToken: substrateToken ?? undefined,
|
|
185
|
+
amsToken: amsToken ?? undefined,
|
|
186
|
+
sharePointToken: sharePointToken ?? undefined,
|
|
187
|
+
sharePointHost: sharePointHost ?? undefined,
|
|
121
188
|
};
|
|
122
189
|
}
|
|
123
190
|
//# sourceMappingURL=token-capture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-capture.js","sourceRoot":"","sources":["../../src/auth/token-capture.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAmBH,
|
|
1
|
+
{"version":3,"file":"token-capture.js","sourceRoot":"","sources":["../../src/auth/token-capture.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -41,7 +41,11 @@ async function createClient(flags) {
|
|
|
41
41
|
console.error("Error: --region is required when using --token");
|
|
42
42
|
process.exit(1);
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
const client = teams_client_js_1.TeamsClient.fromToken(flags.token, flags.region, flags.bearerToken, flags.substrateToken);
|
|
45
|
+
if (flags.email) {
|
|
46
|
+
client.setEmail(flags.email);
|
|
47
|
+
}
|
|
48
|
+
return client;
|
|
45
49
|
}
|
|
46
50
|
if (flags.auto) {
|
|
47
51
|
if (!flags.email) {
|
|
@@ -62,7 +66,11 @@ async function createClient(flags) {
|
|
|
62
66
|
email: flags.email,
|
|
63
67
|
verbose: true,
|
|
64
68
|
};
|
|
65
|
-
|
|
69
|
+
const client = await teams_client_js_1.TeamsClient.fromInteractiveLogin(interactiveLoginOptions);
|
|
70
|
+
if (flags.email) {
|
|
71
|
+
client.setEmail(flags.email);
|
|
72
|
+
}
|
|
73
|
+
return client;
|
|
66
74
|
}
|
|
67
75
|
const manualOptions = {
|
|
68
76
|
debugPort: Number(flags.debugPort),
|
|
@@ -87,6 +95,8 @@ function coerceParameter(value, type) {
|
|
|
87
95
|
}
|
|
88
96
|
case "boolean":
|
|
89
97
|
return value === true || value === "true";
|
|
98
|
+
case "string[]":
|
|
99
|
+
return Array.isArray(value) ? value : [value];
|
|
90
100
|
default:
|
|
91
101
|
return value;
|
|
92
102
|
}
|
|
@@ -97,7 +107,10 @@ for (const action of definitions_js_1.actions) {
|
|
|
97
107
|
addAuthOptions(command);
|
|
98
108
|
for (const parameter of action.parameters) {
|
|
99
109
|
const flag = camelToKebab(parameter.name);
|
|
100
|
-
if (parameter.type === "
|
|
110
|
+
if (parameter.type === "string[]") {
|
|
111
|
+
command.option(`--${flag} <value...>`, parameter.description);
|
|
112
|
+
}
|
|
113
|
+
else if (parameter.type === "boolean") {
|
|
101
114
|
if (parameter.default === true) {
|
|
102
115
|
// Default-true boolean: define --no-* to allow opting out.
|
|
103
116
|
// Commander auto-sets the value to true when --no-* is absent.
|
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;AAepB,SAAS,cAAc,CAAC,OAAgB;IACtC,OAAO,OAAO;SACX,MAAM,CAAC,QAAQ,EAAE,8CAA8C,CAAC;SAChE,MAAM,CACL,SAAS,EACT,4DAA4D,CAC7D;SACA,MAAM,CACL,iBAAiB,EACjB,+DAA+D,CAChE;SACA,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;SACjE,MAAM,CACL,wBAAwB,EACxB,iEAAiE,CAClE;SACA,MAAM,CACL,2BAA2B,EAC3B,wDAAwD,CACzD;SACA,MAAM,CACL,qBAAqB,EACrB,4CAA4C,EAC5C,MAAM,CACP;SACA,MAAM,CACL,mBAAmB,EACnB,mEAAmE,CACpE,CAAC;AACN,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAgB;IAC1C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -66,6 +66,9 @@ async function getClient(toolEmail) {
|
|
|
66
66
|
throw new Error("TEAMS_REGION is required when TEAMS_TOKEN is set");
|
|
67
67
|
}
|
|
68
68
|
clientInstance = teams_client_js_1.TeamsClient.fromToken(envToken, envRegion, envBearerToken, envSubstrateToken);
|
|
69
|
+
if (email) {
|
|
70
|
+
clientInstance.setEmail(email);
|
|
71
|
+
}
|
|
69
72
|
}
|
|
70
73
|
else if (envAuto) {
|
|
71
74
|
if (!email) {
|
|
@@ -84,6 +87,9 @@ async function getClient(toolEmail) {
|
|
|
84
87
|
email,
|
|
85
88
|
verbose: false,
|
|
86
89
|
});
|
|
90
|
+
if (email) {
|
|
91
|
+
clientInstance.setEmail(email);
|
|
92
|
+
}
|
|
87
93
|
}
|
|
88
94
|
else {
|
|
89
95
|
clientInstance = await teams_client_js_1.TeamsClient.fromDebugSession({
|
|
@@ -105,6 +111,9 @@ function parameterToZod(parameter) {
|
|
|
105
111
|
case "boolean":
|
|
106
112
|
schema = zod_1.z.boolean();
|
|
107
113
|
break;
|
|
114
|
+
case "string[]":
|
|
115
|
+
schema = zod_1.z.array(zod_1.z.string());
|
|
116
|
+
break;
|
|
108
117
|
}
|
|
109
118
|
schema = schema.describe(parameter.description);
|
|
110
119
|
if (!parameter.required) {
|
|
@@ -119,6 +128,106 @@ const server = new mcp_js_1.McpServer({
|
|
|
119
128
|
instructions: server_instructions_js_1.serverInstructions,
|
|
120
129
|
});
|
|
121
130
|
// ── Register all actions as MCP tools ─────────────────────────────────
|
|
131
|
+
/** MIME types that are safe to return as inline text to the LLM. */
|
|
132
|
+
const TEXT_MIME_PREFIXES = [
|
|
133
|
+
"text/",
|
|
134
|
+
"application/json",
|
|
135
|
+
"application/xml",
|
|
136
|
+
"application/javascript",
|
|
137
|
+
"application/typescript",
|
|
138
|
+
"application/x-yaml",
|
|
139
|
+
"application/yaml",
|
|
140
|
+
"application/toml",
|
|
141
|
+
];
|
|
142
|
+
/** File extensions that are known to be text-based. */
|
|
143
|
+
const TEXT_FILE_EXTENSIONS = new Set([
|
|
144
|
+
"md",
|
|
145
|
+
"txt",
|
|
146
|
+
"csv",
|
|
147
|
+
"tsv",
|
|
148
|
+
"json",
|
|
149
|
+
"xml",
|
|
150
|
+
"yaml",
|
|
151
|
+
"yml",
|
|
152
|
+
"toml",
|
|
153
|
+
"html",
|
|
154
|
+
"htm",
|
|
155
|
+
"css",
|
|
156
|
+
"js",
|
|
157
|
+
"ts",
|
|
158
|
+
"jsx",
|
|
159
|
+
"tsx",
|
|
160
|
+
"py",
|
|
161
|
+
"rb",
|
|
162
|
+
"sh",
|
|
163
|
+
"bash",
|
|
164
|
+
"zsh",
|
|
165
|
+
"ps1",
|
|
166
|
+
"bat",
|
|
167
|
+
"cmd",
|
|
168
|
+
"sql",
|
|
169
|
+
"graphql",
|
|
170
|
+
"svg",
|
|
171
|
+
"log",
|
|
172
|
+
"ini",
|
|
173
|
+
"cfg",
|
|
174
|
+
"conf",
|
|
175
|
+
"env",
|
|
176
|
+
"properties",
|
|
177
|
+
]);
|
|
178
|
+
function isTextContent(mimeType, fileName) {
|
|
179
|
+
const lowerMime = mimeType.toLowerCase();
|
|
180
|
+
if (TEXT_MIME_PREFIXES.some((prefix) => lowerMime.startsWith(prefix))) {
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
// Fall back to file extension when MIME type is generic (e.g. application/octet-stream)
|
|
184
|
+
const extension = fileName.includes(".")
|
|
185
|
+
? fileName.split(".").pop()?.toLowerCase()
|
|
186
|
+
: undefined;
|
|
187
|
+
return extension !== undefined && TEXT_FILE_EXTENSIONS.has(extension);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Build MCP content blocks for file download results.
|
|
191
|
+
*
|
|
192
|
+
* Returns the file content inline so the LLM can read it directly:
|
|
193
|
+
* - Text files → EmbeddedResource with text content
|
|
194
|
+
* - Images → ImageContent with base64 data
|
|
195
|
+
* - Other binary → EmbeddedResource with base64 blob
|
|
196
|
+
*/
|
|
197
|
+
function buildDownloadContentBlocks(downloads) {
|
|
198
|
+
const blocks = [];
|
|
199
|
+
for (const download of downloads) {
|
|
200
|
+
const fileUri = `file://${download.savedTo}`;
|
|
201
|
+
if (download.contentType.startsWith("image/")) {
|
|
202
|
+
blocks.push({
|
|
203
|
+
type: "image",
|
|
204
|
+
data: download.data.toString("base64"),
|
|
205
|
+
mimeType: download.contentType,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
else if (isTextContent(download.contentType, download.fileName)) {
|
|
209
|
+
blocks.push({
|
|
210
|
+
type: "resource",
|
|
211
|
+
resource: {
|
|
212
|
+
uri: fileUri,
|
|
213
|
+
mimeType: download.contentType,
|
|
214
|
+
text: download.data.toString("utf-8"),
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
blocks.push({
|
|
220
|
+
type: "resource",
|
|
221
|
+
resource: {
|
|
222
|
+
uri: fileUri,
|
|
223
|
+
mimeType: download.contentType,
|
|
224
|
+
blob: download.data.toString("base64"),
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return blocks;
|
|
230
|
+
}
|
|
122
231
|
for (const action of definitions_js_1.actions) {
|
|
123
232
|
const toolName = `teams_${action.name.replace(/-/g, "_")}`;
|
|
124
233
|
const inputSchema = {};
|
|
@@ -143,18 +252,27 @@ for (const action of definitions_js_1.actions) {
|
|
|
143
252
|
const client = await getClient(parameters.email);
|
|
144
253
|
const outputFormat = parameters.format ?? "toon";
|
|
145
254
|
const result = await action.execute(client, parameters);
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
255
|
+
// Build content blocks — file downloads get inline file content
|
|
256
|
+
const contentBlocks = [
|
|
257
|
+
{
|
|
258
|
+
type: "text",
|
|
259
|
+
text: (0, formatters_js_1.formatOutput)(action, result, outputFormat),
|
|
260
|
+
},
|
|
261
|
+
];
|
|
262
|
+
let structuredResult = result;
|
|
263
|
+
if (action.name === "download-file" && Array.isArray(result)) {
|
|
264
|
+
const downloads = result;
|
|
265
|
+
contentBlocks.push(...buildDownloadContentBlocks(downloads));
|
|
266
|
+
// Strip Buffer data from structuredContent (not JSON-serializable)
|
|
267
|
+
structuredResult = downloads.map(({ data: _data, ...metadata }) => metadata);
|
|
268
|
+
}
|
|
269
|
+
const structuredContent = structuredResult !== null &&
|
|
270
|
+
typeof structuredResult === "object" &&
|
|
271
|
+
!Array.isArray(structuredResult)
|
|
272
|
+
? structuredResult
|
|
273
|
+
: { data: structuredResult };
|
|
151
274
|
return {
|
|
152
|
-
content:
|
|
153
|
-
{
|
|
154
|
-
type: "text",
|
|
155
|
-
text: (0, formatters_js_1.formatOutput)(action, result, outputFormat),
|
|
156
|
-
},
|
|
157
|
-
],
|
|
275
|
+
content: contentBlocks,
|
|
158
276
|
structuredContent,
|
|
159
277
|
};
|
|
160
278
|
}
|
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;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/teams-client.d.ts
CHANGED
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
* "optional-substrate-token",
|
|
30
30
|
* );
|
|
31
31
|
*/
|
|
32
|
-
import type { TeamsToken, AutoLoginOptions, InteractiveLoginOptions, ManualTokenOptions, Conversation, Message, MessageFormat, Member, SentMessage, EditedMessage, DeletedMessage, GetMessagesOptions, ListConversationsOptions, OneOnOneSearchResult, PersonSearchResult, ChatSearchResult, MessagesPage, TranscriptResult } from "./types.js";
|
|
32
|
+
import type { TeamsToken, AutoLoginOptions, InteractiveLoginOptions, ManualTokenOptions, Conversation, Message, MessageFormat, Member, SentMessage, EditedMessage, DeletedMessage, ScheduledMessage, GetMessagesOptions, ListConversationsOptions, OneOnOneSearchResult, PersonSearchResult, ChatSearchResult, MessagesPage, TranscriptResult, MessageContentPart } from "./types.js";
|
|
33
33
|
export { acquireTokenViaAutoLogin } from "./auth/auto-login.js";
|
|
34
34
|
export { acquireTokenViaInteractiveLogin } from "./auth/interactive.js";
|
|
35
35
|
export { acquireTokenViaDebugSession } from "./auth/debug-session.js";
|
|
36
|
-
export type { TeamsToken, AutoLoginOptions, InteractiveLoginOptions, ManualTokenOptions, Conversation, Message, MessageFormat, Member, SentMessage, EditedMessage, DeletedMessage, GetMessagesOptions, ListConversationsOptions, OneOnOneSearchResult, MessagesPage, Mention, Reaction, Follower, UserProfile, PersonSearchResult, ChatSearchResult, TranscriptEntry, TranscriptResult, } from "./types.js";
|
|
36
|
+
export type { TeamsToken, AutoLoginOptions, InteractiveLoginOptions, ManualTokenOptions, Conversation, Message, MessageFormat, Member, SentMessage, EditedMessage, DeletedMessage, GetMessagesOptions, ListConversationsOptions, OneOnOneSearchResult, MessagesPage, Mention, Reaction, Follower, UserProfile, PersonSearchResult, ChatSearchResult, TranscriptEntry, TranscriptResult, ImageAttachment, FileAttachment, MessageContentPart, } from "./types.js";
|
|
37
37
|
export { SYSTEM_STREAM_TYPES } from "./types.js";
|
|
38
38
|
export { isTextMessageType } from "./constants.js";
|
|
39
39
|
export { parseRawMessage } from "./api/chat-service.js";
|
|
@@ -41,6 +41,8 @@ export { ApiAuthError, ApiRateLimitError } from "./api/common.js";
|
|
|
41
41
|
export { fetchProfiles } from "./api/middle-tier.js";
|
|
42
42
|
export { searchPeople, searchChats } from "./api/substrate.js";
|
|
43
43
|
export { fetchTranscript, fetchTranscriptVtt, parseVtt, extractTranscriptUrl, extractMeetingTitle, isSuccessfulRecording, } from "./api/transcripts.js";
|
|
44
|
+
export { fetchAmsImage, uploadAmsImage, buildAmsImageTag, parseInlineImages, parseFileAttachments, uploadSharePointFile, buildFilesPropertyJson, } from "./api/attachments.js";
|
|
45
|
+
export type { SharePointUploadResult } from "./api/attachments.js";
|
|
44
46
|
export { saveToken, loadToken, clearToken } from "./token-store.js";
|
|
45
47
|
export { actions } from "./actions/definitions.js";
|
|
46
48
|
export { formatOutput } from "./actions/formatters.js";
|
|
@@ -49,6 +51,7 @@ export declare class TeamsClient {
|
|
|
49
51
|
private token;
|
|
50
52
|
private autoLoginOptions;
|
|
51
53
|
private cachedDisplayName;
|
|
54
|
+
private userEmail;
|
|
52
55
|
private constructor();
|
|
53
56
|
/**
|
|
54
57
|
* Create a client with secure token caching and automatic refresh.
|
|
@@ -92,7 +95,7 @@ export declare class TeamsClient {
|
|
|
92
95
|
* enables reliable people/chat search. Both are optional; basic chat
|
|
93
96
|
* operations only require `skypeToken`.
|
|
94
97
|
*/
|
|
95
|
-
static fromToken(skypeToken: string, region?: string, bearerToken?: string, substrateToken?: string): TeamsClient;
|
|
98
|
+
static fromToken(skypeToken: string, region?: string, bearerToken?: string, substrateToken?: string, amsToken?: string, sharePointToken?: string, sharePointHost?: string): TeamsClient;
|
|
96
99
|
/**
|
|
97
100
|
* Clear a cached token from the macOS Keychain.
|
|
98
101
|
*
|
|
@@ -101,6 +104,14 @@ export declare class TeamsClient {
|
|
|
101
104
|
static clearCachedToken(email: string): void;
|
|
102
105
|
/** Get the underlying token (for persistence or debugging). */
|
|
103
106
|
getToken(): TeamsToken;
|
|
107
|
+
/**
|
|
108
|
+
* Set the user's email address (needed for SharePoint file uploads).
|
|
109
|
+
*
|
|
110
|
+
* Automatically set when using `create()` or `fromAutoLogin()`.
|
|
111
|
+
* Call this manually when using `fromToken()`, `fromDebugSession()`,
|
|
112
|
+
* or `fromInteractiveLogin()` if file upload is needed.
|
|
113
|
+
*/
|
|
114
|
+
setEmail(email: string): void;
|
|
104
115
|
/**
|
|
105
116
|
* List conversations (chats, group chats, meetings, channels).
|
|
106
117
|
*
|
|
@@ -167,7 +178,7 @@ export declare class TeamsClient {
|
|
|
167
178
|
* - `"markdown"` (default) — converted from Markdown to HTML
|
|
168
179
|
* - `"html"` — raw HTML, sent as-is
|
|
169
180
|
*/
|
|
170
|
-
sendMessage(conversationId: string, content: string, format?: MessageFormat): Promise<SentMessage>;
|
|
181
|
+
sendMessage(conversationId: string, content: string, format?: MessageFormat, amsReferences?: string[]): Promise<SentMessage>;
|
|
171
182
|
/**
|
|
172
183
|
* Edit an existing message in a conversation.
|
|
173
184
|
*
|
|
@@ -179,6 +190,78 @@ export declare class TeamsClient {
|
|
|
179
190
|
editMessage(conversationId: string, messageId: string, content: string, format?: MessageFormat): Promise<EditedMessage>;
|
|
180
191
|
/** Delete a message from a conversation. */
|
|
181
192
|
deleteMessage(conversationId: string, messageId: string): Promise<DeletedMessage>;
|
|
193
|
+
/**
|
|
194
|
+
* Schedule a message to be sent at a future time.
|
|
195
|
+
*
|
|
196
|
+
* The `format` parameter controls how `content` is interpreted:
|
|
197
|
+
* - `"text"` — plain text, sent as-is
|
|
198
|
+
* - `"markdown"` (default) — converted from Markdown to HTML
|
|
199
|
+
* - `"html"` — raw HTML, sent as-is
|
|
200
|
+
*/
|
|
201
|
+
scheduleMessage(conversationId: string, content: string, scheduleAt: Date, format?: MessageFormat, amsReferences?: string[]): Promise<ScheduledMessage>;
|
|
202
|
+
/**
|
|
203
|
+
* Download an image attachment from the AMS (Async Media Service).
|
|
204
|
+
*
|
|
205
|
+
* @param amsObjectId - The AMS object ID from an ImageAttachment
|
|
206
|
+
* @param fullSize - If true, download the full-size image; otherwise compressed (default: false)
|
|
207
|
+
* @returns Binary image data with content type and size
|
|
208
|
+
*/
|
|
209
|
+
downloadImage(amsObjectId: string, fullSize?: boolean): Promise<{
|
|
210
|
+
data: Buffer;
|
|
211
|
+
contentType: string;
|
|
212
|
+
size: number;
|
|
213
|
+
}>;
|
|
214
|
+
/**
|
|
215
|
+
* Download a file attachment from SharePoint.
|
|
216
|
+
*
|
|
217
|
+
* @param fileUrl - The direct SharePoint file URL from a FileAttachment
|
|
218
|
+
* @param itemId - The SharePoint item ID (unique GUID) from a FileAttachment
|
|
219
|
+
* @returns Binary file data with content type, size, and file name
|
|
220
|
+
*/
|
|
221
|
+
downloadFile(fileUrl: string, itemId: string): Promise<{
|
|
222
|
+
data: Buffer;
|
|
223
|
+
contentType: string;
|
|
224
|
+
size: number;
|
|
225
|
+
fileName: string;
|
|
226
|
+
}>;
|
|
227
|
+
/**
|
|
228
|
+
* Send a message with inline images.
|
|
229
|
+
*
|
|
230
|
+
* Uploads each image to AMS, sets permissions for the conversation,
|
|
231
|
+
* and constructs the message HTML with embedded `<img>` tags.
|
|
232
|
+
*
|
|
233
|
+
* Content sections and images are interleaved in order. Use `contentParts`
|
|
234
|
+
* to specify the sequence of text and image content.
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* await client.sendMessageWithImages(conversationId, [
|
|
238
|
+
* { type: "text", text: "Check out this screenshot:" },
|
|
239
|
+
* { type: "image", data: imageBuffer, fileName: "screenshot.png", contentType: "image/png" },
|
|
240
|
+
* { type: "text", text: "And another one:" },
|
|
241
|
+
* { type: "image", data: image2Buffer, fileName: "screenshot2.png", contentType: "image/png" },
|
|
242
|
+
* ]);
|
|
243
|
+
*/
|
|
244
|
+
sendMessageWithImages(conversationId: string, contentParts: MessageContentPart[]): Promise<SentMessage>;
|
|
245
|
+
/**
|
|
246
|
+
* Send a message with file attachments (uploaded to SharePoint).
|
|
247
|
+
*
|
|
248
|
+
* Uploads each file to the sender's OneDrive "Microsoft Teams Chat Files"
|
|
249
|
+
* folder, then sends a message referencing the uploaded files via
|
|
250
|
+
* `properties.files` JSON.
|
|
251
|
+
*
|
|
252
|
+
* Content sections, images, and files are handled together. Images are
|
|
253
|
+
* uploaded to AMS (inline), files to SharePoint (as attachments).
|
|
254
|
+
*
|
|
255
|
+
* Requires a SharePoint token (captured during authentication) and the
|
|
256
|
+
* user's email (set via `setEmail()` or automatically during `create()`).
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* await client.sendMessageWithFiles(conversationId, [
|
|
260
|
+
* { type: "text", text: "Here's the document:" },
|
|
261
|
+
* { type: "file", data: fileBuffer, fileName: "report.md" },
|
|
262
|
+
* ]);
|
|
263
|
+
*/
|
|
264
|
+
sendMessageWithFiles(conversationId: string, contentParts: MessageContentPart[]): Promise<SentMessage>;
|
|
182
265
|
/**
|
|
183
266
|
* Get members of a conversation.
|
|
184
267
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teams-client.d.ts","sourceRoot":"","sources":["../src/teams-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,aAAa,EACb,MAAM,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"teams-client.d.ts","sourceRoot":"","sources":["../src/teams-client.ts"],"names":[],"mappings":"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"}
|