@microsoft/agents-copilotstudio-client 1.5.0-beta.6.ga236d9a19c → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,8 +8,9 @@ exports.CopilotStudioWebChat = void 0;
8
8
  const uuid_1 = require("uuid");
9
9
  const agents_activity_1 = require("@microsoft/agents-activity");
10
10
  const rxjs_1 = require("rxjs");
11
- const logger_1 = require("@microsoft/agents-activity/logger");
12
- const logger = (0, logger_1.debug)('copilot-studio:webchat');
11
+ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
12
+ const observability_1 = require("./observability");
13
+ const logger = (0, agents_telemetry_1.debug)('copilot-studio:webchat');
13
14
  /**
14
15
  * Creates a wrapper that invokes `fn` at most once.
15
16
  * On the first call the wrapper invokes `fn(value)` and returns whatever `fn` returns.
@@ -141,125 +142,161 @@ class CopilotStudioWebChat {
141
142
  */
142
143
  static createConnection(client, settings) {
143
144
  var _a;
144
- logger.info('--> Creating connection between Copilot Studio and WebChat ...');
145
- const normalizedConversationId = (settings === null || settings === void 0 ? void 0 : settings.conversationId) && settings.conversationId.trim() !== ''
146
- ? settings.conversationId.trim()
147
- : undefined;
148
- const shouldStart = (_a = settings === null || settings === void 0 ? void 0 : settings.startConversation) !== null && _a !== void 0 ? _a : !normalizedConversationId;
149
- let sequence = 0;
150
- let activitySubscriber;
151
- let conversation;
152
- let activeConversationId = normalizedConversationId;
153
- let ended = false;
154
- let started = false;
155
- const connectionStatus$ = new rxjs_1.BehaviorSubject(0);
156
- const activity$ = createObservable(async (subscriber) => {
157
- var _a;
158
- activitySubscriber = subscriber;
159
- const handleAcknowledgementOnce = once(async () => {
160
- connectionStatus$.next(2);
161
- await Promise.resolve(); // Webchat requires an extra tick to process the connection status change
162
- });
163
- // When resuming (shouldStart === false), transition straight to connected
164
- if (!shouldStart || started) {
165
- await handleAcknowledgementOnce();
166
- return;
167
- }
168
- started = true;
169
- logger.debug('--> Connection established.');
170
- notifyTyping();
171
- for await (const activity of client.startConversationStreaming()) {
172
- delete activity.replyToId;
173
- if (!conversation && activity.conversation) {
174
- conversation = activity.conversation;
175
- }
176
- if ((_a = activity.conversation) === null || _a === void 0 ? void 0 : _a.id) {
177
- activeConversationId = activity.conversation.id;
145
+ const managed = (0, agents_telemetry_1.trace)(observability_1.CopilotStudioClientTraceDefinitions.createConnection);
146
+ managed.record({ showTyping: settings === null || settings === void 0 ? void 0 : settings.showTyping });
147
+ try {
148
+ logger.info('--> Creating connection between Copilot Studio and WebChat ...');
149
+ const normalizedConversationId = (settings === null || settings === void 0 ? void 0 : settings.conversationId) && settings.conversationId.trim() !== ''
150
+ ? settings.conversationId.trim()
151
+ : undefined;
152
+ const shouldStart = (_a = settings === null || settings === void 0 ? void 0 : settings.startConversation) !== null && _a !== void 0 ? _a : !normalizedConversationId;
153
+ let sequence = 0;
154
+ let activitySubscriber;
155
+ let conversation;
156
+ let activeConversationId = normalizedConversationId;
157
+ let ended = false;
158
+ let started = false;
159
+ const connectionStatus$ = new rxjs_1.BehaviorSubject(0);
160
+ const activity$ = createObservable(async (subscriber) => {
161
+ var _a;
162
+ try {
163
+ activitySubscriber = subscriber;
164
+ const handleAcknowledgementOnce = once(async () => {
165
+ connectionStatus$.next(2);
166
+ await Promise.resolve(); // Webchat requires an extra tick to process the connection status change
167
+ });
168
+ // When resuming (shouldStart === false), transition straight to connected
169
+ if (!shouldStart || started) {
170
+ await handleAcknowledgementOnce();
171
+ return;
172
+ }
173
+ started = true;
174
+ logger.debug('--> Connection established.');
175
+ notifyTyping();
176
+ for await (const activity of client.startConversationStreaming()) {
177
+ delete activity.replyToId;
178
+ if (!conversation && activity.conversation) {
179
+ conversation = activity.conversation;
180
+ }
181
+ if ((_a = activity.conversation) === null || _a === void 0 ? void 0 : _a.id) {
182
+ activeConversationId = activity.conversation.id;
183
+ }
184
+ await handleAcknowledgementOnce();
185
+ notifyActivity(activity);
186
+ managed.actions.receivedFromCopilot(activity);
187
+ }
188
+ // If no activities received from bot, we should still acknowledge.
189
+ await handleAcknowledgementOnce();
178
190
  }
179
- await handleAcknowledgementOnce();
180
- notifyActivity(activity);
181
- }
182
- // If no activities received from bot, we should still acknowledge.
183
- await handleAcknowledgementOnce();
184
- });
185
- const notifyActivity = (activity) => {
186
- const newActivity = {
187
- ...activity,
188
- timestamp: new Date().toISOString(),
189
- channelData: {
190
- ...activity.channelData,
191
- 'webchat:sequence-id': sequence,
192
- },
193
- };
194
- sequence++;
195
- logger.debug(`Notify '${newActivity.type}' activity to WebChat:`, newActivity);
196
- activitySubscriber === null || activitySubscriber === void 0 ? void 0 : activitySubscriber.next(newActivity);
197
- };
198
- const notifyTyping = () => {
199
- if (!(settings === null || settings === void 0 ? void 0 : settings.showTyping)) {
200
- return;
201
- }
202
- const from = conversation
203
- ? { id: conversation.id, name: conversation.name }
204
- : { id: 'agent', name: 'Agent' };
205
- notifyActivity({ type: 'typing', from });
206
- };
207
- return {
208
- connectionStatus$,
209
- activity$,
210
- get conversationId() {
211
- return activeConversationId;
212
- },
213
- postActivity(activity) {
214
- logger.info('--> Preparing to send activity to Copilot Studio ...');
215
- if (!activity) {
216
- throw new Error('Activity cannot be null.');
191
+ catch (error) {
192
+ throw managed.fail(error);
217
193
  }
218
- if (ended) {
219
- throw new Error('Connection has been ended.');
194
+ finally {
195
+ managed.end();
220
196
  }
221
- if (!activitySubscriber) {
222
- throw new Error('Activity subscriber is not initialized.');
197
+ });
198
+ const notifyActivity = (activity) => {
199
+ const newActivity = {
200
+ ...activity,
201
+ timestamp: new Date().toISOString(),
202
+ channelData: {
203
+ ...activity.channelData,
204
+ 'webchat:sequence-id': sequence,
205
+ },
206
+ };
207
+ sequence++;
208
+ logger.debug(`Notify '${newActivity.type}' activity to WebChat:`, newActivity);
209
+ activitySubscriber === null || activitySubscriber === void 0 ? void 0 : activitySubscriber.next(newActivity);
210
+ };
211
+ const notifyTyping = () => {
212
+ if (!(settings === null || settings === void 0 ? void 0 : settings.showTyping)) {
213
+ return;
223
214
  }
224
- return createObservable(async (subscriber) => {
225
- var _a;
215
+ const from = conversation
216
+ ? { id: conversation.id, name: conversation.name }
217
+ : { id: 'agent', name: 'Agent' };
218
+ notifyActivity({ type: 'typing', from });
219
+ };
220
+ return {
221
+ connectionStatus$,
222
+ activity$,
223
+ get conversationId() {
224
+ return activeConversationId;
225
+ },
226
+ postActivity(activity) {
226
227
  try {
227
- logger.info('--> Sending activity to Copilot Studio ...');
228
- const newActivity = agents_activity_1.Activity.fromObject({
229
- ...activity,
230
- id: (0, uuid_1.v4)(),
231
- attachments: await processAttachments(activity)
232
- });
233
- notifyActivity(newActivity);
234
- notifyTyping();
235
- // Notify WebChat immediately that the message was sent
236
- subscriber.next(newActivity.id);
237
- // Stream the agent's response, passing activeConversationId for URL routing
238
- for await (const responseActivity of client.sendActivityStreaming(newActivity, activeConversationId)) {
239
- if (!activeConversationId && ((_a = responseActivity.conversation) === null || _a === void 0 ? void 0 : _a.id)) {
240
- activeConversationId = responseActivity.conversation.id;
241
- }
242
- notifyActivity(responseActivity);
243
- logger.info('<-- Activity received correctly from Copilot Studio.');
228
+ logger.info('--> Preparing to send activity to Copilot Studio ...');
229
+ if (!activity) {
230
+ throw new Error('Activity cannot be null.');
231
+ }
232
+ if (ended) {
233
+ throw new Error('Connection has been ended.');
244
234
  }
245
- subscriber.complete();
235
+ if (!activitySubscriber) {
236
+ throw new Error('Activity subscriber is not initialized.');
237
+ }
238
+ const result = createObservable(async (subscriber) => {
239
+ var _a;
240
+ try {
241
+ logger.info('--> Sending activity to Copilot Studio ...');
242
+ const newActivity = agents_activity_1.Activity.fromObject({
243
+ ...activity,
244
+ id: (0, uuid_1.v4)(),
245
+ attachments: await processAttachments(activity)
246
+ });
247
+ notifyActivity(newActivity);
248
+ managed.actions.sentToWebChat(newActivity);
249
+ notifyTyping();
250
+ // Notify WebChat immediately that the message was sent
251
+ subscriber.next(newActivity.id);
252
+ // Stream the agent's response, passing activeConversationId for URL routing
253
+ for await (const responseActivity of client.sendActivityStreaming(newActivity, activeConversationId)) {
254
+ if (!activeConversationId && ((_a = responseActivity.conversation) === null || _a === void 0 ? void 0 : _a.id)) {
255
+ activeConversationId = responseActivity.conversation.id;
256
+ }
257
+ notifyActivity(responseActivity);
258
+ managed.actions.receivedFromCopilot(responseActivity);
259
+ logger.info('<-- Activity received correctly from Copilot Studio.');
260
+ }
261
+ subscriber.complete();
262
+ }
263
+ catch (error) {
264
+ logger.error('Error sending Activity to Copilot Studio:', error);
265
+ subscriber.error(error);
266
+ managed.fail(error);
267
+ }
268
+ finally {
269
+ managed.end();
270
+ }
271
+ });
272
+ return result;
246
273
  }
247
274
  catch (error) {
248
- logger.error('Error sending Activity to Copilot Studio:', error);
249
- subscriber.error(error);
275
+ throw managed.fail(error);
250
276
  }
251
- });
252
- },
253
- end() {
254
- logger.info('--> Ending connection between Copilot Studio and WebChat ...');
255
- ended = true;
256
- connectionStatus$.complete();
257
- if (activitySubscriber) {
258
- activitySubscriber.complete();
259
- activitySubscriber = undefined;
260
- }
261
- },
262
- };
277
+ finally {
278
+ managed.end();
279
+ }
280
+ },
281
+ end() {
282
+ logger.info('--> Ending connection between Copilot Studio and WebChat ...');
283
+ ended = true;
284
+ connectionStatus$.complete();
285
+ if (activitySubscriber) {
286
+ activitySubscriber.complete();
287
+ activitySubscriber = undefined;
288
+ }
289
+ // End the connection span
290
+ managed.end();
291
+ },
292
+ };
293
+ }
294
+ catch (error) {
295
+ throw managed.fail(error);
296
+ }
297
+ finally {
298
+ managed.end();
299
+ }
263
300
  }
264
301
  }
265
302
  exports.CopilotStudioWebChat = CopilotStudioWebChat;
@@ -1 +1 @@
1
- {"version":3,"file":"copilotStudioWebChat.js","sourceRoot":"","sources":["../../src/copilotStudioWebChat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilotStudioWebChat.js","sourceRoot":"","sources":["../../src/copilotStudioWebChat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './metrics';
2
+ export * from './traces';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // Licensed under the MIT License.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ __exportStar(require("./metrics"), exports);
20
+ __exportStar(require("./traces"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/observability/index.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,kCAAkC;;;;;;;;;;;;;;;;AAElC,4CAAyB;AACzB,2CAAwB"}
@@ -0,0 +1,13 @@
1
+ export declare const CopilotStudioClientMetrics: {
2
+ activitiesReceivedCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
3
+ activitiesSentCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
4
+ conversationsStartedCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
5
+ webchatConnectionsCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
6
+ requestsCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
7
+ requestsErrorCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
8
+ executeStreamingCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
9
+ subscribeAsyncCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
10
+ subscribeEventCounter: import("@opentelemetry/api").Counter<import("@opentelemetry/api").Attributes>;
11
+ streamDuration: import("@opentelemetry/api").Histogram<import("@opentelemetry/api").Attributes>;
12
+ requestDuration: import("@opentelemetry/api").Histogram<import("@opentelemetry/api").Attributes>;
13
+ };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.CopilotStudioClientMetrics = void 0;
6
+ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
7
+ exports.CopilotStudioClientMetrics = {
8
+ // Counters
9
+ activitiesReceivedCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_ACTIVITIES_RECEIVED, {
10
+ unit: 'activities',
11
+ description: 'Total number of activities received by the Copilot Studio client'
12
+ }),
13
+ activitiesSentCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_ACTIVITIES_SENT, {
14
+ unit: 'activities',
15
+ description: 'Total number of activities sent to Copilot Studio'
16
+ }),
17
+ conversationsStartedCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_CONVERSATIONS_STARTED, {
18
+ unit: 'conversations',
19
+ description: 'Total number of conversations started with Copilot Studio'
20
+ }),
21
+ webchatConnectionsCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_WEBCHAT_CONNECTIONS, {
22
+ unit: 'connections',
23
+ description: 'Total number of webchat connections created with Copilot Studio'
24
+ }),
25
+ requestsCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_REQUEST_COUNT, {
26
+ unit: 'requests',
27
+ description: 'Total number of HTTP/SSE requests made to Copilot Studio'
28
+ }),
29
+ requestsErrorCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_REQUEST_ERRORS, {
30
+ unit: 'requests',
31
+ description: 'Total number of failed requests to Copilot Studio'
32
+ }),
33
+ executeStreamingCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_EXECUTE_STREAMING, {
34
+ unit: 'operations',
35
+ description: 'Total number of execute streaming operations'
36
+ }),
37
+ subscribeAsyncCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_SUBSCRIBE_ASYNC, {
38
+ unit: 'operations',
39
+ description: 'Total number of subscribeAsync operations'
40
+ }),
41
+ subscribeEventCounter: agents_telemetry_1.metric.counter(agents_telemetry_1.MetricNames.CSC_SUBSCRIBE_EVENT, {
42
+ unit: 'events',
43
+ description: 'Total number of events received via subscribeAsync'
44
+ }),
45
+ // Duration Histograms
46
+ streamDuration: agents_telemetry_1.metric.histogram(agents_telemetry_1.MetricNames.CSC_STREAM_DURATION, {
47
+ unit: 'ms',
48
+ description: 'Duration of SSE stream sessions in milliseconds'
49
+ }),
50
+ requestDuration: agents_telemetry_1.metric.histogram(agents_telemetry_1.MetricNames.CSC_REQUEST_DURATION, {
51
+ unit: 'ms',
52
+ description: 'Duration of requests to Copilot Studio in milliseconds'
53
+ })
54
+ };
55
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/observability/metrics.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,kCAAkC;;;AAElC,kEAAiE;AAEpD,QAAA,0BAA0B,GAAG;IACxC,WAAW;IACX,yBAAyB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,uBAAuB,EAAE;QAC7E,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kEAAkE;KAChF,CAAC;IAEF,qBAAqB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,mBAAmB,EAAE;QACrE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,mDAAmD;KACjE,CAAC;IAEF,2BAA2B,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,yBAAyB,EAAE;QACjF,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,2DAA2D;KACzE,CAAC;IAEF,yBAAyB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,uBAAuB,EAAE;QAC7E,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;IAEF,eAAe,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,iBAAiB,EAAE;QAC7D,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0DAA0D;KACxE,CAAC;IAEF,oBAAoB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,kBAAkB,EAAE;QACnE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mDAAmD;KACjE,CAAC;IAEF,uBAAuB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,qBAAqB,EAAE;QACzE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8CAA8C;KAC5D,CAAC;IAEF,qBAAqB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,mBAAmB,EAAE;QACrE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,2CAA2C;KACzD,CAAC;IAEF,qBAAqB,EAAE,yBAAM,CAAC,OAAO,CAAC,8BAAW,CAAC,mBAAmB,EAAE;QACrE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oDAAoD;KAClE,CAAC;IAEF,sBAAsB;IACtB,cAAc,EAAE,yBAAM,CAAC,SAAS,CAAC,8BAAW,CAAC,mBAAmB,EAAE;QAChE,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,iDAAiD;KAC/D,CAAC;IAEF,eAAe,EAAE,yBAAM,CAAC,SAAS,CAAC,8BAAW,CAAC,oBAAoB,EAAE;QAClE,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,wDAAwD;KACtE,CAAC;CACH,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { Activity } from '@microsoft/agents-activity';
2
+ import { SubscribeEvent } from '../subscribeEvent';
3
+ export declare const CopilotStudioClientTraceDefinitions: {
4
+ createConnection: import("@microsoft/agents-telemetry").TraceDefinition<{
5
+ showTyping: boolean;
6
+ }, {
7
+ receivedFromCopilot(activity: Activity): void;
8
+ sentToWebChat(activity: Activity): void;
9
+ }>;
10
+ postRequest: import("@microsoft/agents-telemetry").TraceDefinition<{
11
+ url: string;
12
+ method: string;
13
+ }, {
14
+ receivedFromCopilot(activity: Activity): void;
15
+ }>;
16
+ startConversation: import("@microsoft/agents-telemetry").TraceDefinition<{
17
+ shouldEmitStartEvent: boolean;
18
+ }, object>;
19
+ sendActivity: import("@microsoft/agents-telemetry").TraceDefinition<{
20
+ activity: Activity;
21
+ }, object>;
22
+ executeStreaming: import("@microsoft/agents-telemetry").TraceDefinition<{
23
+ activity: Activity;
24
+ conversationId: string;
25
+ }, object>;
26
+ subscribeAsync: import("@microsoft/agents-telemetry").TraceDefinition<{
27
+ conversationId: string;
28
+ lastReceivedEventId: string;
29
+ }, {
30
+ eventReceivedFromCopilot(event: SubscribeEvent): void;
31
+ }>;
32
+ };
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CopilotStudioClientTraceDefinitions = void 0;
4
+ const agents_activity_1 = require("@microsoft/agents-activity");
5
+ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
6
+ const metrics_1 = require("./metrics");
7
+ exports.CopilotStudioClientTraceDefinitions = {
8
+ createConnection: agents_telemetry_1.trace.define({
9
+ name: agents_telemetry_1.SpanNames.COPILOT_CREATE_CONNECTION,
10
+ record: {
11
+ showTyping: false,
12
+ },
13
+ actions: ({ span }) => ({
14
+ receivedFromCopilot(activity) {
15
+ var _a, _b, _c;
16
+ span.addEvent('activity.received.from.copilot.studio', {
17
+ 'copilot.webchat.activity.type': (_a = activity.type) !== null && _a !== void 0 ? _a : 'unknown',
18
+ 'copilot.webchat.activity.conversation_id': (_c = (_b = activity.conversation) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : 'unknown'
19
+ });
20
+ },
21
+ sentToWebChat(activity) {
22
+ var _a, _b, _c;
23
+ span.addEvent('activity.sent.to.webchat', {
24
+ 'copilot.webchat.activity.type': (_a = activity.type) !== null && _a !== void 0 ? _a : 'unknown',
25
+ 'copilot.webchat.activity.conversation_id': (_c = (_b = activity.conversation) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : 'unknown'
26
+ });
27
+ },
28
+ }),
29
+ end({ span, record }) {
30
+ var _a;
31
+ const attributes = {
32
+ 'copilot.webchat.show_typing': (_a = record.showTyping) !== null && _a !== void 0 ? _a : 'unknown'
33
+ };
34
+ span.setAttributes(attributes);
35
+ metrics_1.CopilotStudioClientMetrics.webchatConnectionsCounter.add(1, attributes);
36
+ }
37
+ }),
38
+ postRequest: agents_telemetry_1.trace.define({
39
+ name: agents_telemetry_1.SpanNames.COPILOT_POST_REQUEST,
40
+ record: {
41
+ url: '',
42
+ method: ''
43
+ },
44
+ actions: ({ span }) => ({
45
+ receivedFromCopilot(activity) {
46
+ var _a, _b, _c;
47
+ const attributes = {
48
+ 'copilot.activity.type': (_a = activity.type) !== null && _a !== void 0 ? _a : 'unknown',
49
+ 'copilot.activity.conversation_id': (_c = (_b = activity.conversation) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : 'unknown'
50
+ };
51
+ span.addEvent('activity.received', {
52
+ 'copilot.post_request.activity.type': attributes['copilot.activity.type'],
53
+ 'copilot.post_request.activity.conversation_id': attributes['copilot.activity.conversation_id']
54
+ });
55
+ metrics_1.CopilotStudioClientMetrics.activitiesReceivedCounter.add(1, attributes);
56
+ }
57
+ }),
58
+ end({ span, record, duration, error }) {
59
+ var _a, _b;
60
+ const attributes = {
61
+ 'copilot.post_request.url': (_a = record.url) !== null && _a !== void 0 ? _a : 'unknown',
62
+ 'copilot.post_request.method': (_b = record.method) !== null && _b !== void 0 ? _b : 'unknown'
63
+ };
64
+ const metricAttributes = {
65
+ operation: 'postRequestAsync',
66
+ 'copilot.post_request.url': attributes['copilot.post_request.url'],
67
+ 'copilot.post_request.method': attributes['copilot.post_request.method']
68
+ };
69
+ span.setAttributes(attributes);
70
+ metrics_1.CopilotStudioClientMetrics.requestsCounter.add(1, metricAttributes);
71
+ metrics_1.CopilotStudioClientMetrics.streamDuration.record(duration, metricAttributes);
72
+ if (error) {
73
+ metrics_1.CopilotStudioClientMetrics.requestsErrorCounter.add(1, {
74
+ ...metricAttributes,
75
+ 'error.type': error instanceof Error ? error.name : typeof error,
76
+ });
77
+ }
78
+ }
79
+ }),
80
+ startConversation: agents_telemetry_1.trace.define({
81
+ name: agents_telemetry_1.SpanNames.COPILOT_START_CONVERSATION,
82
+ record: {
83
+ shouldEmitStartEvent: false,
84
+ },
85
+ end({ span, record, duration }) {
86
+ const attributes = record.shouldEmitStartEvent
87
+ ? { 'copilot.emit_start_event': true }
88
+ : { 'copilot.request': true };
89
+ const metricAttributes = {
90
+ operation: 'startConversationStreaming',
91
+ ...attributes,
92
+ };
93
+ span.setAttributes(attributes);
94
+ metrics_1.CopilotStudioClientMetrics.conversationsStartedCounter.add(1, metricAttributes);
95
+ metrics_1.CopilotStudioClientMetrics.requestDuration.record(duration, metricAttributes);
96
+ }
97
+ }),
98
+ sendActivity: agents_telemetry_1.trace.define({
99
+ name: agents_telemetry_1.SpanNames.COPILOT_SEND_ACTIVITY,
100
+ record: {
101
+ activity: agents_activity_1.Activity.fromObject({ type: 'unknown' }),
102
+ },
103
+ end({ span, record, duration }) {
104
+ var _a, _b, _c;
105
+ const attributes = {
106
+ 'copilot.activity.type': (_a = record.activity.type) !== null && _a !== void 0 ? _a : 'unknown',
107
+ 'copilot.activity.conversation_id': (_c = (_b = record.activity.conversation) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : 'unknown'
108
+ };
109
+ const metricAttributes = {
110
+ operation: 'sendActivityStreaming',
111
+ ...attributes,
112
+ };
113
+ span.setAttributes(attributes);
114
+ metrics_1.CopilotStudioClientMetrics.activitiesSentCounter.add(1, attributes);
115
+ metrics_1.CopilotStudioClientMetrics.requestDuration.record(duration, metricAttributes);
116
+ }
117
+ }),
118
+ executeStreaming: agents_telemetry_1.trace.define({
119
+ name: agents_telemetry_1.SpanNames.COPILOT_EXECUTE_STREAMING,
120
+ record: {
121
+ activity: agents_activity_1.Activity.fromObject({ type: 'unknown' }),
122
+ conversationId: 'unknown'
123
+ },
124
+ end({ span, record, duration }) {
125
+ var _a, _b;
126
+ const attributes = {
127
+ 'copilot.activity.type': (_a = record.activity.type) !== null && _a !== void 0 ? _a : 'unknown',
128
+ 'copilot.activity.conversation_id': (_b = record.conversationId) !== null && _b !== void 0 ? _b : 'unknown'
129
+ };
130
+ const metricAttributes = {
131
+ operation: 'executeStreaming',
132
+ ...attributes,
133
+ };
134
+ span.setAttributes(attributes);
135
+ metrics_1.CopilotStudioClientMetrics.executeStreamingCounter.add(1, attributes);
136
+ metrics_1.CopilotStudioClientMetrics.requestDuration.record(duration, metricAttributes);
137
+ }
138
+ }),
139
+ subscribeAsync: agents_telemetry_1.trace.define({
140
+ name: agents_telemetry_1.SpanNames.COPILOT_SUBSCRIBE_ASYNC,
141
+ record: {
142
+ conversationId: 'unknown',
143
+ lastReceivedEventId: 'unknown'
144
+ },
145
+ actions: ({ span }) => ({
146
+ eventReceivedFromCopilot(event) {
147
+ var _a, _b;
148
+ const attributes = {
149
+ 'copilot.subscribe_async.event.id': (_a = event.eventId) !== null && _a !== void 0 ? _a : 'unknown',
150
+ 'copilot.subscribe_async.event.activity.type': (_b = event.activity.type) !== null && _b !== void 0 ? _b : 'unknown',
151
+ };
152
+ span.addEvent('event.received', attributes);
153
+ metrics_1.CopilotStudioClientMetrics.subscribeEventCounter.add(1, attributes);
154
+ }
155
+ }),
156
+ end({ span, record, duration }) {
157
+ var _a, _b;
158
+ const attributes = {
159
+ 'copilot.subscribe_async.conversation_id': (_a = record.conversationId) !== null && _a !== void 0 ? _a : 'unknown',
160
+ 'copilot.subscribe_async.last_received_event_id': (_b = record.lastReceivedEventId) !== null && _b !== void 0 ? _b : 'unknown'
161
+ };
162
+ const metricAttributes = {
163
+ operation: 'subscribeAsync',
164
+ 'copilot.conversation_id': attributes['copilot.subscribe_async.conversation_id'],
165
+ 'copilot.last_received_event_id': attributes['copilot.subscribe_async.last_received_event_id']
166
+ };
167
+ span.setAttributes(attributes);
168
+ metrics_1.CopilotStudioClientMetrics.subscribeAsyncCounter.add(1, metricAttributes);
169
+ metrics_1.CopilotStudioClientMetrics.streamDuration.record(duration, metricAttributes);
170
+ }
171
+ })
172
+ };
173
+ //# sourceMappingURL=traces.js.map