@hahnfeld/teams-adapter 1.0.9
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/LICENSE +21 -0
- package/README.md +286 -0
- package/dist/activity.d.ts +23 -0
- package/dist/activity.d.ts.map +1 -0
- package/dist/activity.js +3 -0
- package/dist/activity.js.map +1 -0
- package/dist/adapter.d.ts +174 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +1583 -0
- package/dist/adapter.js.map +1 -0
- package/dist/app-package.d.ts +7 -0
- package/dist/app-package.d.ts.map +1 -0
- package/dist/app-package.js +158 -0
- package/dist/app-package.js.map +1 -0
- package/dist/assistant.d.ts +7 -0
- package/dist/assistant.d.ts.map +1 -0
- package/dist/assistant.js +32 -0
- package/dist/assistant.js.map +1 -0
- package/dist/commands/admin.d.ts +27 -0
- package/dist/commands/admin.d.ts.map +1 -0
- package/dist/commands/admin.js +146 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/agents.d.ts +13 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +98 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/doctor.d.ts +8 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +49 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/index.d.ts +16 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +253 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/integrate.d.ts +8 -0
- package/dist/commands/integrate.d.ts.map +1 -0
- package/dist/commands/integrate.js +45 -0
- package/dist/commands/integrate.js.map +1 -0
- package/dist/commands/menu.d.ts +16 -0
- package/dist/commands/menu.d.ts.map +1 -0
- package/dist/commands/menu.js +92 -0
- package/dist/commands/menu.js.map +1 -0
- package/dist/commands/new-session.d.ts +13 -0
- package/dist/commands/new-session.d.ts.map +1 -0
- package/dist/commands/new-session.js +105 -0
- package/dist/commands/new-session.js.map +1 -0
- package/dist/commands/session.d.ts +22 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +110 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/settings.d.ts +8 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +54 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/conversation-store.d.ts +38 -0
- package/dist/conversation-store.d.ts.map +1 -0
- package/dist/conversation-store.js +101 -0
- package/dist/conversation-store.js.map +1 -0
- package/dist/draft-manager.d.ts +47 -0
- package/dist/draft-manager.d.ts.map +1 -0
- package/dist/draft-manager.js +136 -0
- package/dist/draft-manager.js.map +1 -0
- package/dist/formatting.d.ts +121 -0
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +392 -0
- package/dist/formatting.js.map +1 -0
- package/dist/graph.d.ts +59 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +261 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/media.d.ts +29 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +120 -0
- package/dist/media.js.map +1 -0
- package/dist/permissions.d.ts +15 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +221 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugin.d.ts +13 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +689 -0
- package/dist/plugin.js.map +1 -0
- package/dist/renderer.d.ts +49 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +55 -0
- package/dist/renderer.js.map +1 -0
- package/dist/send-utils.d.ts +15 -0
- package/dist/send-utils.d.ts.map +1 -0
- package/dist/send-utils.js +64 -0
- package/dist/send-utils.js.map +1 -0
- package/dist/task-modules.d.ts +34 -0
- package/dist/task-modules.d.ts.map +1 -0
- package/dist/task-modules.js +136 -0
- package/dist/task-modules.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +54 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +142 -0
- package/dist/validators.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../src/formatting.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages Graph API authentication and file operations for a Teams bot.
|
|
3
|
+
*
|
|
4
|
+
* Requires Azure AD app registration with:
|
|
5
|
+
* - Application permission: Files.ReadWrite.All (for upload to SharePoint/OneDrive)
|
|
6
|
+
* - Delegated or Application permission for downloading Teams attachments
|
|
7
|
+
*/
|
|
8
|
+
export declare class GraphFileClient {
|
|
9
|
+
private tenantId;
|
|
10
|
+
private clientId;
|
|
11
|
+
private clientSecret;
|
|
12
|
+
private tokenCache;
|
|
13
|
+
constructor(tenantId: string, clientId: string, clientSecret: string);
|
|
14
|
+
/**
|
|
15
|
+
* Acquire an access token via client credentials flow (app-only).
|
|
16
|
+
* Caches the token and refreshes 5 minutes before expiry.
|
|
17
|
+
*/
|
|
18
|
+
private getToken;
|
|
19
|
+
/**
|
|
20
|
+
* Download a file from a Teams attachment content URL with proper authentication.
|
|
21
|
+
*
|
|
22
|
+
* Teams attachment URLs (e.g., https://teams.microsoft.com/api/...) require
|
|
23
|
+
* a Bearer token. This method fetches the file with the bot's Graph token.
|
|
24
|
+
*/
|
|
25
|
+
downloadFile(contentUrl: string, maxSize: number): Promise<Buffer | null>;
|
|
26
|
+
/**
|
|
27
|
+
* Upload a file to the bot's OneDrive for Business and return a sharing URL.
|
|
28
|
+
*
|
|
29
|
+
* For files <= 4MB, uses simple PUT upload.
|
|
30
|
+
* For files > 4MB, uses upload session (resumable upload).
|
|
31
|
+
*
|
|
32
|
+
* The file is uploaded to /openacp-files/{sessionId}/{fileName} to keep
|
|
33
|
+
* files organized by session.
|
|
34
|
+
*
|
|
35
|
+
* @returns A sharing link URL that Teams users can access, or null on failure.
|
|
36
|
+
*
|
|
37
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-put-content
|
|
38
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession
|
|
39
|
+
*/
|
|
40
|
+
uploadFile(sessionId: string, fileName: string, content: Buffer, contentType: string): Promise<string | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Simple PUT upload for files ≤ 4MB.
|
|
43
|
+
* PUT /me/drive/root:/{path}:/content
|
|
44
|
+
*/
|
|
45
|
+
private simpleUpload;
|
|
46
|
+
/**
|
|
47
|
+
* Resumable upload for files > 4MB.
|
|
48
|
+
* Creates an upload session and uploads in 10MB chunks.
|
|
49
|
+
*
|
|
50
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession
|
|
51
|
+
*/
|
|
52
|
+
private resumableUpload;
|
|
53
|
+
/**
|
|
54
|
+
* Create an anonymous sharing link for a drive item.
|
|
55
|
+
* POST /me/drive/items/{id}/createLink
|
|
56
|
+
*/
|
|
57
|
+
private createSharingLink;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IALtB,OAAO,CAAC,UAAU,CAAgC;gBAGxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM;IAG9B;;;OAGG;YACW,QAAQ;IAiCtB;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsC/E;;;;;;;;;;;;;OAaG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAwBzB;;;OAGG;YACW,YAAY;IAwB1B;;;;;OAKG;YACW,eAAe;IA0E7B;;;OAGG;YACW,iBAAiB;CA8BhC"}
|
package/dist/graph.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft Graph API client for Teams file operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides authenticated file download (from Teams attachment URLs) and
|
|
5
|
+
* file upload (to OneDrive/SharePoint for sharing via adaptive cards).
|
|
6
|
+
*
|
|
7
|
+
* Uses the Microsoft Graph REST API v1.0:
|
|
8
|
+
* - Download: GET /drives/{driveId}/items/{itemId}/content
|
|
9
|
+
* - Upload (small, <4MB): PUT /me/drive/root:/{path}:/content
|
|
10
|
+
* - Upload (large, >4MB): POST /me/drive/root:/{path}:/createUploadSession
|
|
11
|
+
*
|
|
12
|
+
* Authentication uses client credentials flow (app-only) with the bot's
|
|
13
|
+
* Azure AD app registration. Requires Files.ReadWrite.All or Sites.ReadWrite.All
|
|
14
|
+
* application permissions for upload, and User.Read for basic operations.
|
|
15
|
+
*
|
|
16
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-put-content
|
|
17
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession
|
|
18
|
+
*/
|
|
19
|
+
import { log } from "@openacp/plugin-sdk";
|
|
20
|
+
const GRAPH_BASE = "https://graph.microsoft.com/v1.0";
|
|
21
|
+
const SMALL_FILE_LIMIT = 4 * 1024 * 1024; // 4MB — Graph simple upload limit
|
|
22
|
+
/**
|
|
23
|
+
* Manages Graph API authentication and file operations for a Teams bot.
|
|
24
|
+
*
|
|
25
|
+
* Requires Azure AD app registration with:
|
|
26
|
+
* - Application permission: Files.ReadWrite.All (for upload to SharePoint/OneDrive)
|
|
27
|
+
* - Delegated or Application permission for downloading Teams attachments
|
|
28
|
+
*/
|
|
29
|
+
export class GraphFileClient {
|
|
30
|
+
tenantId;
|
|
31
|
+
clientId;
|
|
32
|
+
clientSecret;
|
|
33
|
+
tokenCache = null;
|
|
34
|
+
constructor(tenantId, clientId, clientSecret) {
|
|
35
|
+
this.tenantId = tenantId;
|
|
36
|
+
this.clientId = clientId;
|
|
37
|
+
this.clientSecret = clientSecret;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Acquire an access token via client credentials flow (app-only).
|
|
41
|
+
* Caches the token and refreshes 5 minutes before expiry.
|
|
42
|
+
*/
|
|
43
|
+
async getToken() {
|
|
44
|
+
if (this.tokenCache && Date.now() < this.tokenCache.expiresAt - 300_000) {
|
|
45
|
+
return this.tokenCache.token;
|
|
46
|
+
}
|
|
47
|
+
const tokenUrl = `https://login.microsoftonline.com/${this.tenantId}/oauth2/v2.0/token`;
|
|
48
|
+
const body = new URLSearchParams({
|
|
49
|
+
grant_type: "client_credentials",
|
|
50
|
+
client_id: this.clientId,
|
|
51
|
+
client_secret: this.clientSecret,
|
|
52
|
+
scope: "https://graph.microsoft.com/.default",
|
|
53
|
+
});
|
|
54
|
+
const response = await fetch(tokenUrl, {
|
|
55
|
+
method: "POST",
|
|
56
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
57
|
+
body: body.toString(),
|
|
58
|
+
});
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
// Sanitize error — Azure AD error responses may contain client_id and diagnostic info
|
|
61
|
+
throw new Error(`Graph token acquisition failed (HTTP ${response.status})`);
|
|
62
|
+
}
|
|
63
|
+
const data = (await response.json());
|
|
64
|
+
this.tokenCache = {
|
|
65
|
+
token: data.access_token,
|
|
66
|
+
expiresAt: Date.now() + data.expires_in * 1000,
|
|
67
|
+
};
|
|
68
|
+
return this.tokenCache.token;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Download a file from a Teams attachment content URL with proper authentication.
|
|
72
|
+
*
|
|
73
|
+
* Teams attachment URLs (e.g., https://teams.microsoft.com/api/...) require
|
|
74
|
+
* a Bearer token. This method fetches the file with the bot's Graph token.
|
|
75
|
+
*/
|
|
76
|
+
async downloadFile(contentUrl, maxSize) {
|
|
77
|
+
if (!contentUrl)
|
|
78
|
+
return null;
|
|
79
|
+
try {
|
|
80
|
+
const token = await this.getToken();
|
|
81
|
+
const response = await fetch(contentUrl, {
|
|
82
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
83
|
+
});
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
log.warn({ url: contentUrl.slice(0, 80), status: response.status }, "[GraphFileClient] Download failed");
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const contentLength = response.headers.get("content-length");
|
|
89
|
+
if (contentLength && parseInt(contentLength, 10) > maxSize) {
|
|
90
|
+
log.warn({ contentLength, maxSize }, "[GraphFileClient] File exceeds size limit");
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
94
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
95
|
+
if (buffer.length > maxSize) {
|
|
96
|
+
log.warn({ size: buffer.length, maxSize }, "[GraphFileClient] File exceeds size limit after download");
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
return buffer;
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
log.warn({ err }, "[GraphFileClient] Download error");
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Upload a file to the bot's OneDrive for Business and return a sharing URL.
|
|
108
|
+
*
|
|
109
|
+
* For files <= 4MB, uses simple PUT upload.
|
|
110
|
+
* For files > 4MB, uses upload session (resumable upload).
|
|
111
|
+
*
|
|
112
|
+
* The file is uploaded to /openacp-files/{sessionId}/{fileName} to keep
|
|
113
|
+
* files organized by session.
|
|
114
|
+
*
|
|
115
|
+
* @returns A sharing link URL that Teams users can access, or null on failure.
|
|
116
|
+
*
|
|
117
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-put-content
|
|
118
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession
|
|
119
|
+
*/
|
|
120
|
+
async uploadFile(sessionId, fileName, content, contentType) {
|
|
121
|
+
try {
|
|
122
|
+
const token = await this.getToken();
|
|
123
|
+
const remotePath = `/openacp-files/${sessionId}/${fileName}`;
|
|
124
|
+
let driveItemId;
|
|
125
|
+
if (content.length <= SMALL_FILE_LIMIT) {
|
|
126
|
+
// Simple upload for small files (≤4MB)
|
|
127
|
+
driveItemId = await this.simpleUpload(token, remotePath, content, contentType);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Resumable upload for large files (>4MB, up to 250MB)
|
|
131
|
+
driveItemId = await this.resumableUpload(token, remotePath, content);
|
|
132
|
+
}
|
|
133
|
+
// Create a sharing link
|
|
134
|
+
const shareUrl = await this.createSharingLink(token, driveItemId);
|
|
135
|
+
return shareUrl;
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
log.error({ err, sessionId, fileName }, "[GraphFileClient] Upload failed");
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Simple PUT upload for files ≤ 4MB.
|
|
144
|
+
* PUT /me/drive/root:/{path}:/content
|
|
145
|
+
*/
|
|
146
|
+
async simpleUpload(token, remotePath, content, contentType) {
|
|
147
|
+
const url = `${GRAPH_BASE}/me/drive/root:${remotePath}:/content`;
|
|
148
|
+
const response = await fetch(url, {
|
|
149
|
+
method: "PUT",
|
|
150
|
+
headers: {
|
|
151
|
+
Authorization: `Bearer ${token}`,
|
|
152
|
+
"Content-Type": contentType,
|
|
153
|
+
},
|
|
154
|
+
body: new Uint8Array(content),
|
|
155
|
+
});
|
|
156
|
+
if (!response.ok) {
|
|
157
|
+
throw new Error(`Simple upload failed (HTTP ${response.status})`);
|
|
158
|
+
}
|
|
159
|
+
const item = (await response.json());
|
|
160
|
+
return item.id;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Resumable upload for files > 4MB.
|
|
164
|
+
* Creates an upload session and uploads in 10MB chunks.
|
|
165
|
+
*
|
|
166
|
+
* @see https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession
|
|
167
|
+
*/
|
|
168
|
+
async resumableUpload(token, remotePath, content) {
|
|
169
|
+
// Step 1: Create upload session
|
|
170
|
+
const sessionUrl = `${GRAPH_BASE}/me/drive/root:${remotePath}:/createUploadSession`;
|
|
171
|
+
const sessionResponse = await fetch(sessionUrl, {
|
|
172
|
+
method: "POST",
|
|
173
|
+
headers: {
|
|
174
|
+
Authorization: `Bearer ${token}`,
|
|
175
|
+
"Content-Type": "application/json",
|
|
176
|
+
},
|
|
177
|
+
body: JSON.stringify({
|
|
178
|
+
item: { "@microsoft.graph.conflictBehavior": "rename" },
|
|
179
|
+
}),
|
|
180
|
+
});
|
|
181
|
+
if (!sessionResponse.ok) {
|
|
182
|
+
throw new Error(`Create upload session failed (HTTP ${sessionResponse.status})`);
|
|
183
|
+
}
|
|
184
|
+
const session = (await sessionResponse.json());
|
|
185
|
+
const uploadUrl = session.uploadUrl;
|
|
186
|
+
// Validate the upload URL points to a Microsoft-controlled host to prevent SSRF
|
|
187
|
+
// if the Graph API response were compromised or intercepted.
|
|
188
|
+
if (!/^https:\/\/[\w-]+(\.[\w-]+)*\.microsoft\.com(\/|$)/i.test(uploadUrl)) {
|
|
189
|
+
throw new Error(`Untrusted upload URL from Graph API: ${uploadUrl.slice(0, 80)}`);
|
|
190
|
+
}
|
|
191
|
+
// Step 2: Upload in 10MB chunks
|
|
192
|
+
const chunkSize = 10 * 1024 * 1024; // 10MB — must be multiple of 320KB
|
|
193
|
+
const totalSize = content.length;
|
|
194
|
+
let offset = 0;
|
|
195
|
+
let lastResponse = null;
|
|
196
|
+
while (offset < totalSize) {
|
|
197
|
+
const end = Math.min(offset + chunkSize, totalSize);
|
|
198
|
+
const chunk = content.subarray(offset, end);
|
|
199
|
+
// Upload session URL is pre-authenticated — Authorization header must NOT be
|
|
200
|
+
// included per Graph docs (it causes a 401 if present on the session URL).
|
|
201
|
+
lastResponse = await fetch(uploadUrl, {
|
|
202
|
+
method: "PUT",
|
|
203
|
+
headers: {
|
|
204
|
+
"Content-Length": String(chunk.length),
|
|
205
|
+
"Content-Range": `bytes ${offset}-${end - 1}/${totalSize}`,
|
|
206
|
+
},
|
|
207
|
+
body: new Uint8Array(chunk),
|
|
208
|
+
});
|
|
209
|
+
if (!lastResponse.ok && lastResponse.status !== 202) {
|
|
210
|
+
throw new Error(`Chunk upload failed at offset ${offset} (HTTP ${lastResponse.status})`);
|
|
211
|
+
}
|
|
212
|
+
offset = end;
|
|
213
|
+
}
|
|
214
|
+
if (!lastResponse)
|
|
215
|
+
throw new Error("No upload response received");
|
|
216
|
+
// Final chunk should return 200 or 201 with the drive item body.
|
|
217
|
+
// A 202 on the final chunk means the server hasn't finalized yet (rare edge case).
|
|
218
|
+
if (lastResponse.status !== 200 && lastResponse.status !== 201) {
|
|
219
|
+
throw new Error(`Upload completed but final response was HTTP ${lastResponse.status} (expected 200/201)`);
|
|
220
|
+
}
|
|
221
|
+
const item = (await lastResponse.json());
|
|
222
|
+
if (!item.id) {
|
|
223
|
+
throw new Error("Upload response missing drive item ID");
|
|
224
|
+
}
|
|
225
|
+
return item.id;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Create an anonymous sharing link for a drive item.
|
|
229
|
+
* POST /me/drive/items/{id}/createLink
|
|
230
|
+
*/
|
|
231
|
+
async createSharingLink(token, driveItemId) {
|
|
232
|
+
const url = `${GRAPH_BASE}/me/drive/items/${driveItemId}/createLink`;
|
|
233
|
+
const response = await fetch(url, {
|
|
234
|
+
method: "POST",
|
|
235
|
+
headers: {
|
|
236
|
+
Authorization: `Bearer ${token}`,
|
|
237
|
+
"Content-Type": "application/json",
|
|
238
|
+
},
|
|
239
|
+
body: JSON.stringify({
|
|
240
|
+
type: "view",
|
|
241
|
+
scope: "organization",
|
|
242
|
+
}),
|
|
243
|
+
});
|
|
244
|
+
if (!response.ok) {
|
|
245
|
+
// Fallback: return a direct webUrl instead
|
|
246
|
+
const itemUrl = `${GRAPH_BASE}/me/drive/items/${driveItemId}`;
|
|
247
|
+
const itemResponse = await fetch(itemUrl, {
|
|
248
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
249
|
+
});
|
|
250
|
+
if (itemResponse.ok) {
|
|
251
|
+
const item = (await itemResponse.json());
|
|
252
|
+
if (item.webUrl)
|
|
253
|
+
return item.webUrl;
|
|
254
|
+
}
|
|
255
|
+
throw new Error(`createLink failed (${response.status})`);
|
|
256
|
+
}
|
|
257
|
+
const link = (await response.json());
|
|
258
|
+
return link.link.webUrl;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import createTeamsPlugin from "./plugin.js";
|
|
2
|
+
export { createTeamsPlugin };
|
|
3
|
+
declare const _default: import("@openacp/cli").OpenACPPlugin;
|
|
4
|
+
export default _default;
|
|
5
|
+
export { TeamsAdapter } from "./adapter.js";
|
|
6
|
+
export { TeamsRenderer } from "./renderer.js";
|
|
7
|
+
export type { TeamsChannelConfig, TeamsPlatformData } from "./types.js";
|
|
8
|
+
export { DEFAULT_BOT_PORT } from "./types.js";
|
|
9
|
+
export type { ToolCardSnapshot, ToolDisplaySpec } from "./activity.js";
|
|
10
|
+
export type { OutputMode } from "./activity.js";
|
|
11
|
+
export type { TeamsDraftManager, TeamsMessageDraft } from "./draft-manager.js";
|
|
12
|
+
export type { PermissionHandler } from "./permissions.js";
|
|
13
|
+
export { SLASH_COMMANDS } from "./commands/index.js";
|
|
14
|
+
export { GraphFileClient } from "./graph.js";
|
|
15
|
+
export { validateBotCredentials, validateTenant, discoverTeamsAndChannels, parseTeamsLink } from "./validators.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,CAAC;;AAC7B,wBAAmC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import createTeamsPlugin from "./plugin.js";
|
|
2
|
+
export { createTeamsPlugin };
|
|
3
|
+
export default createTeamsPlugin();
|
|
4
|
+
export { TeamsAdapter } from "./adapter.js";
|
|
5
|
+
export { TeamsRenderer } from "./renderer.js";
|
|
6
|
+
export { DEFAULT_BOT_PORT } from "./types.js";
|
|
7
|
+
export { SLASH_COMMANDS } from "./commands/index.js";
|
|
8
|
+
export { GraphFileClient } from "./graph.js";
|
|
9
|
+
export { validateBotCredentials, validateTenant, discoverTeamsAndChannels, parseTeamsLink } from "./validators.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,eAAe,iBAAiB,EAAE,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/media.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { GraphFileClient } from "./graph.js";
|
|
2
|
+
/**
|
|
3
|
+
* Download a file from a Teams attachment content URL.
|
|
4
|
+
*
|
|
5
|
+
* When a GraphFileClient is provided, uses authenticated Graph API download.
|
|
6
|
+
* Falls back to unauthenticated fetch (works for some public URLs).
|
|
7
|
+
*/
|
|
8
|
+
export declare function downloadTeamsFile(url: string, fileName: string, graphClient?: GraphFileClient): Promise<Buffer | null>;
|
|
9
|
+
export declare function isAttachmentTooLarge(size: number): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Upload a file to OneDrive via Graph API and return a sharing URL.
|
|
12
|
+
* Returns null if Graph client is not configured or upload fails.
|
|
13
|
+
*/
|
|
14
|
+
export declare function uploadFileViaGraph(graphClient: GraphFileClient | undefined, sessionId: string, filePath: string, fileName: string, contentType: string): Promise<string | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Build an Adaptive Card for a file attachment.
|
|
17
|
+
*
|
|
18
|
+
* When a shareUrl is available (from Graph API upload), includes a download button.
|
|
19
|
+
* Otherwise shows file info with a note that Graph API is required.
|
|
20
|
+
*
|
|
21
|
+
* Uses Adaptive Card v1.2 for maximum mobile compatibility.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildFileAttachmentCard(fileName: string, size: number, contentType: string, shareUrl?: string): {
|
|
24
|
+
type: "AdaptiveCard";
|
|
25
|
+
version: "1.2";
|
|
26
|
+
body: unknown[];
|
|
27
|
+
actions?: unknown[];
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuCxB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,eAAe,GAAG,SAAS,EACxC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAgDhF"}
|
package/dist/media.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { log } from "@openacp/plugin-sdk";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
const MAX_FILE_SIZE = 250 * 1024 * 1024; // 250MB Teams limit
|
|
4
|
+
/**
|
|
5
|
+
* Download a file from a Teams attachment content URL.
|
|
6
|
+
*
|
|
7
|
+
* When a GraphFileClient is provided, uses authenticated Graph API download.
|
|
8
|
+
* Falls back to unauthenticated fetch (works for some public URLs).
|
|
9
|
+
*/
|
|
10
|
+
export async function downloadTeamsFile(url, fileName, graphClient) {
|
|
11
|
+
if (!url)
|
|
12
|
+
return null;
|
|
13
|
+
// Prefer Graph API authenticated download
|
|
14
|
+
if (graphClient) {
|
|
15
|
+
return graphClient.downloadFile(url, MAX_FILE_SIZE);
|
|
16
|
+
}
|
|
17
|
+
// Fallback: unauthenticated fetch (may fail for Teams-hosted files)
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(url);
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
log.warn({ url: url.slice(0, 80), fileName, status: response.status }, "[media] downloadTeamsFile: HTTP error");
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const contentLength = response.headers.get("content-length");
|
|
25
|
+
if (contentLength) {
|
|
26
|
+
const size = parseInt(contentLength, 10);
|
|
27
|
+
if (size > MAX_FILE_SIZE) {
|
|
28
|
+
throw new Error(`File too large: ${size} bytes (max ${MAX_FILE_SIZE})`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
32
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
33
|
+
if (buffer.length > MAX_FILE_SIZE) {
|
|
34
|
+
throw new Error(`File too large: ${buffer.length} bytes (max ${MAX_FILE_SIZE})`);
|
|
35
|
+
}
|
|
36
|
+
return buffer;
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
if (err instanceof Error && err.message.startsWith("File too large")) {
|
|
40
|
+
throw err;
|
|
41
|
+
}
|
|
42
|
+
log.warn({ err, fileName }, "[media] downloadTeamsFile: fetch failed (non-fatal)");
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function isAttachmentTooLarge(size) {
|
|
47
|
+
return size > MAX_FILE_SIZE;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Upload a file to OneDrive via Graph API and return a sharing URL.
|
|
51
|
+
* Returns null if Graph client is not configured or upload fails.
|
|
52
|
+
*/
|
|
53
|
+
export async function uploadFileViaGraph(graphClient, sessionId, filePath, fileName, contentType) {
|
|
54
|
+
if (!graphClient) {
|
|
55
|
+
log.debug("[media] No Graph client configured, skipping file upload");
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const content = await fs.promises.readFile(filePath);
|
|
60
|
+
return await graphClient.uploadFile(sessionId, fileName, content, contentType);
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
log.error({ err, sessionId, fileName }, "[media] Graph upload failed");
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Build an Adaptive Card for a file attachment.
|
|
69
|
+
*
|
|
70
|
+
* When a shareUrl is available (from Graph API upload), includes a download button.
|
|
71
|
+
* Otherwise shows file info with a note that Graph API is required.
|
|
72
|
+
*
|
|
73
|
+
* Uses Adaptive Card v1.2 for maximum mobile compatibility.
|
|
74
|
+
*/
|
|
75
|
+
export function buildFileAttachmentCard(fileName, size, contentType, shareUrl) {
|
|
76
|
+
const sizeStr = size >= 1024 * 1024
|
|
77
|
+
? `${(size / 1024 / 1024).toFixed(1)} MB`
|
|
78
|
+
: `${(size / 1024).toFixed(1)} KB`;
|
|
79
|
+
const body = [
|
|
80
|
+
{ type: "TextBlock", text: `📎 **${fileName}**`, weight: "Bolder", wrap: true },
|
|
81
|
+
{
|
|
82
|
+
type: "ColumnSet",
|
|
83
|
+
columns: [
|
|
84
|
+
{
|
|
85
|
+
type: "Column",
|
|
86
|
+
width: "auto",
|
|
87
|
+
items: [{ type: "TextBlock", text: `Size: ${sizeStr}`, size: "Small", isSubtle: true }],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: "Column",
|
|
91
|
+
width: "auto",
|
|
92
|
+
items: [{ type: "TextBlock", text: `Type: ${contentType}`, size: "Small", isSubtle: true }],
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
if (shareUrl) {
|
|
98
|
+
return {
|
|
99
|
+
type: "AdaptiveCard",
|
|
100
|
+
version: "1.2",
|
|
101
|
+
body,
|
|
102
|
+
actions: [
|
|
103
|
+
{
|
|
104
|
+
type: "Action.OpenUrl",
|
|
105
|
+
title: "Download",
|
|
106
|
+
url: shareUrl,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
body.push({
|
|
112
|
+
type: "TextBlock",
|
|
113
|
+
text: "_File generated by agent. Configure Graph API permissions for direct download links._",
|
|
114
|
+
size: "Small",
|
|
115
|
+
isSubtle: true,
|
|
116
|
+
wrap: true,
|
|
117
|
+
});
|
|
118
|
+
return { type: "AdaptiveCard", version: "1.2", body };
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,oBAAoB;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,QAAgB,EAChB,WAA6B;IAE7B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,0CAA0C;IAC1C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,uCAAuC,CAAC,CAAC;YAChH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,eAAe,aAAa,GAAG,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,eAAe,aAAa,GAAG,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrE,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,qDAAqD,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,GAAG,aAAa,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAwC,EACxC,SAAiB,EACjB,QAAgB,EAChB,QAAgB,EAChB,WAAmB;IAEnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,IAAY,EACZ,WAAmB,EACnB,QAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI;QACjC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;QACzC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAErC,MAAM,IAAI,GAAc;QACtB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,QAAQ,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/E;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACxF;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBAC5F;aACF;SACF;KACF,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,KAAK;YACd,IAAI;YACJ,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,UAAU;oBACjB,GAAG,EAAE,QAAQ;iBACd;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,uFAAuF;QAC7F,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TurnContext } from "@microsoft/agents-hosting";
|
|
2
|
+
import type { PermissionRequest, NotificationMessage, Session } from "@openacp/plugin-sdk";
|
|
3
|
+
export declare class PermissionHandler {
|
|
4
|
+
private getSession;
|
|
5
|
+
private sendNotification;
|
|
6
|
+
private pending;
|
|
7
|
+
private pendingTimestamps;
|
|
8
|
+
private _evictionTimer;
|
|
9
|
+
constructor(getSession: (sessionId: string) => Session | undefined, sendNotification: (notification: NotificationMessage) => Promise<void>);
|
|
10
|
+
dispose(): void;
|
|
11
|
+
private evictStale;
|
|
12
|
+
sendPermissionRequest(session: Session, request: PermissionRequest, context: TurnContext): Promise<void>;
|
|
13
|
+
handleCardAction(context: TurnContext, verb: string, sessionId: string, callbackKey: string, requestId: string): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAmC3F,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IAN1B,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,cAAc,CAA6C;gBAGzD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,EACtD,gBAAgB,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC;IAOhF,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,UAAU;IAcZ,qBAAqB,CACzB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IA4FV,gBAAgB,CACpB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;CA8EpB"}
|