@microsoft/agents-telemetry 1.5.0-beta.23.g2277c6f0ab

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.
Files changed (90) hide show
  1. package/README.md +342 -0
  2. package/dist/cjs/package.json +73 -0
  3. package/dist/cjs/src/index.cjs +14 -0
  4. package/dist/cjs/src/index.cjs.map +1 -0
  5. package/dist/cjs/src/index.d.cts +93 -0
  6. package/dist/cjs/src/index.d.ts +13 -0
  7. package/dist/cjs/src/index.js +54 -0
  8. package/dist/cjs/src/index.js.map +1 -0
  9. package/dist/cjs/src/loggers/base.d.ts +21 -0
  10. package/dist/cjs/src/loggers/base.js +12 -0
  11. package/dist/cjs/src/loggers/base.js.map +1 -0
  12. package/dist/cjs/src/loggers/debug.d.ts +19 -0
  13. package/dist/cjs/src/loggers/debug.js +70 -0
  14. package/dist/cjs/src/loggers/debug.js.map +1 -0
  15. package/dist/cjs/src/loggers/otel.d.ts +10 -0
  16. package/dist/cjs/src/loggers/otel.js +77 -0
  17. package/dist/cjs/src/loggers/otel.js.map +1 -0
  18. package/dist/cjs/src/observability/category.d.ts +11 -0
  19. package/dist/cjs/src/observability/category.js +67 -0
  20. package/dist/cjs/src/observability/category.js.map +1 -0
  21. package/dist/cjs/src/observability/constants.d.ts +111 -0
  22. package/dist/cjs/src/observability/constants.js +136 -0
  23. package/dist/cjs/src/observability/constants.js.map +1 -0
  24. package/dist/cjs/src/observability/metric.d.ts +9 -0
  25. package/dist/cjs/src/observability/metric.js +18 -0
  26. package/dist/cjs/src/observability/metric.js.map +1 -0
  27. package/dist/cjs/src/observability/trace.d.ts +13 -0
  28. package/dist/cjs/src/observability/trace.js +135 -0
  29. package/dist/cjs/src/observability/trace.js.map +1 -0
  30. package/dist/cjs/src/types.d.ts +150 -0
  31. package/dist/cjs/src/types.js +7 -0
  32. package/dist/cjs/src/types.js.map +1 -0
  33. package/dist/cjs/src/utils/attempt.d.ts +30 -0
  34. package/dist/cjs/src/utils/attempt.js +53 -0
  35. package/dist/cjs/src/utils/attempt.js.map +1 -0
  36. package/dist/cjs/src/utils/noop.d.ts +18 -0
  37. package/dist/cjs/src/utils/noop.js +46 -0
  38. package/dist/cjs/src/utils/noop.js.map +1 -0
  39. package/dist/cjs/src/utils/platform.d.ts +8 -0
  40. package/dist/cjs/src/utils/platform.js +12 -0
  41. package/dist/cjs/src/utils/platform.js.map +1 -0
  42. package/dist/cjs/src/utils/setting.d.ts +11 -0
  43. package/dist/cjs/src/utils/setting.js +30 -0
  44. package/dist/cjs/src/utils/setting.js.map +1 -0
  45. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  46. package/dist/esm/package.json +3 -0
  47. package/dist/esm/src/index.d.mts +93 -0
  48. package/dist/esm/src/index.d.ts +13 -0
  49. package/dist/esm/src/index.js +51 -0
  50. package/dist/esm/src/index.js.map +1 -0
  51. package/dist/esm/src/index.mjs +15 -0
  52. package/dist/esm/src/index.mjs.map +1 -0
  53. package/dist/esm/src/loggers/base.d.ts +21 -0
  54. package/dist/esm/src/loggers/base.js +9 -0
  55. package/dist/esm/src/loggers/base.js.map +1 -0
  56. package/dist/esm/src/loggers/debug.d.ts +19 -0
  57. package/dist/esm/src/loggers/debug.js +63 -0
  58. package/dist/esm/src/loggers/debug.js.map +1 -0
  59. package/dist/esm/src/loggers/otel.d.ts +10 -0
  60. package/dist/esm/src/loggers/otel.js +74 -0
  61. package/dist/esm/src/loggers/otel.js.map +1 -0
  62. package/dist/esm/src/observability/category.d.ts +11 -0
  63. package/dist/esm/src/observability/category.js +64 -0
  64. package/dist/esm/src/observability/category.js.map +1 -0
  65. package/dist/esm/src/observability/constants.d.ts +111 -0
  66. package/dist/esm/src/observability/constants.js +133 -0
  67. package/dist/esm/src/observability/constants.js.map +1 -0
  68. package/dist/esm/src/observability/metric.d.ts +9 -0
  69. package/dist/esm/src/observability/metric.js +15 -0
  70. package/dist/esm/src/observability/metric.js.map +1 -0
  71. package/dist/esm/src/observability/trace.d.ts +13 -0
  72. package/dist/esm/src/observability/trace.js +132 -0
  73. package/dist/esm/src/observability/trace.js.map +1 -0
  74. package/dist/esm/src/types.d.ts +150 -0
  75. package/dist/esm/src/types.js +6 -0
  76. package/dist/esm/src/types.js.map +1 -0
  77. package/dist/esm/src/utils/attempt.d.ts +30 -0
  78. package/dist/esm/src/utils/attempt.js +49 -0
  79. package/dist/esm/src/utils/attempt.js.map +1 -0
  80. package/dist/esm/src/utils/noop.d.ts +18 -0
  81. package/dist/esm/src/utils/noop.js +41 -0
  82. package/dist/esm/src/utils/noop.js.map +1 -0
  83. package/dist/esm/src/utils/platform.d.ts +8 -0
  84. package/dist/esm/src/utils/platform.js +9 -0
  85. package/dist/esm/src/utils/platform.js.map +1 -0
  86. package/dist/esm/src/utils/setting.d.ts +11 -0
  87. package/dist/esm/src/utils/setting.js +27 -0
  88. package/dist/esm/src/utils/setting.js.map +1 -0
  89. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  90. package/package.json +73 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES, SpanCategories, SpanNames } from './constants.js';
