@hahnfeld/teams-adapter 1.2.0 → 1.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hahnfeld/teams-adapter",
3
- "version": "1.2.0",
4
- "description": "Teams adapter plugin for OpenACP — Adaptive Cards, commands, streaming",
3
+ "version": "1.3.0",
4
+ "description": "Teams adapter plugin for OpenACP — streaming message composer, rate limiter, commands",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -1,69 +0,0 @@
1
- import type { TurnContext } from "@microsoft/agents-hosting";
2
- export interface MessageRef {
3
- activityId?: string;
4
- conversationId?: string;
5
- serviceUrl?: string;
6
- }
7
- /** Function signature for acquiring a bot token — injected from the adapter */
8
- export type AcquireBotToken = () => Promise<string | null>;
9
- export declare class TeamsMessageDraft {
10
- private context;
11
- private sendQueue;
12
- private sessionId;
13
- private acquireBotToken?;
14
- private buffer;
15
- private ref?;
16
- private flushTimer?;
17
- private flushPromise;
18
- private lastSentBuffer;
19
- private firstFlushPending;
20
- private finalizing;
21
- private lastAppendTime;
22
- private stallTimer?;
23
- /** After finalize, holds the last activity ref + text for post-finalize edits */
24
- private _finalRef?;
25
- constructor(context: TurnContext, sendQueue: {
26
- enqueue<T>(fn: () => Promise<T>, opts?: {
27
- type?: string;
28
- }): Promise<T | undefined>;
29
- }, sessionId: string, acquireBotToken?: AcquireBotToken | undefined);
30
- /** Update the TurnContext to the latest inbound turn (prevents stale context refs) */
31
- updateContext(context: TurnContext): void;
32
- append(text: string): void;
33
- private resetStallTimer;
34
- getBuffer(): string;
35
- /** Return the last finalized activity ref for post-finalize edits (e.g., appending "Task completed") */
36
- getFinalRef(): {
37
- activityId: string;
38
- conversationId: string;
39
- serviceUrl: string;
40
- text: string;
41
- } | undefined;
42
- private scheduleFlush;
43
- flush(): Promise<void>;
44
- /**
45
- * Update an existing message via the Bot Framework REST API.
46
- * Bypasses the teams.apps SDK context which doesn't support updateActivity.
47
- */
48
- private updateActivityViaRest;
49
- private _saveFinalRef;
50
- stripPattern(pattern: RegExp): Promise<void>;
51
- finalize(): Promise<void>;
52
- private _finalizeInner;
53
- }
54
- export declare class TeamsDraftManager {
55
- private sendQueue;
56
- private acquireBotToken?;
57
- private drafts;
58
- constructor(sendQueue: {
59
- enqueue<T>(fn: () => Promise<T>, opts?: {
60
- type?: string;
61
- }): Promise<T | undefined>;
62
- }, acquireBotToken?: AcquireBotToken | undefined);
63
- getOrCreate(sessionId: string, context: TurnContext): TeamsMessageDraft;
64
- hasDraft(sessionId: string): boolean;
65
- getDraft(sessionId: string): TeamsMessageDraft | undefined;
66
- finalize(sessionId: string, _context?: TurnContext, _isAssistant?: boolean): Promise<void>;
67
- cleanup(sessionId: string): void;
68
- }
69
- //# sourceMappingURL=draft-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft-manager.d.ts","sourceRoot":"","sources":["../src/draft-manager.ts"],"names":[],"mappings":"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"}
@@ -1,333 +0,0 @@
1
- import { log } from "@openacp/plugin-sdk";
2
- import { splitMessage } from "./formatting.js";
3
- import { sendText } from "./send-utils.js";
4
- /** First flush fires quickly so the user sees content fast */
5
- const FIRST_FLUSH_INTERVAL = 500;
6
- /** Subsequent flushes are slower to avoid rate limits (Teams: 7 ops/sec/conversation) */
7
- const UPDATE_FLUSH_INTERVAL = 2000;
8
- const MAX_DISPLAY_LENGTH = 25000;
9
- /** If no new text arrives for this long, consider the stream stalled */
10
- const STALL_TIMEOUT = 30_000;
11
- export class TeamsMessageDraft {
12
- context;
13
- sendQueue;
14
- sessionId;
15
- acquireBotToken;
16
- buffer = "";
17
- ref;
18
- flushTimer;
19
- flushPromise = Promise.resolve();
20
- lastSentBuffer = "";
21
- firstFlushPending = false;
22
- finalizing = false;
23
- lastAppendTime = 0;
24
- stallTimer;
25
- /** After finalize, holds the last activity ref + text for post-finalize edits */
26
- _finalRef;
27
- constructor(context, sendQueue, sessionId, acquireBotToken) {
28
- this.context = context;
29
- this.sendQueue = sendQueue;
30
- this.sessionId = sessionId;
31
- this.acquireBotToken = acquireBotToken;
32
- }
33
- /** Update the TurnContext to the latest inbound turn (prevents stale context refs) */
34
- updateContext(context) {
35
- this.context = context;
36
- }
37
- append(text) {
38
- if (!text)
39
- return;
40
- this.buffer += text;
41
- this.lastAppendTime = Date.now();
42
- this.scheduleFlush();
43
- this.resetStallTimer();
44
- }
45
- resetStallTimer() {
46
- if (this.stallTimer)
47
- clearTimeout(this.stallTimer);
48
- this.stallTimer = setTimeout(() => {
49
- if (this.buffer && !this.finalizing) {
50
- log.warn({ sessionId: this.sessionId, bufLen: this.buffer.length }, "[TeamsMessageDraft] Stream stalled — finalizing");
51
- this.buffer += "\n\n---\n_Response was cut short — the model likely reached its output token limit. Send a follow-up message to continue._";
52
- this.finalize().catch(() => { });
53
- }
54
- }, STALL_TIMEOUT);
55
- if (this.stallTimer.unref)
56
- this.stallTimer.unref();
57
- }
58
- getBuffer() {
59
- return this.buffer;
60
- }
61
- /** Return the last finalized activity ref for post-finalize edits (e.g., appending "Task completed") */
62
- getFinalRef() {
63
- return this._finalRef;
64
- }
65
- scheduleFlush() {
66
- if (this.flushTimer)
67
- return;
68
- const interval = this.ref?.activityId ? UPDATE_FLUSH_INTERVAL : FIRST_FLUSH_INTERVAL;
69
- this.flushTimer = setTimeout(() => {
70
- this.flushTimer = undefined;
71
- this.flushPromise = this.flushPromise.then(() => this.flush()).catch(() => { });
72
- }, interval);
73
- }
74
- async flush() {
75
- if (!this.buffer)
76
- return;
77
- if (this.firstFlushPending)
78
- return;
79
- log.debug({ sessionId: this.sessionId, bufLen: this.buffer.length, hasRef: !!this.ref?.activityId }, "[TeamsMessageDraft] flush");
80
- // If buffer exceeds limit, finalize the current message with its portion
81
- // and start a new streaming message for the overflow.
82
- if (this.buffer.length > MAX_DISPLAY_LENGTH && this.ref?.activityId) {
83
- const finalChunk = this.buffer.slice(0, MAX_DISPLAY_LENGTH);
84
- const overflow = this.buffer.slice(MAX_DISPLAY_LENGTH);
85
- // Update current message with its final content
86
- log.info({ sessionId: this.sessionId, finalChunkLen: finalChunk.length, overflowLen: overflow.length }, "[TeamsMessageDraft] splitting to new message");
87
- await this.updateActivityViaRest(finalChunk).catch((err) => {
88
- log.warn({ err, sessionId: this.sessionId }, "[TeamsMessageDraft] split: update failed");
89
- });
90
- // Reset for a new message
91
- this.ref = undefined;
92
- this.lastSentBuffer = "";
93
- this.firstFlushPending = false;
94
- this.buffer = overflow;
95
- // Immediately send the overflow as a new message to resume streaming
96
- if (overflow) {
97
- this.firstFlushPending = true;
98
- try {
99
- const result = await this.sendQueue.enqueue(() => sendText(this.context, overflow), { type: "other" });
100
- if (result) {
101
- this.ref = {
102
- activityId: result.id,
103
- conversationId: this.context.activity.conversation?.id,
104
- serviceUrl: this.context.activity.serviceUrl,
105
- };
106
- this.lastSentBuffer = overflow;
107
- }
108
- }
109
- catch (err) {
110
- log.warn({ err, sessionId: this.sessionId }, "[TeamsMessageDraft] flush: overflow send failed");
111
- }
112
- finally {
113
- this.firstFlushPending = false;
114
- }
115
- }
116
- return;
117
- }
118
- const snapshot = this.buffer;
119
- if (!this.ref?.activityId) {
120
- // First message — send via context.send() to get the activityId
121
- this.firstFlushPending = true;
122
- try {
123
- const result = await this.sendQueue.enqueue(() => sendText(this.context, snapshot), { type: "other" });
124
- if (result) {
125
- this.ref = {
126
- activityId: result.id,
127
- conversationId: this.context.activity.conversation?.id,
128
- serviceUrl: this.context.activity.serviceUrl,
129
- };
130
- this.lastSentBuffer = snapshot;
131
- }
132
- }
133
- catch (err) {
134
- log.warn({ err, sessionId: this.sessionId }, "[TeamsMessageDraft] flush: initial send failed");
135
- }
136
- finally {
137
- this.firstFlushPending = false;
138
- }
139
- }
140
- else {
141
- // Subsequent updates — use Bot Framework REST API to edit the message
142
- if (snapshot === this.lastSentBuffer)
143
- return;
144
- try {
145
- const success = await this.updateActivityViaRest(snapshot);
146
- if (success) {
147
- this.lastSentBuffer = snapshot;
148
- }
149
- else {
150
- log.warn({ sessionId: this.sessionId, bufLen: snapshot.length }, "[TeamsMessageDraft] flush: REST update returned false");
151
- }
152
- }
153
- catch (err) {
154
- log.warn({ err, sessionId: this.sessionId }, "[TeamsMessageDraft] flush: update failed");
155
- }
156
- }
157
- }
158
- /**
159
- * Update an existing message via the Bot Framework REST API.
160
- * Bypasses the teams.apps SDK context which doesn't support updateActivity.
161
- */
162
- async updateActivityViaRest(text) {
163
- if (!this.ref?.activityId || !this.ref.serviceUrl || !this.ref.conversationId)
164
- return false;
165
- if (!this.acquireBotToken)
166
- return false;
167
- const token = await this.acquireBotToken();
168
- if (!token)
169
- return false;
170
- const url = `${this.ref.serviceUrl}/v3/conversations/${encodeURIComponent(this.ref.conversationId)}/activities/${encodeURIComponent(this.ref.activityId)}`;
171
- const response = await fetch(url, {
172
- method: "PUT",
173
- headers: {
174
- "Content-Type": "application/json",
175
- "Authorization": `Bearer ${token}`,
176
- },
177
- body: JSON.stringify({
178
- type: "message",
179
- text: text.replace(/(?<!\n)\n(?!\n)/g, "\n\n"), // Teams newline normalization
180
- textFormat: "markdown",
181
- }),
182
- });
183
- if (!response.ok) {
184
- log.warn({ status: response.status, sessionId: this.sessionId }, "[TeamsMessageDraft] REST updateActivity failed");
185
- return false;
186
- }
187
- return true;
188
- }
189
- _saveFinalRef(text) {
190
- if (this.ref?.activityId && this.ref.conversationId && this.ref.serviceUrl) {
191
- this._finalRef = {
192
- activityId: this.ref.activityId,
193
- conversationId: this.ref.conversationId,
194
- serviceUrl: this.ref.serviceUrl,
195
- text,
196
- };
197
- }
198
- }
199
- async stripPattern(pattern) {
200
- if (!this.buffer)
201
- return;
202
- try {
203
- this.buffer = this.buffer.replace(pattern, "").trim();
204
- }
205
- catch {
206
- // Regex failed — leave buffer unchanged
207
- }
208
- }
209
- async finalize() {
210
- if (this.finalizing)
211
- return;
212
- this.finalizing = true;
213
- if (this.stallTimer) {
214
- clearTimeout(this.stallTimer);
215
- this.stallTimer = undefined;
216
- }
217
- try {
218
- await this._finalizeInner();
219
- }
220
- finally {
221
- this.finalizing = false;
222
- }
223
- }
224
- async _finalizeInner() {
225
- if (this.flushTimer) {
226
- clearTimeout(this.flushTimer);
227
- this.flushTimer = undefined;
228
- }
229
- // Wait for any in-flight flush to complete
230
- await this.flushPromise;
231
- if (!this.buffer)
232
- return;
233
- // If we have an activityId and the buffer fits in one message, do a final update
234
- if (this.ref?.activityId && this.buffer.length <= MAX_DISPLAY_LENGTH) {
235
- if (this.buffer !== this.lastSentBuffer) {
236
- try {
237
- const success = await this.updateActivityViaRest(this.buffer);
238
- if (success) {
239
- this._saveFinalRef(this.buffer);
240
- return;
241
- }
242
- }
243
- catch {
244
- // Fall through to send as new message
245
- }
246
- }
247
- else {
248
- this._saveFinalRef(this.buffer);
249
- return; // Already sent, nothing to update
250
- }
251
- }
252
- // Buffer exceeds single message limit or update failed — send as new message(s).
253
- // If we have an existing streaming message, update it with the first chunk,
254
- // then send the rest as new messages.
255
- const chunks = splitMessage(this.buffer, MAX_DISPLAY_LENGTH);
256
- let lastChunkText = "";
257
- for (let i = 0; i < chunks.length; i++) {
258
- const content = chunks[i];
259
- try {
260
- if (i === 0 && this.ref?.activityId) {
261
- const success = await this.updateActivityViaRest(content);
262
- if (!success) {
263
- const result = await this.sendQueue.enqueue(() => sendText(this.context, content), { type: "other" });
264
- if (result) {
265
- this.ref = {
266
- activityId: result.id,
267
- conversationId: this.context.activity.conversation?.id,
268
- serviceUrl: this.context.activity.serviceUrl,
269
- };
270
- }
271
- }
272
- }
273
- else {
274
- const result = await this.sendQueue.enqueue(() => sendText(this.context, content), { type: "other" });
275
- if (result) {
276
- this.ref = {
277
- activityId: result.id,
278
- conversationId: this.context.activity.conversation?.id,
279
- serviceUrl: this.context.activity.serviceUrl,
280
- };
281
- }
282
- }
283
- lastChunkText = content;
284
- }
285
- catch (err) {
286
- log.warn({ err, sessionId: this.sessionId, chunk: i }, "[TeamsMessageDraft] finalize: chunk send failed");
287
- }
288
- }
289
- if (lastChunkText)
290
- this._saveFinalRef(lastChunkText);
291
- }
292
- }
293
- export class TeamsDraftManager {
294
- sendQueue;
295
- acquireBotToken;
296
- drafts = new Map();
297
- constructor(sendQueue, acquireBotToken) {
298
- this.sendQueue = sendQueue;
299
- this.acquireBotToken = acquireBotToken;
300
- }
301
- getOrCreate(sessionId, context) {
302
- let draft = this.drafts.get(sessionId);
303
- if (!draft) {
304
- draft = new TeamsMessageDraft(context, this.sendQueue, sessionId, this.acquireBotToken);
305
- this.drafts.set(sessionId, draft);
306
- }
307
- else {
308
- // Re-bind to the latest TurnContext to prevent stale context references
309
- // when a new inbound message arrives on the same session (new turn).
310
- draft.updateContext(context);
311
- }
312
- return draft;
313
- }
314
- hasDraft(sessionId) {
315
- return this.drafts.has(sessionId);
316
- }
317
- getDraft(sessionId) {
318
- return this.drafts.get(sessionId);
319
- }
320
- async finalize(sessionId, _context, _isAssistant) {
321
- const draft = this.drafts.get(sessionId);
322
- if (!draft)
323
- return;
324
- // Delete BEFORE awaiting to prevent concurrent finalize() calls
325
- // from double-finalizing the same draft (matches Telegram pattern)
326
- this.drafts.delete(sessionId);
327
- await draft.finalize();
328
- }
329
- cleanup(sessionId) {
330
- this.drafts.delete(sessionId);
331
- }
332
- }
333
- //# sourceMappingURL=draft-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft-manager.js","sourceRoot":"","sources":["../src/draft-manager.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import type { OutgoingMessage, NotificationMessage, DisplayVerbosity } from "@openacp/plugin-sdk";
2
- import { BaseRenderer } from "@openacp/plugin-sdk";
3
- export declare class TeamsRenderer extends BaseRenderer {
4
- renderToolCall(content: OutgoingMessage, verbosity: DisplayVerbosity): {
5
- body: string;
6
- format: "markdown";
7
- };
8
- renderToolUpdate(content: OutgoingMessage, verbosity: DisplayVerbosity): {
9
- body: string;
10
- format: "markdown";
11
- };
12
- renderPlan(content: OutgoingMessage): {
13
- body: string;
14
- format: "markdown";
15
- };
16
- renderUsage(content: OutgoingMessage, verbosity: DisplayVerbosity): {
17
- body: string;
18
- format: "markdown";
19
- };
20
- renderError(content: OutgoingMessage): {
21
- body: string;
22
- format: "markdown";
23
- };
24
- renderNotification(notification: NotificationMessage): {
25
- body: string;
26
- format: "markdown";
27
- };
28
- renderSystemMessage(content: OutgoingMessage): {
29
- body: string;
30
- format: "markdown";
31
- };
32
- renderSessionEnd(_content: OutgoingMessage): {
33
- body: string;
34
- format: "markdown";
35
- };
36
- renderModeChange(content: OutgoingMessage): {
37
- body: string;
38
- format: "markdown";
39
- };
40
- renderConfigUpdate(content?: OutgoingMessage): {
41
- body: string;
42
- format: "markdown";
43
- };
44
- renderModelUpdate(content: OutgoingMessage): {
45
- body: string;
46
- format: "markdown";
47
- };
48
- }
49
- //# sourceMappingURL=renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAA2C,MAAM,qBAAqB,CAAC;AAC3I,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAK3G,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAK7G,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAK1E,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAKxG,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAI3E,kBAAkB,CAAC,YAAY,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAa3F,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAInF,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAIjF,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAKhF,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;IAMnF,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE;CAIlF"}
package/dist/renderer.js DELETED
@@ -1,55 +0,0 @@
1
- import { BaseRenderer } from "@openacp/plugin-sdk";
2
- import { formatToolCall, formatToolUpdate, formatPlan, formatUsage } from "./formatting.js";
3
- export class TeamsRenderer extends BaseRenderer {
4
- renderToolCall(content, verbosity) {
5
- const meta = (content.metadata ?? {});
6
- return { body: formatToolCall(meta, verbosity), format: "markdown" };
7
- }
8
- renderToolUpdate(content, verbosity) {
9
- const meta = (content.metadata ?? {});
10
- return { body: formatToolUpdate(meta, verbosity), format: "markdown" };
11
- }
12
- renderPlan(content) {
13
- const entries = content.metadata?.entries ?? [];
14
- return { body: formatPlan(entries), format: "markdown" };
15
- }
16
- renderUsage(content, verbosity) {
17
- const meta = content.metadata;
18
- return { body: formatUsage(meta ?? {}, verbosity), format: "markdown" };
19
- }
20
- renderError(content) {
21
- return { body: `❌ **Error:** ${content.text}`, format: "markdown" };
22
- }
23
- renderNotification(notification) {
24
- const emoji = {
25
- completed: "✅", error: "❌", permission: "🔐", input_required: "💬", budget_warning: "⚠️",
26
- };
27
- const icon = emoji[notification.type] || "ℹ️";
28
- const name = notification.sessionName ? ` **${notification.sessionName}**` : "";
29
- let text = `${icon}${name}: ${notification.summary}`;
30
- if (notification.deepLink) {
31
- text += `\n${notification.deepLink}`;
32
- }
33
- return { body: text, format: "markdown" };
34
- }
35
- renderSystemMessage(content) {
36
- return { body: content.text, format: "markdown" };
37
- }
38
- renderSessionEnd(_content) {
39
- return { body: "✅ Done", format: "markdown" };
40
- }
41
- renderModeChange(content) {
42
- const modeId = content.metadata?.modeId ?? "";
43
- return { body: `🔄 **Mode:** ${modeId}`, format: "markdown" };
44
- }
45
- renderConfigUpdate(content) {
46
- const key = content ? content.metadata?.key : undefined;
47
- const detail = key ? ` \`${key}\`` : "";
48
- return { body: `⚙️ **Config updated**${detail}`, format: "markdown" };
49
- }
50
- renderModelUpdate(content) {
51
- const modelId = content.metadata?.modelId ?? "";
52
- return { body: `🤖 **Model:** ${modelId}`, format: "markdown" };
53
- }
54
- }
55
- //# sourceMappingURL=renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Task Module (dialog) definitions for Teams.
3
- *
4
- * Task Modules render as modal popups containing Adaptive Cards.
5
- * They're triggered by Action.Submit with msteams.type = "task/fetch",
6
- * and the bot handles task/fetch and task/submit invoke activities.
7
- *
8
- * @see https://learn.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/task-modules/task-modules-bots
9
- */
10
- /** Build the "New Session" dialog card — agent selection + workspace input */
11
- export declare function buildNewSessionDialog(agents: Array<{
12
- name: string;
13
- description?: string;
14
- }>, defaultWorkspace: string): {
15
- task: unknown;
16
- };
17
- /** Build the "Settings" dialog card — view and edit key settings */
18
- export declare function buildSettingsDialog(settings: {
19
- defaultAgent?: string;
20
- workspace?: string;
21
- outputMode?: string;
22
- sessionId?: string;
23
- sessionAgent?: string;
24
- sessionModel?: string;
25
- sessionBypass?: boolean;
26
- sessionTts?: string;
27
- }): {
28
- task: unknown;
29
- };
30
- /** Build a simple message response to close the dialog */
31
- export declare function buildDialogMessage(text: string): {
32
- task: unknown;
33
- };
34
- //# sourceMappingURL=task-modules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-modules.d.ts","sourceRoot":"","sources":["../src/task-modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,gBAAgB,EAAE,MAAM,GACvB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAyDnB;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAgEnB;AAED,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAOlE"}