6
+ import { createDebugLogger } from '../loggers/debug.js';
7
+ import { getSetting } from '../utils/setting.js';
8
+ const logger = createDebugLogger('agents:telemetry');
9
+ /**
10
+ * Resolves disabled spans once at module load time.
11
+ *
12
+ * @remarks
13
+ * - Unknown categories are ignored and logged as warnings.
14
+ * - Duplicate categories are de-duplicated by prefix before span names are expanded.
15
+ */
16
+ const disabledSpans = (() => {
17
+ const rawValue = getSetting(AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES).trim().toUpperCase();
18
+ if (!rawValue) {
19
+ return [];
20
+ }
21
+ const envCategories = rawValue
22
+ .split(/[\s,]+/)
23
+ .map((category) => category.trim())
24
+ .filter(Boolean);
25
+ const spanNames = Object.entries(SpanNames);
26
+ const processed = new Set();
27
+ const result = [];
28
+ for (const category of envCategories) {
29
+ const prefixes = SpanCategories[category];
30
+ if (!prefixes) {
31
+ logger.warn(`Invalid span category "${category}" in ${AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES}. Valid categories are: ${Object.keys(SpanCategories).join(', ')}`);
32
+ continue;
33
+ }
34
+ for (const prefix of prefixes) {
35
+ if (processed.has(prefix)) {
36
+ continue;
37
+ }
38
+ processed.add(prefix);
39
+ for (const [key, name] of spanNames) {
40
+ if (key.startsWith(prefix)) {
41
+ result.push(name);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ if (result.length > 0) {
47
+ logger.debug('Disabled Span names:', result);
48
+ }
49
+ return result;
50
+ })();
51
+ /**
52
+ * Determines if a span is disabled based on its name and the `AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES` environment variable or configuration setting.
53
+ * @param name The name of the span to check.
54
+ * @returns A boolean indicating whether the span is disabled.
55
+ */
56
+ export function isSpanDisabled(name) {
57
+ if (disabledSpans.length === 0) {
58
+ return false;
59
+ }
60
+ const result = disabledSpans.includes(name);
61
+ logger.debug(`Span "${name}" disabled:`, result);
62
+ return result;
63
+ }
64
+ //# sourceMappingURL=category.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category.js","sourceRoot":"","sources":["../../../../src/observability/category.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,yCAAyC,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,MAAM,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;IAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC,yCAAyC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ;SAC3B,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAE3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAuC,CAAC,CAAA;QACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,QAAQ,yCAAyC,2BAA2B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnK,SAAQ;QACV,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,SAAQ;YACV,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAErB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,EAAE,CAAA;AAEJ;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAE,IAAc;IAC5C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,aAAa,EAAE,MAAM,CAAC,CAAA;IAChD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * Environment variable or configuration setting name for disabling spans by category in the Agents SDK telemetry. The value should be comma-separated or whitespace-separated list of span categories to disable. See `SpanCategories` for available categories.
7
+ */
8
+ export declare const AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES = "AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES";
9
+ /**
10
+ * Categories of spans used for telemetry in the Agents SDK. Spans can be disabled by category using the `AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES` environment variable or configuration setting.
11
+ */
12
+ export declare const SpanCategories: {
13
+ readonly STORAGE: readonly ["STORAGE_"];
14
+ readonly AUTHORIZATION: readonly ["AUTHORIZATION_", "USER_TOKEN_CLIENT_"];
15
+ readonly AUTHENTICATION: readonly ["AUTHENTICATION_"];
16
+ };
17
+ /**
18
+ * Span names used for telemetry in the Agents SDK.
19
+ */
20
+ export declare const SpanNames: {
21
+ readonly ADAPTER_PROCESS: "agents.adapter.process";
22
+ readonly ADAPTER_SEND_ACTIVITIES: "agents.adapter.send_activities";
23
+ readonly ADAPTER_UPDATE_ACTIVITY: "agents.adapter.update_activity";
24
+ readonly ADAPTER_DELETE_ACTIVITY: "agents.adapter.delete_activity";
25
+ readonly ADAPTER_CONTINUE_CONVERSATION: "agents.adapter.continue_conversation";
26
+ readonly ADAPTER_CREATE_CONNECTOR_CLIENT: "agents.adapter.create_connector_client";
27
+ readonly ADAPTER_CREATE_USER_TOKEN_CLIENT: "agents.adapter.create_user_token_client";
28
+ readonly AGENTS_APP_RUN: "agents.app.run";
29
+ readonly AGENTS_APP_ROUTE_HANDLER: "agents.app.route_handler";
30
+ readonly AGENTS_APP_BEFORE_TURN: "agents.app.before_turn";
31
+ readonly AGENTS_APP_AFTER_TURN: "agents.app.after_turn";
32
+ readonly AGENTS_APP_DOWNLOAD_FILES: "agents.app.download_files";
33
+ readonly CONNECTOR_SEND_TO_CONVERSATION: "agents.connector.send_to_conversation";
34
+ readonly CONNECTOR_REPLY_TO_ACTIVITY: "agents.connector.reply_to_activity";
35
+ readonly CONNECTOR_UPDATE_ACTIVITY: "agents.connector.update_activity";
36
+ readonly CONNECTOR_DELETE_ACTIVITY: "agents.connector.delete_activity";
37
+ readonly CONNECTOR_CREATE_CONVERSATION: "agents.connector.create_conversation";
38
+ readonly CONNECTOR_GET_CONVERSATIONS: "agents.connector.get_conversations";
39
+ readonly CONNECTOR_GET_CONVERSATION_MEMBER: "agents.connector.get_conversation_member";
40
+ readonly CONNECTOR_UPLOAD_ATTACHMENT: "agents.connector.upload_attachment";
41
+ readonly CONNECTOR_GET_ATTACHMENT: "agents.connector.get_attachment";
42
+ readonly CONNECTOR_GET_ATTACHMENT_INFO: "agents.connector.get_attachment_info";
43
+ readonly STORAGE_READ: "agents.storage.read";
44
+ readonly STORAGE_WRITE: "agents.storage.write";
45
+ readonly STORAGE_DELETE: "agents.storage.delete";
46
+ readonly AGENT_CLIENT_POST_ACTIVITY: "agents.agent_client.post_activity";
47
+ readonly AUTHENTICATION_GET_ACCESS_TOKEN: "agents.authentication.get_access_token";
48
+ readonly AUTHENTICATION_ACQUIRE_TOKEN_ON_BEHALF_OF: "agents.authentication.acquire_token_on_behalf_of";
49
+ readonly AUTHENTICATION_GET_AGENTIC_INSTANCE_TOKEN: "agents.authentication.get_agentic_instance_token";
50
+ readonly AUTHENTICATION_GET_AGENTIC_USER_TOKEN: "agents.authentication.get_agentic_user_token";
51
+ readonly AUTHORIZATION_AGENTIC_TOKEN: "agents.authorization.agentic_token";
52
+ readonly AUTHORIZATION_AZURE_BOT_TOKEN: "agents.authorization.azure_bot_token";
53
+ readonly AUTHORIZATION_AZURE_BOT_SIGNIN: "agents.authorization.azure_bot_signin";
54
+ readonly AUTHORIZATION_AZURE_BOT_SIGNOUT: "agents.authorization.azure_bot_signout";
55
+ readonly USER_TOKEN_CLIENT_GET_USER_TOKEN: "agents.user_token_client.get_user_token";
56
+ readonly USER_TOKEN_CLIENT_SIGN_OUT: "agents.user_token_client.sign_out";
57
+ readonly USER_TOKEN_CLIENT_GET_SIGN_IN_RESOURCE: "agents.user_token_client.get_sign_in_resource";
58
+ readonly USER_TOKEN_CLIENT_EXCHANGE_TOKEN: "agents.user_token_client.exchange_token";
59
+ readonly USER_TOKEN_CLIENT_GET_TOKEN_OR_SIGN_IN_RESOURCE: "agents.user_token_client.get_token_or_sign_in_resource";
60
+ readonly USER_TOKEN_CLIENT_GET_TOKEN_STATUS: "agents.user_token_client.get_token_status";
61
+ readonly USER_TOKEN_CLIENT_GET_AAD_TOKENS: "agents.user_token_client.get_aad_tokens";
62
+ readonly PROACTIVE_STORE_CONVERSATION: "agents.proactive.store_conversation";
63
+ readonly PROACTIVE_GET_CONVERSATION: "agents.proactive.get_conversation";
64
+ readonly PROACTIVE_GET_CONVERSATION_OR_THROW: "agents.proactive.get_conversation_or_throw";
65
+ readonly PROACTIVE_DELETE_CONVERSATION: "agents.proactive.delete_conversation";
66
+ readonly PROACTIVE_SEND_ACTIVITY: "agents.proactive.send_activity";
67
+ readonly PROACTIVE_CONTINUE_CONVERSATION: "agents.proactive.continue_conversation";
68
+ readonly PROACTIVE_CREATE_CONVERSATION: "agents.proactive.create_conversation";
69
+ readonly TURN_SEND_ACTIVITIES: "agents.turn.send_activities";
70
+ readonly COPILOT_START_CONVERSATION: "agents.copilot_client.start_conversation";
71
+ readonly COPILOT_SEND_ACTIVITY: "agents.copilot_client.send_activity";
72
+ readonly COPILOT_POST_REQUEST: "agents.copilot_client.post_request";
73
+ readonly COPILOT_CREATE_CONNECTION: "agents.copilot_client.webchat.create_connection";
74
+ readonly COPILOT_EXECUTE_STREAMING: "agents.copilot_client.execute_streaming";
75
+ readonly COPILOT_SUBSCRIBE_ASYNC: "agents.copilot_client.subscribe_async";
76
+ };
77
+ /**
78
+ * Metric names used for telemetry in the Agents SDK.
79
+ */
80
+ export declare const MetricNames: {
81
+ readonly ADAPTER_PROCESS_DURATION: "agents.adapter.process.duration";
82
+ readonly ACTIVITIES_RECEIVED: "agents.activities.received";
83
+ readonly ACTIVITIES_SENT: "agents.activities.sent";
84
+ readonly ACTIVITIES_UPDATED: "agents.activities.updated";
85
+ readonly ACTIVITIES_DELETED: "agents.activities.deleted";
86
+ readonly CONNECTOR_REQUESTS: "agents.connector.request.count";
87
+ readonly CONNECTOR_REQUEST_DURATION: "agents.connector.request.duration";
88
+ readonly AGENT_CLIENT_REQUESTS: "agents.agent_client.request.count";
89
+ readonly AGENT_CLIENT_REQUEST_DURATION: "agents.agent_client.request.duration";
90
+ readonly TURNS_COUNT: "agents.turn.count";
91
+ readonly TURNS_ERRORS: "agents.turn.error.count";
92
+ readonly TURN_DURATION: "agents.turn.duration";
93
+ readonly STORAGE_OPERATION_DURATION: "agents.storage.operation.duration";
94
+ readonly AUTH_TOKEN_REQUEST_COUNT: "agents.auth.token.request.count";
95
+ readonly AUTH_TOKEN_DURATION: "agents.auth.token.duration";
96
+ readonly USER_TOKEN_CLIENT_REQUESTS: "agents.user_token_client.request.count";
97
+ readonly USER_TOKEN_CLIENT_REQUEST_DURATION: "agents.user_token_client.request.duration";
98
+ readonly PROACTIVE_OPERATION_COUNT: "agents.proactive.operation.count";
99
+ readonly PROACTIVE_OPERATION_DURATION: "agents.proactive.operation.duration";
100
+ readonly CSC_ACTIVITIES_RECEIVED: "agents.copilot_client.activities.received";
101
+ readonly CSC_ACTIVITIES_SENT: "agents.copilot_client.activities.sent";
102
+ readonly CSC_CONVERSATIONS_STARTED: "agents.copilot_client.conversations.started";
103
+ readonly CSC_WEBCHAT_CONNECTIONS: "agents.copilot_client.webchat.connection.count";
104
+ readonly CSC_REQUEST_COUNT: "agents.copilot_client.request.count";
105
+ readonly CSC_REQUEST_ERRORS: "agents.copilot_client.request.error.count";
106
+ readonly CSC_STREAM_DURATION: "agents.copilot_client.stream.duration";
107
+ readonly CSC_REQUEST_DURATION: "agents.copilot_client.request.duration";
108
+ readonly CSC_EXECUTE_STREAMING: "agents.copilot_client.execute_streaming.count";
109
+ readonly CSC_SUBSCRIBE_ASYNC: "agents.copilot_client.subscribe_async.count";
110
+ readonly CSC_SUBSCRIBE_EVENT: "agents.copilot_client.subscribe_event.count";
111
+ };
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * Environment variable or configuration setting name for disabling spans by category in the Agents SDK telemetry. The value should be comma-separated or whitespace-separated list of span categories to disable. See `SpanCategories` for available categories.
7
+ */
8
+ export const AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES = 'AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES';
9
+ /**
10
+ * Categories of spans used for telemetry in the Agents SDK. Spans can be disabled by category using the `AGENTS_TELEMETRY_DISABLED_SPAN_CATEGORIES` environment variable or configuration setting.
11
+ */
12
+ export const SpanCategories = {
13
+ STORAGE: ['STORAGE_'],
14
+ AUTHORIZATION: ['AUTHORIZATION_', 'USER_TOKEN_CLIENT_'],
15
+ AUTHENTICATION: ['AUTHENTICATION_'],
16
+ };
17
+ /**
18
+ * Span names used for telemetry in the Agents SDK.
19
+ */
20
+ export const SpanNames = {
21
+ // CloudAdapter / BaseAdapter
22
+ ADAPTER_PROCESS: 'agents.adapter.process',
23
+ ADAPTER_SEND_ACTIVITIES: 'agents.adapter.send_activities',
24
+ ADAPTER_UPDATE_ACTIVITY: 'agents.adapter.update_activity',
25
+ ADAPTER_DELETE_ACTIVITY: 'agents.adapter.delete_activity',
26
+ ADAPTER_CONTINUE_CONVERSATION: 'agents.adapter.continue_conversation',
27
+ ADAPTER_CREATE_CONNECTOR_CLIENT: 'agents.adapter.create_connector_client',
28
+ ADAPTER_CREATE_USER_TOKEN_CLIENT: 'agents.adapter.create_user_token_client',
29
+ // AgentApplication
30
+ AGENTS_APP_RUN: 'agents.app.run',
31
+ AGENTS_APP_ROUTE_HANDLER: 'agents.app.route_handler',
32
+ AGENTS_APP_BEFORE_TURN: 'agents.app.before_turn',
33
+ AGENTS_APP_AFTER_TURN: 'agents.app.after_turn',
34
+ AGENTS_APP_DOWNLOAD_FILES: 'agents.app.download_files',
35
+ // ConnectorClient
36
+ CONNECTOR_SEND_TO_CONVERSATION: 'agents.connector.send_to_conversation',
37
+ CONNECTOR_REPLY_TO_ACTIVITY: 'agents.connector.reply_to_activity',
38
+ CONNECTOR_UPDATE_ACTIVITY: 'agents.connector.update_activity',
39
+ CONNECTOR_DELETE_ACTIVITY: 'agents.connector.delete_activity',
40
+ CONNECTOR_CREATE_CONVERSATION: 'agents.connector.create_conversation',
41
+ CONNECTOR_GET_CONVERSATIONS: 'agents.connector.get_conversations',
42
+ CONNECTOR_GET_CONVERSATION_MEMBER: 'agents.connector.get_conversation_member',
43
+ CONNECTOR_UPLOAD_ATTACHMENT: 'agents.connector.upload_attachment',
44
+ CONNECTOR_GET_ATTACHMENT: 'agents.connector.get_attachment',
45
+ CONNECTOR_GET_ATTACHMENT_INFO: 'agents.connector.get_attachment_info',
46
+ // Storage
47
+ STORAGE_READ: 'agents.storage.read',
48
+ STORAGE_WRITE: 'agents.storage.write',
49
+ STORAGE_DELETE: 'agents.storage.delete',
50
+ // AgentClient
51
+ AGENT_CLIENT_POST_ACTIVITY: 'agents.agent_client.post_activity',
52
+ // Authentication
53
+ AUTHENTICATION_GET_ACCESS_TOKEN: 'agents.authentication.get_access_token',
54
+ AUTHENTICATION_ACQUIRE_TOKEN_ON_BEHALF_OF: 'agents.authentication.acquire_token_on_behalf_of',
55
+ AUTHENTICATION_GET_AGENTIC_INSTANCE_TOKEN: 'agents.authentication.get_agentic_instance_token',
56
+ AUTHENTICATION_GET_AGENTIC_USER_TOKEN: 'agents.authentication.get_agentic_user_token',
57
+ // Authorization
58
+ AUTHORIZATION_AGENTIC_TOKEN: 'agents.authorization.agentic_token',
59
+ AUTHORIZATION_AZURE_BOT_TOKEN: 'agents.authorization.azure_bot_token',
60
+ AUTHORIZATION_AZURE_BOT_SIGNIN: 'agents.authorization.azure_bot_signin',
61
+ AUTHORIZATION_AZURE_BOT_SIGNOUT: 'agents.authorization.azure_bot_signout',
62
+ // UserTokenClient
63
+ USER_TOKEN_CLIENT_GET_USER_TOKEN: 'agents.user_token_client.get_user_token',
64
+ USER_TOKEN_CLIENT_SIGN_OUT: 'agents.user_token_client.sign_out',
65
+ USER_TOKEN_CLIENT_GET_SIGN_IN_RESOURCE: 'agents.user_token_client.get_sign_in_resource',
66
+ USER_TOKEN_CLIENT_EXCHANGE_TOKEN: 'agents.user_token_client.exchange_token',
67
+ USER_TOKEN_CLIENT_GET_TOKEN_OR_SIGN_IN_RESOURCE: 'agents.user_token_client.get_token_or_sign_in_resource',
68
+ USER_TOKEN_CLIENT_GET_TOKEN_STATUS: 'agents.user_token_client.get_token_status',
69
+ USER_TOKEN_CLIENT_GET_AAD_TOKENS: 'agents.user_token_client.get_aad_tokens',
70
+ // Proactive
71
+ PROACTIVE_STORE_CONVERSATION: 'agents.proactive.store_conversation',
72
+ PROACTIVE_GET_CONVERSATION: 'agents.proactive.get_conversation',
73
+ PROACTIVE_GET_CONVERSATION_OR_THROW: 'agents.proactive.get_conversation_or_throw',
74
+ PROACTIVE_DELETE_CONVERSATION: 'agents.proactive.delete_conversation',
75
+ PROACTIVE_SEND_ACTIVITY: 'agents.proactive.send_activity',
76
+ PROACTIVE_CONTINUE_CONVERSATION: 'agents.proactive.continue_conversation',
77
+ PROACTIVE_CREATE_CONVERSATION: 'agents.proactive.create_conversation',
78
+ // TurnContext
79
+ TURN_SEND_ACTIVITIES: 'agents.turn.send_activities',
80
+ // Copilot Studio Client
81
+ COPILOT_START_CONVERSATION: 'agents.copilot_client.start_conversation',
82
+ COPILOT_SEND_ACTIVITY: 'agents.copilot_client.send_activity',
83
+ COPILOT_POST_REQUEST: 'agents.copilot_client.post_request',
84
+ COPILOT_CREATE_CONNECTION: 'agents.copilot_client.webchat.create_connection',
85
+ COPILOT_EXECUTE_STREAMING: 'agents.copilot_client.execute_streaming',
86
+ COPILOT_SUBSCRIBE_ASYNC: 'agents.copilot_client.subscribe_async',
87
+ };
88
+ /**
89
+ * Metric names used for telemetry in the Agents SDK.
90
+ */
91
+ export const MetricNames = {
92
+ // CloudAdapter
93
+ ADAPTER_PROCESS_DURATION: 'agents.adapter.process.duration',
94
+ // Hosting activity counters
95
+ ACTIVITIES_RECEIVED: 'agents.activities.received',
96
+ ACTIVITIES_SENT: 'agents.activities.sent',
97
+ ACTIVITIES_UPDATED: 'agents.activities.updated',
98
+ ACTIVITIES_DELETED: 'agents.activities.deleted',
99
+ // Connector metrics
100
+ CONNECTOR_REQUESTS: 'agents.connector.request.count',
101
+ CONNECTOR_REQUEST_DURATION: 'agents.connector.request.duration',
102
+ // AgentClient metrics
103
+ AGENT_CLIENT_REQUESTS: 'agents.agent_client.request.count',
104
+ AGENT_CLIENT_REQUEST_DURATION: 'agents.agent_client.request.duration',
105
+ // Turn metrics
106
+ TURNS_COUNT: 'agents.turn.count',
107
+ TURNS_ERRORS: 'agents.turn.error.count',
108
+ TURN_DURATION: 'agents.turn.duration',
109
+ // Storage metrics
110
+ STORAGE_OPERATION_DURATION: 'agents.storage.operation.duration',
111
+ // Authentication metrics
112
+ AUTH_TOKEN_REQUEST_COUNT: 'agents.auth.token.request.count',
113
+ AUTH_TOKEN_DURATION: 'agents.auth.token.duration',
114
+ // UserTokenClient metrics
115
+ USER_TOKEN_CLIENT_REQUESTS: 'agents.user_token_client.request.count',
116
+ USER_TOKEN_CLIENT_REQUEST_DURATION: 'agents.user_token_client.request.duration',
117
+ // Proactive
118
+ PROACTIVE_OPERATION_COUNT: 'agents.proactive.operation.count',
119
+ PROACTIVE_OPERATION_DURATION: 'agents.proactive.operation.duration',
120
+ // Copilot Studio Client
121
+ CSC_ACTIVITIES_RECEIVED: 'agents.copilot_client.activities.received',
122
+ CSC_ACTIVITIES_SENT: 'agents.copilot_client.activities.sent',
123
+ CSC_CONVERSATIONS_STARTED: 'agents.copilot_client.conversations.started',
124
+ CSC_WEBCHAT_CONNECTIONS: 'agents.copilot_client.webchat.connection.count',
125
+ CSC_REQUEST_COUNT: 'agents.copilot_client.request.count',
126
+ CSC_REQUEST_ERRORS: 'agents.copilot_client.request.error.count',
127
+ CSC_STREAM_DURATION: 'agents.copilot_client.stream.duration',
128
+ CSC_REQUEST_DURATION: 'agents.copilot_client.request.duration',
129
+ CSC_EXECUTE_STREAMING: 'agents.copilot_client.execute_streaming.count',
130
+ CSC_SUBSCRIBE_ASYNC: 'agents.copilot_client.subscribe_async.count',
131
+ CSC_SUBSCRIBE_EVENT: 'agents.copilot_client.subscribe_event.count',
132
+ };
133
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/observability/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { Metric, OTel } from '../types.js';
6
+ /**
7
+ * Creates metric helpers backed by the package meter.
8
+ */
9
+ export declare function metricFactory(otel: OTel): Metric;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * Creates metric helpers backed by the package meter.
7
+ */
8
+ export function metricFactory(otel) {
9
+ const meter = otel.metrics.getMeter('@microsoft/agents-telemetry');
10
+ return {
11
+ histogram: meter.createHistogram.bind(meter),
12
+ counter: meter.createCounter.bind(meter),
13
+ };
14
+ }
15
+ //# sourceMappingURL=metric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../../src/observability/metric.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,IAAU;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAA;IAClE,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;KACzC,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { OTel, TraceFunction } from '../types.js';
6
+ /**
7
+ * Creates the trace helper bound to the package tracer.
8
+ *
9
+ * @remarks
10
+ * - Only span names declared in `SpanNames` are accepted.
11
+ * - Disabled span categories return a no-op context instead of creating a real span.
12
+ */
13
+ export declare function traceFactory(otel: OTel): TraceFunction;
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { attempt } from '../utils/attempt.js';
6
+ import { isSpanDisabled } from './category.js';
7
+ import { SpanNames } from './constants.js';
8
+ import { noopContext } from '../utils/noop.js';
9
+ /**
10
+ * Creates the trace helper bound to the package tracer.
11
+ *
12
+ * @remarks
13
+ * - Only span names declared in `SpanNames` are accepted.
14
+ * - Disabled span categories return a no-op context instead of creating a real span.
15
+ */
16
+ export function traceFactory(otel) {
17
+ const validSpanNames = new Set(Object.values(SpanNames));
18
+ const tracer = otel.trace.getTracer('@microsoft/agents-telemetry');
19
+ const trace = function trace(target, callback) {
20
+ if (!target) {
21
+ throw new Error('Trace definition is required');
22
+ }
23
+ if (!validSpanNames.has(target.name)) {
24
+ throw new Error(`Unrecognized span name "${target.name}". See SpanNames constants.`);
25
+ }
26
+ if (isSpanDisabled(target.name)) {
27
+ return noopContext(callback);
28
+ }
29
+ const record = createRecord(target);
30
+ if (!callback) {
31
+ // TODO: if parent/child span connections are needed, we could expose a 'child' function that internally connects them.
32
+ const span = tracer.startSpan(target.name);
33
+ const flow = start(otel, target, span, record);
34
+ return {
35
+ record: flow.record,
36
+ actions: flow.actions,
37
+ fail: flow.fail,
38
+ end: flow.end
39
+ };
40
+ }
41
+ return tracer.startActiveSpan(target.name, span => {
42
+ const flow = start(otel, target, span, record);
43
+ return attempt({
44
+ try: () => callback({ record: flow.record, actions: flow.actions }),
45
+ catch: (error) => { throw flow.fail(error); },
46
+ finally: flow.end
47
+ });
48
+ });
49
+ };
50
+ trace.define = definition => definition;
51
+ return trace;
52
+ }
53
+ /**
54
+ * Creates the mutable record stored for a trace execution.
55
+ *
56
+ * @remarks
57
+ * - Updates use `Object.assign`, so nested objects are replaced rather than deeply merged.
58
+ */
59
+ function createRecord(target) {
60
+ const state = target.record ? { ...target.record } : {};
61
+ return {
62
+ set(values) {
63
+ // TODO: use deep-merge strategy for Object and Array
64
+ Object.assign(state, values);
65
+ },
66
+ get() {
67
+ return state;
68
+ }
69
+ };
70
+ }
71
+ /**
72
+ * Initializes a trace execution and returns the action helpers plus end/fail controls.
73
+ */
74
+ function start(otel, target, span, record) {
75
+ var _a, _b;
76
+ const start = performance.now();
77
+ let ended = false;
78
+ let _error;
79
+ return {
80
+ record: record.set,
81
+ actions: (_b = (_a = target.actions) === null || _a === void 0 ? void 0 : _a.call(target, { span })) !== null && _b !== void 0 ? _b : {},
82
+ fail(error) {
83
+ _error = error;
84
+ return error;
85
+ },
86
+ end() {
87
+ if (ended || !otel) {
88
+ return;
89
+ }
90
+ ended = true;
91
+ if (_error === undefined) {
92
+ span.setStatus({ code: otel.SpanStatusCode.OK });
93
+ }
94
+ else {
95
+ captureError(otel, span, _error);
96
+ }
97
+ try {
98
+ target.end({
99
+ span,
100
+ record: record.get(),
101
+ duration: performance.now() - start,
102
+ error: _error,
103
+ });
104
+ }
105
+ catch (endError) {
106
+ captureError(otel, span, endError);
107
+ }
108
+ finally {
109
+ span.end();
110
+ }
111
+ }
112
+ };
113
+ }
114
+ /**
115
+ * Records an error on the span and sets the span status to `ERROR`.
116
+ *
117
+ * @remarks
118
+ * - Non-`Error` values are stringified so thrown primitives are still captured.
119
+ */
120
+ function captureError(otel, span, error) {
121
+ let message;
122
+ if (error instanceof Error) {
123
+ message = error.message;
124
+ span.recordException(error);
125
+ }
126
+ else {
127
+ message = String(error);
128
+ span.recordException({ name: String(typeof error), message });
129
+ }
130
+ span.setStatus({ code: otel.SpanStatusCode.ERROR, message });
131
+ }
132
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../../src/observability/trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { Logger } from './loggers/base.js';
6
+ import { MetricNames, SpanNames } from './observability/constants.js';
7
+ import type { Span, Meter } from '@opentelemetry/api';
8
+ /**
9
+ * These type re-exports are intentional.
10
+ *
11
+ * @remarks
12
+ * This package is primarily a shared telemetry layer for other Agents SDK packages, so its
13
+ * TypeScript surface may depend on OpenTelemetry types even when runtime loading falls back
14
+ * to noop behavior if the optional dependencies are absent.
15
+ */
16
+ export type * from '@opentelemetry/api';
17
+ export type { Span, Meter } from '@opentelemetry/api';
18
+ export type * from '@opentelemetry/api-logs';
19
+ /**
20
+ * Runtime type for the optional OpenTelemetry API module.
21
+ */
22
+ export type OTel = typeof import('@opentelemetry/api');
23
+ /**
24
+ * Runtime type for the optional OpenTelemetry logs module.
25
+ */
26
+ export type OTelLogs = typeof import('@opentelemetry/api-logs');
27
+ /**
28
+ * Union of the supported span names exposed by the package constants.
29
+ */
30
+ export type SpanName = typeof SpanNames[keyof typeof SpanNames];
31
+ /**
32
+ * Mutable state container used while a trace is active.
33
+ *
34
+ * @remarks
35
+ * - `set()` performs a shallow merge.
36
+ * - `get()` returns the latest snapshot stored for the span.
37
+ */
38
+ export interface TraceRecord<TRecord extends object> {
39
+ set(values: Partial<TRecord>): void;
40
+ get(): Readonly<TRecord>;
41
+ }
42
+ /**
43
+ * Context passed to traced callbacks.
44
+ */
45
+ export interface TraceContext<TRecord extends object, TActions extends object> {
46
+ record(values: Partial<TRecord>): void;
47
+ actions: TActions;
48
+ }
49
+ /**
50
+ * Callback used by callback-based trace execution.
51
+ */
52
+ export type TraceCallback<TRecord extends object, TActions extends object, TReturn = unknown> = (context: TraceContext<TRecord, TActions>) => TReturn;
53
+ /**
54
+ * Context used to create action helpers backed by the underlying span.
55
+ */
56
+ export interface TraceActionsContext {
57
+ span: Span;
58
+ }
59
+ /**
60
+ * Data provided to the `end` hook when a trace finishes.
61
+ */
62
+ export interface TraceEndContext<TRecord extends object> {
63
+ span: Span;
64
+ record: Readonly<TRecord>;
65
+ duration: number;
66
+ error?: unknown;
67
+ }
68
+ /**
69
+ * Handle returned when a trace is created without a callback.
70
+ */
71
+ export interface TraceManagedContext<TRecord extends object, TActions extends object> extends TraceContext<TRecord, TActions> {
72
+ end(): void;
73
+ fail<T extends unknown>(error: T): T;
74
+ }
75
+ /**
76
+ * Declares how a span should be created, enriched, and finalized.
77
+ *
78
+ * @remarks
79
+ * - `name` must come from `SpanNames`.
80
+ * - `record` provides the default shape for values collected during the span lifetime.
81
+ */
82
+ export interface TraceDefinition<TRecord extends object = Record<string, never>, TActions extends object = Record<string, Function>> {
83
+ name: SpanName;
84
+ record: TRecord;
85
+ actions?(context: TraceActionsContext): TActions;
86
+ end(context: TraceEndContext<TRecord>): void;
87
+ }
88
+ /**
89
+ * Trace helper that supports both managed spans and callback-based spans.
90
+ */
91
+ export interface TraceFunction {
92
+ define<TRecord extends object, TActions extends object>(definition: TraceDefinition<TRecord, TActions>): TraceDefinition<TRecord, TActions>;
93
+ <TRecord extends object, TActions extends object>(definition: TraceDefinition<TRecord, TActions>): TraceManagedContext<TRecord, TActions>;
94
+ <TRecord extends object, TActions extends object, TReturn>(definition: TraceDefinition<TRecord, TActions>, callback: TraceCallback<TRecord, TActions, TReturn>): TReturn;
95
+ }
96
+ /**
97
+ * Metric factory surface exposed by the package.
98
+ */
99
+ export interface Metric {
100
+ histogram: Meter['createHistogram'];
101
+ counter: Meter['createCounter'];
102
+ }
103
+ /**
104
+ * Loader interface for the index function, which conditionally loads OpenTelemetry dependencies at runtime.
105
+ */
106
+ export interface Loader {
107
+ otel(): OTel | Promise<OTel>;
108
+ logs(): OTelLogs | Promise<OTelLogs>;
109
+ }
110
+ /**
111
+ * Conditional return type for the index loader function, based on whether the loader returns Promises.
112
+ */
113
+ export type LoaderReturn<TLoader extends Loader> = Extract<ReturnType<TLoader['otel']> | ReturnType<TLoader['logs']>, PromiseLike<unknown>> extends never ? Factory : Promise<Factory>;
114
+ /**
115
+ * Public telemetry API exported by the package entrypoints.
116
+ */
117
+ export interface Factory {
118
+ SpanNames: typeof SpanNames;
119
+ MetricNames: typeof MetricNames;
120
+ /**
121
+ * Creates a namespaced logger.
122
+ *
123
+ * @remarks
124
+ * - Debug output is always used.
125
+ * - When the OTel logs API is available, messages are mirrored to OpenTelemetry logs.
126
+ */
127
+ debug(namespace: string): Logger;
128
+ /**
129
+ * Starts spans from a `TraceDefinition`.
130
+ */
131
+ trace: TraceFunction;
132
+ /**
133
+ * Exposes histogram and counter creators from the package meter.
134
+ */
135
+ metric: Metric;
136
+ }
137
+ /**
138
+ * Options used by the shared `attempt()` helper.
139
+ *
140
+ * @remarks
141
+ * - Omitting catch preserves the original error.
142
+ * - catch is for side effects only; recovery values are not used.
143
+ * - Declare catch as returning never when it always rethrows.
144
+ * - Declare catch as returning void when it may swallow the failure.
145
+ */
146
+ export interface AttemptOptions<TResult, TCatch = never> {
147
+ try(): TResult;
148
+ catch?(error: unknown): TCatch;
149
+ finally?(): void;
150
+ }