@microsoft/agents-a365-observability 0.1.0-preview.30

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 (130) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/ObservabilityBuilder.d.ts +61 -0
  3. package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -0
  4. package/dist/cjs/ObservabilityBuilder.js +141 -0
  5. package/dist/cjs/ObservabilityBuilder.js.map +1 -0
  6. package/dist/cjs/ObservabilityManager.d.ts +29 -0
  7. package/dist/cjs/ObservabilityManager.d.ts.map +1 -0
  8. package/dist/cjs/ObservabilityManager.js +61 -0
  9. package/dist/cjs/ObservabilityManager.js.map +1 -0
  10. package/dist/cjs/index.d.ts +10 -0
  11. package/dist/cjs/index.d.ts.map +1 -0
  12. package/dist/cjs/index.js +33 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/tracing/constants.d.ts +83 -0
  15. package/dist/cjs/tracing/constants.d.ts.map +1 -0
  16. package/dist/cjs/tracing/constants.js +101 -0
  17. package/dist/cjs/tracing/constants.js.map +1 -0
  18. package/dist/cjs/tracing/contracts.d.ts +186 -0
  19. package/dist/cjs/tracing/contracts.d.ts.map +1 -0
  20. package/dist/cjs/tracing/contracts.js +44 -0
  21. package/dist/cjs/tracing/contracts.js.map +1 -0
  22. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +53 -0
  23. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  24. package/dist/cjs/tracing/exporter/Agent365Exporter.js +318 -0
  25. package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -0
  26. package/dist/cjs/tracing/exporter/utils.d.ts +38 -0
  27. package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -0
  28. package/dist/cjs/tracing/exporter/utils.js +126 -0
  29. package/dist/cjs/tracing/exporter/utils.js.map +1 -0
  30. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +182 -0
  31. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  32. package/dist/cjs/tracing/middleware/BaggageBuilder.js +297 -0
  33. package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -0
  34. package/dist/cjs/tracing/processors/SpanProcessor.d.ts +30 -0
  35. package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -0
  36. package/dist/cjs/tracing/processors/SpanProcessor.js +98 -0
  37. package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -0
  38. package/dist/cjs/tracing/processors/util.d.ts +9 -0
  39. package/dist/cjs/tracing/processors/util.d.ts.map +1 -0
  40. package/dist/cjs/tracing/processors/util.js +50 -0
  41. package/dist/cjs/tracing/processors/util.js.map +1 -0
  42. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +22 -0
  43. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  44. package/dist/cjs/tracing/scopes/ExecuteToolScope.js +51 -0
  45. package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -0
  46. package/dist/cjs/tracing/scopes/InferenceScope.d.ts +47 -0
  47. package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -0
  48. package/dist/cjs/tracing/scopes/InferenceScope.js +83 -0
  49. package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -0
  50. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +33 -0
  51. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  52. package/dist/cjs/tracing/scopes/InvokeAgentScope.js +94 -0
  53. package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -0
  54. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +57 -0
  55. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  56. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +146 -0
  57. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  58. package/dist/cjs/tracing/util.d.ts +9 -0
  59. package/dist/cjs/tracing/util.d.ts.map +1 -0
  60. package/dist/cjs/tracing/util.js +28 -0
  61. package/dist/cjs/tracing/util.js.map +1 -0
  62. package/dist/cjs/utils/logging.d.ts +11 -0
  63. package/dist/cjs/utils/logging.d.ts.map +1 -0
  64. package/dist/cjs/utils/logging.js +84 -0
  65. package/dist/cjs/utils/logging.js.map +1 -0
  66. package/dist/esm/ObservabilityBuilder.d.ts +61 -0
  67. package/dist/esm/ObservabilityBuilder.d.ts.map +1 -0
  68. package/dist/esm/ObservabilityBuilder.js +137 -0
  69. package/dist/esm/ObservabilityBuilder.js.map +1 -0
  70. package/dist/esm/ObservabilityManager.d.ts +29 -0
  71. package/dist/esm/ObservabilityManager.d.ts.map +1 -0
  72. package/dist/esm/ObservabilityManager.js +57 -0
  73. package/dist/esm/ObservabilityManager.js.map +1 -0
  74. package/dist/esm/index.d.ts +10 -0
  75. package/dist/esm/index.d.ts.map +1 -0
  76. package/dist/esm/index.js +18 -0
  77. package/dist/esm/index.js.map +1 -0
  78. package/dist/esm/tracing/constants.d.ts +83 -0
  79. package/dist/esm/tracing/constants.d.ts.map +1 -0
  80. package/dist/esm/tracing/constants.js +97 -0
  81. package/dist/esm/tracing/constants.js.map +1 -0
  82. package/dist/esm/tracing/contracts.d.ts +186 -0
  83. package/dist/esm/tracing/contracts.d.ts.map +1 -0
  84. package/dist/esm/tracing/contracts.js +41 -0
  85. package/dist/esm/tracing/contracts.js.map +1 -0
  86. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +53 -0
  87. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  88. package/dist/esm/tracing/exporter/Agent365Exporter.js +281 -0
  89. package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -0
  90. package/dist/esm/tracing/exporter/utils.d.ts +38 -0
  91. package/dist/esm/tracing/exporter/utils.d.ts.map +1 -0
  92. package/dist/esm/tracing/exporter/utils.js +113 -0
  93. package/dist/esm/tracing/exporter/utils.js.map +1 -0
  94. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +182 -0
  95. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  96. package/dist/esm/tracing/middleware/BaggageBuilder.js +292 -0
  97. package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -0
  98. package/dist/esm/tracing/processors/SpanProcessor.d.ts +30 -0
  99. package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -0
  100. package/dist/esm/tracing/processors/SpanProcessor.js +94 -0
  101. package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -0
  102. package/dist/esm/tracing/processors/util.d.ts +9 -0
  103. package/dist/esm/tracing/processors/util.d.ts.map +1 -0
  104. package/dist/esm/tracing/processors/util.js +47 -0
  105. package/dist/esm/tracing/processors/util.js.map +1 -0
  106. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +22 -0
  107. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  108. package/dist/esm/tracing/scopes/ExecuteToolScope.js +47 -0
  109. package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -0
  110. package/dist/esm/tracing/scopes/InferenceScope.d.ts +47 -0
  111. package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -0
  112. package/dist/esm/tracing/scopes/InferenceScope.js +79 -0
  113. package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -0
  114. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +33 -0
  115. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  116. package/dist/esm/tracing/scopes/InvokeAgentScope.js +90 -0
  117. package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -0
  118. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +57 -0
  119. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  120. package/dist/esm/tracing/scopes/OpenTelemetryScope.js +139 -0
  121. package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  122. package/dist/esm/tracing/util.d.ts +9 -0
  123. package/dist/esm/tracing/util.d.ts.map +1 -0
  124. package/dist/esm/tracing/util.js +23 -0
  125. package/dist/esm/tracing/util.js.map +1 -0
  126. package/dist/esm/utils/logging.d.ts +11 -0
  127. package/dist/esm/utils/logging.d.ts.map +1 -0
  128. package/dist/esm/utils/logging.js +81 -0
  129. package/dist/esm/utils/logging.js.map +1 -0
  130. package/package.json +69 -0
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SpanProcessor = void 0;
7
+ const api_1 = require("@opentelemetry/api");
8
+ const constants_1 = require("../constants");
9
+ const util_1 = require("./util");
10
+ /**
11
+ * Span processor that propagates baggage key/value pairs to span attributes.
12
+ *
13
+ * This processor copies baggage entries onto spans based on the operation type.
14
+ * For invoke_agent operations, it applies both generic and invoke-agent-specific attributes.
15
+ * For other operations, it applies only generic attributes.
16
+ */
17
+ class SpanProcessor {
18
+ /**
19
+ * Called when a span is started.
20
+ * Copies relevant baggage entries to span attributes.
21
+ */
22
+ onStart(span, parentContext) {
23
+ const ctx = parentContext;
24
+ if (!ctx) {
25
+ return;
26
+ }
27
+ // Get existing span attributes
28
+ const existingAttrs = new Set();
29
+ try {
30
+ const spanRecord = span;
31
+ if (spanRecord.attributes) {
32
+ Object.keys(spanRecord.attributes).forEach(key => existingAttrs.add(key));
33
+ }
34
+ }
35
+ catch {
36
+ // Ignore errors accessing span attributes
37
+ }
38
+ // Get all baggage entries
39
+ const baggage = api_1.propagation.getBaggage(ctx);
40
+ if (!baggage) {
41
+ return;
42
+ }
43
+ const baggageMap = new Map();
44
+ baggage.getAllEntries().forEach(([key, entry]) => {
45
+ if (entry.value) {
46
+ baggageMap.set(key, entry.value);
47
+ }
48
+ });
49
+ // Determine if this is an invoke_agent operation
50
+ const operationName = baggageMap.get(constants_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY) ||
51
+ span.attributes?.[constants_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY];
52
+ const spanName = span.name || '';
53
+ const isInvokeAgent = operationName === constants_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME ||
54
+ spanName.startsWith(constants_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME);
55
+ // Build target key set
56
+ const targetKeys = new Set(util_1.GENERIC_ATTRIBUTES);
57
+ if (isInvokeAgent) {
58
+ util_1.INVOKE_AGENT_ATTRIBUTES.forEach(key => targetKeys.add(key));
59
+ }
60
+ // Copy baggage to span attributes
61
+ for (const key of targetKeys) {
62
+ // Skip if attribute already exists
63
+ if (existingAttrs.has(key)) {
64
+ continue;
65
+ }
66
+ const value = baggageMap.get(key);
67
+ if (!value) {
68
+ continue;
69
+ }
70
+ try {
71
+ span.setAttribute(key, value);
72
+ }
73
+ catch {
74
+ // Ignore errors setting attributes
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Called when a span is ended.
80
+ */
81
+ onEnd(_span) {
82
+ // No-op for this processor
83
+ }
84
+ /**
85
+ * Shutdown the processor.
86
+ */
87
+ async shutdown() {
88
+ // No-op for this processor
89
+ }
90
+ /**
91
+ * Force flush the processor.
92
+ */
93
+ async forceFlush() {
94
+ // No-op for this processor
95
+ }
96
+ }
97
+ exports.SpanProcessor = SpanProcessor;
98
+ //# sourceMappingURL=SpanProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanProcessor.js","sourceRoot":"","sources":["../../../../src/tracing/processors/SpanProcessor.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;;;AAEjF,4CAAgE;AAGhE,4CAAsD;AACtD,iCAAqE;AAErE;;;;;;GAMG;AACH,MAAa,aAAa;IACxB;;;OAGG;IACH,OAAO,CAAC,IAAU,EAAE,aAAuB;QACzC,MAAM,GAAG,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAW,CAAC;YAC/B,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,iBAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC/C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,aAAa,GACjB,UAAU,CAAC,GAAG,CAAC,kCAAsB,CAAC,yBAAyB,CAAC;YAC/D,IAAY,CAAC,UAAU,EAAE,CAAC,kCAAsB,CAAC,yBAAyB,CAAC,CAAC;QAE/E,MAAM,QAAQ,GAAI,IAAY,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,aAAa,GACjB,aAAa,KAAK,kCAAsB,CAAC,2BAA2B;YACpE,QAAQ,CAAC,UAAU,CAAC,kCAAsB,CAAC,2BAA2B,CAAC,CAAC;QAE1E,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,yBAAkB,CAAC,CAAC;QACvD,IAAI,aAAa,EAAE,CAAC;YAClB,8BAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,mCAAmC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAmB;QACvB,2BAA2B;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,2BAA2B;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,2BAA2B;IAC7B,CAAC;CACF;AA3FD,sCA2FC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generic / common tracing attributes applied to all spans
3
+ */
4
+ export declare const GENERIC_ATTRIBUTES: readonly string[];
5
+ /**
6
+ * Invoke Agent-specific attributes
7
+ */
8
+ export declare const INVOKE_AGENT_ATTRIBUTES: readonly string[];
9
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tracing/processors/util.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAe/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAmBpD,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.INVOKE_AGENT_ATTRIBUTES = exports.GENERIC_ATTRIBUTES = void 0;
7
+ const constants_1 = require("../constants");
8
+ /**
9
+ * Generic / common tracing attributes applied to all spans
10
+ */
11
+ exports.GENERIC_ATTRIBUTES = [
12
+ constants_1.OpenTelemetryConstants.TENANT_ID_KEY,
13
+ constants_1.OpenTelemetryConstants.CUSTOM_PARENT_SPAN_ID_KEY,
14
+ constants_1.OpenTelemetryConstants.CUSTOM_SPAN_NAME_KEY,
15
+ constants_1.OpenTelemetryConstants.CORRELATION_ID_KEY,
16
+ constants_1.OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY,
17
+ constants_1.OpenTelemetryConstants.GEN_AI_CONVERSATION_ITEM_LINK_KEY,
18
+ constants_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY,
19
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY,
20
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY,
21
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY,
22
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_USER_ID_KEY,
23
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_UPN_KEY,
24
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_BLUEPRINT_ID_KEY,
25
+ constants_1.OpenTelemetryConstants.GEN_AI_AGENT_AUID_KEY,
26
+ ];
27
+ /**
28
+ * Invoke Agent-specific attributes
29
+ */
30
+ exports.INVOKE_AGENT_ATTRIBUTES = [
31
+ // Caller / Invoker attributes
32
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_ID_KEY,
33
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_NAME_KEY,
34
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_UPN_KEY,
35
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_USER_ID_KEY,
36
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_TENANT_ID_KEY,
37
+ // Caller Agent (A2A) attributes
38
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_ID_KEY,
39
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_NAME_KEY,
40
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_USER_ID_KEY,
41
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_UPN_KEY,
42
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_TENANT_ID_KEY,
43
+ constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY,
44
+ // Execution context
45
+ constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY,
46
+ constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_ID_KEY,
47
+ constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY,
48
+ constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY,
49
+ ];
50
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/tracing/processors/util.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;;;AAEjF,4CAAgE;AAEhE;;GAEG;AACU,QAAA,kBAAkB,GAAsB;IACnD,kCAAM,CAAC,aAAa;IACpB,kCAAM,CAAC,yBAAyB;IAChC,kCAAM,CAAC,oBAAoB;IAC3B,kCAAM,CAAC,kBAAkB;IACzB,kCAAM,CAAC,0BAA0B;IACjC,kCAAM,CAAC,iCAAiC;IACxC,kCAAM,CAAC,yBAAyB;IAChC,kCAAM,CAAC,mBAAmB;IAC1B,kCAAM,CAAC,qBAAqB;IAC5B,kCAAM,CAAC,4BAA4B;IACnC,kCAAM,CAAC,wBAAwB;IAC/B,kCAAM,CAAC,oBAAoB;IAC3B,kCAAM,CAAC,6BAA6B;IACpC,kCAAM,CAAC,qBAAqB;CAC7B,CAAC;AAEF;;GAEG;AACU,QAAA,uBAAuB,GAAsB;IACxD,8BAA8B;IAC9B,kCAAM,CAAC,oBAAoB;IAC3B,kCAAM,CAAC,sBAAsB;IAC7B,kCAAM,CAAC,qBAAqB;IAC5B,kCAAM,CAAC,yBAAyB;IAChC,kCAAM,CAAC,2BAA2B;IAClC,gCAAgC;IAChC,kCAAM,CAAC,0BAA0B;IACjC,kCAAM,CAAC,4BAA4B;IACnC,kCAAM,CAAC,+BAA+B;IACtC,kCAAM,CAAC,2BAA2B;IAClC,kCAAM,CAAC,iCAAiC;IACxC,kCAAM,CAAC,sCAAsC;IAC7C,oBAAoB;IACpB,kCAAM,CAAC,yBAAyB;IAChC,kCAAM,CAAC,8BAA8B;IACrC,kCAAM,CAAC,gCAAgC;IACvC,kCAAM,CAAC,uCAAuC;CAC/C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
2
+ import { ToolCallDetails, AgentDetails, TenantDetails } from '../contracts';
3
+ /**
4
+ * Provides OpenTelemetry tracing scope for AI tool execution operations.
5
+ */
6
+ export declare class ExecuteToolScope extends OpenTelemetryScope {
7
+ /**
8
+ * Creates and starts a new scope for tool execution tracing.
9
+ * @param details The tool call details
10
+ * @param agentDetails The agent details
11
+ * @param tenantDetails The tenant details
12
+ * @returns A new ExecuteToolScope instance.
13
+ */
14
+ static start(details: ToolCallDetails, agentDetails: AgentDetails, tenantDetails: TenantDetails): ExecuteToolScope;
15
+ private constructor();
16
+ /**
17
+ * Records response information for telemetry tracking.
18
+ * @param response The tool execution response
19
+ */
20
+ recordResponse(response: string): void;
21
+ }
22
+ //# sourceMappingURL=ExecuteToolScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecuteToolScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/ExecuteToolScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG5E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;OAMG;WACW,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,GAAG,gBAAgB;IAIzH,OAAO;IA6BP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAG9C"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ExecuteToolScope = void 0;
7
+ const api_1 = require("@opentelemetry/api");
8
+ const OpenTelemetryScope_1 = require("./OpenTelemetryScope");
9
+ const constants_1 = require("../constants");
10
+ /**
11
+ * Provides OpenTelemetry tracing scope for AI tool execution operations.
12
+ */
13
+ class ExecuteToolScope extends OpenTelemetryScope_1.OpenTelemetryScope {
14
+ /**
15
+ * Creates and starts a new scope for tool execution tracing.
16
+ * @param details The tool call details
17
+ * @param agentDetails The agent details
18
+ * @param tenantDetails The tenant details
19
+ * @returns A new ExecuteToolScope instance.
20
+ */
21
+ static start(details, agentDetails, tenantDetails) {
22
+ return new ExecuteToolScope(details, agentDetails, tenantDetails);
23
+ }
24
+ constructor(details, agentDetails, tenantDetails) {
25
+ super(api_1.SpanKind.INTERNAL, constants_1.OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME, `${constants_1.OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME} ${details.toolName}`, agentDetails, tenantDetails);
26
+ // Destructure the details object to match C# pattern
27
+ const { toolName, arguments: args, toolCallId, description, toolType, endpoint } = details;
28
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_TOOL_NAME_KEY, toolName);
29
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY, args);
30
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_TOOL_TYPE_KEY, toolType);
31
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_TOOL_CALL_ID_KEY, toolCallId);
32
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_TOOL_DESCRIPTION_KEY, description);
33
+ // Set endpoint information if provided
34
+ if (endpoint) {
35
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.SERVER_ADDRESS_KEY, endpoint.host);
36
+ // Only record port if it is different from 443 (default HTTPS port)
37
+ if (endpoint.port && endpoint.port !== 443) {
38
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.SERVER_PORT_KEY, endpoint.port);
39
+ }
40
+ }
41
+ }
42
+ /**
43
+ * Records response information for telemetry tracking.
44
+ * @param response The tool execution response
45
+ */
46
+ recordResponse(response) {
47
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_EVENT_CONTENT, response);
48
+ }
49
+ }
50
+ exports.ExecuteToolScope = ExecuteToolScope;
51
+ //# sourceMappingURL=ExecuteToolScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecuteToolScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/ExecuteToolScope.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;;;AAEjF,4CAA8C;AAC9C,6DAA0D;AAE1D,4CAAsD;AAEtD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,uCAAkB;IACtD;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,OAAwB,EAAE,YAA0B,EAAE,aAA4B;QACpG,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,YAAoB,OAAwB,EAAE,YAA0B,EAAE,aAA4B;QACpG,KAAK,CACH,cAAQ,CAAC,QAAQ,EACjB,kCAAsB,CAAC,2BAA2B,EAClD,GAAG,kCAAsB,CAAC,2BAA2B,IAAI,OAAO,CAAC,QAAQ,EAAE,EAC3E,YAAY,EACZ,aAAa,CACd,CAAC;QAEF,qDAAqD;QACrD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE3F,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;QAElF,uCAAuC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE3E,oEAAoE;YACpE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,QAAgB;QACpC,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;CACF;AAhDD,4CAgDC"}
@@ -0,0 +1,47 @@
1
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
2
+ import { InferenceDetails, AgentDetails, TenantDetails } from '../contracts';
3
+ /**
4
+ * Provides OpenTelemetry tracing scope for generative AI inference operations.
5
+ */
6
+ export declare class InferenceScope extends OpenTelemetryScope {
7
+ /**
8
+ * Creates and starts a new scope for inference tracing.
9
+ * @param details The inference call details
10
+ * @param agentDetails The agent details
11
+ * @param tenantDetails The tenant details
12
+ * @returns A new InferenceScope instance
13
+ */
14
+ static start(details: InferenceDetails, agentDetails: AgentDetails, tenantDetails: TenantDetails): InferenceScope;
15
+ private constructor();
16
+ /**
17
+ * Records the input messages for telemetry tracking.
18
+ * @param messages Array of input messages
19
+ */
20
+ recordInputMessages(messages: string[]): void;
21
+ /**
22
+ * Records the output messages for telemetry tracking.
23
+ * @param messages Array of output messages
24
+ */
25
+ recordOutputMessages(messages: string[]): void;
26
+ /**
27
+ * Records the number of input tokens for telemetry tracking.
28
+ * @param inputTokens Number of input tokens
29
+ */
30
+ recordInputTokens(inputTokens: number): void;
31
+ /**
32
+ * Records the number of output tokens for telemetry tracking.
33
+ * @param outputTokens Number of output tokens
34
+ */
35
+ recordOutputTokens(outputTokens: number): void;
36
+ /**
37
+ * Records the response id for telemetry tracking.
38
+ * @param responseId The response ID
39
+ */
40
+ recordResponseId(responseId: string): void;
41
+ /**
42
+ * Records the finish reasons for telemetry tracking.
43
+ * @param finishReasons Array of finish reasons
44
+ */
45
+ recordFinishReasons(finishReasons: string[]): void;
46
+ }
47
+ //# sourceMappingURL=InferenceScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InferenceScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACd,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;;;OAMG;WACW,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,GAAG,cAAc;IAIxH,OAAO;IAmBP;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpD;;;OAGG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrD;;;OAGG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAInD;;;OAGG;IACI,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIrD;;;OAGG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMjD;;;OAGG;IACI,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;CAM1D"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InferenceScope = void 0;
7
+ const api_1 = require("@opentelemetry/api");
8
+ const OpenTelemetryScope_1 = require("./OpenTelemetryScope");
9
+ const constants_1 = require("../constants");
10
+ /**
11
+ * Provides OpenTelemetry tracing scope for generative AI inference operations.
12
+ */
13
+ class InferenceScope extends OpenTelemetryScope_1.OpenTelemetryScope {
14
+ /**
15
+ * Creates and starts a new scope for inference tracing.
16
+ * @param details The inference call details
17
+ * @param agentDetails The agent details
18
+ * @param tenantDetails The tenant details
19
+ * @returns A new InferenceScope instance
20
+ */
21
+ static start(details, agentDetails, tenantDetails) {
22
+ return new InferenceScope(details, agentDetails, tenantDetails);
23
+ }
24
+ constructor(details, agentDetails, tenantDetails) {
25
+ super(api_1.SpanKind.CLIENT, details.operationName.toString(), `${details.operationName} ${details.model}`, agentDetails, tenantDetails);
26
+ // Set core inference information matching C# implementation
27
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY, details.operationName.toString());
28
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY, details.model);
29
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_PROVIDER_NAME_KEY, details.providerName);
30
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, details.inputTokens?.toString());
31
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, details.outputTokens?.toString());
32
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, details.finishReasons?.join(','));
33
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY, details.responseId);
34
+ }
35
+ /**
36
+ * Records the input messages for telemetry tracking.
37
+ * @param messages Array of input messages
38
+ */
39
+ recordInputMessages(messages) {
40
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, messages.join(','));
41
+ }
42
+ /**
43
+ * Records the output messages for telemetry tracking.
44
+ * @param messages Array of output messages
45
+ */
46
+ recordOutputMessages(messages) {
47
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, messages.join(','));
48
+ }
49
+ /**
50
+ * Records the number of input tokens for telemetry tracking.
51
+ * @param inputTokens Number of input tokens
52
+ */
53
+ recordInputTokens(inputTokens) {
54
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, inputTokens.toString());
55
+ }
56
+ /**
57
+ * Records the number of output tokens for telemetry tracking.
58
+ * @param outputTokens Number of output tokens
59
+ */
60
+ recordOutputTokens(outputTokens) {
61
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, outputTokens.toString());
62
+ }
63
+ /**
64
+ * Records the response id for telemetry tracking.
65
+ * @param responseId The response ID
66
+ */
67
+ recordResponseId(responseId) {
68
+ if (responseId && responseId.trim()) {
69
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY, responseId);
70
+ }
71
+ }
72
+ /**
73
+ * Records the finish reasons for telemetry tracking.
74
+ * @param finishReasons Array of finish reasons
75
+ */
76
+ recordFinishReasons(finishReasons) {
77
+ if (finishReasons && finishReasons.length > 0) {
78
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, finishReasons.join(','));
79
+ }
80
+ }
81
+ }
82
+ exports.InferenceScope = InferenceScope;
83
+ //# sourceMappingURL=InferenceScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InferenceScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;;;AAEjF,4CAA8C;AAC9C,6DAA0D;AAC1D,4CAAsD;AAOtD;;GAEG;AACH,MAAa,cAAe,SAAQ,uCAAkB;IACpD;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,OAAyB,EAAE,YAA0B,EAAE,aAA4B;QACrG,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,YAAoB,OAAyB,EAAE,YAA0B,EAAE,aAA4B;QACrG,KAAK,CACH,cAAQ,CAAC,MAAM,EACf,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAChC,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,EAC3C,YAAY,EACZ,aAAa,CACd,CAAC;QAEF,4DAA4D;QAC5D,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,yBAAyB,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,wBAAwB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,wBAAwB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,6BAA6B,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,kCAAkC,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,QAAkB;QAC3C,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,yBAAyB,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,CAAC;IAED;;;OAGG;IACI,oBAAoB,CAAC,QAAkB;QAC5C,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,0BAA0B,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,WAAmB;QAC1C,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,6BAA6B,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjG,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,YAAoB;QAC5C,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,8BAA8B,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnG,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,UAAkB;QACxC,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,aAAuB;QAChD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,kCAAsB,CAAC,kCAAkC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;CAEF;AAnFD,wCAmFC"}
@@ -0,0 +1,33 @@
1
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
2
+ import { InvokeAgentDetails, TenantDetails, CallerDetails, EnhancedAgentDetails } from '../contracts';
3
+ /**
4
+ * Provides OpenTelemetry tracing scope for AI agent invocation operations.
5
+ */
6
+ export declare class InvokeAgentScope extends OpenTelemetryScope {
7
+ /**
8
+ * Creates and starts a new scope for agent invocation tracing.
9
+ * @param invokeAgentDetails The details of the agent invocation including endpoint, agent information, and conversation context.
10
+ * @param tenantDetails The tenant details.
11
+ * @param callerAgentDetails The details of the caller agent.
12
+ * @param callerDetails The details of the non-agentic caller.
13
+ * @returns A new InvokeAgentScope instance.
14
+ */
15
+ static start(invokeAgentDetails: InvokeAgentDetails, tenantDetails: TenantDetails, callerAgentDetails?: EnhancedAgentDetails, callerDetails?: CallerDetails): InvokeAgentScope;
16
+ private constructor();
17
+ /**
18
+ * Records response information for telemetry tracking.
19
+ * @param response The invocation response
20
+ */
21
+ recordResponse(response: string): void;
22
+ /**
23
+ * Records the input messages for telemetry tracking.
24
+ * @param messages Array of input messages
25
+ */
26
+ recordInputMessages(messages: string[]): void;
27
+ /**
28
+ * Records the output messages for telemetry tracking.
29
+ * @param messages Array of output messages
30
+ */
31
+ recordOutputMessages(messages: string[]): void;
32
+ }
33
+ //# sourceMappingURL=InvokeAgentScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvokeAgentScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAGtB;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IAEtD;;;;;;;OAOG;WACW,KAAK,CACjB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,kBAAkB,CAAC,EAAE,oBAAoB,EACzC,aAAa,CAAC,EAAE,aAAa,GAC5B,gBAAgB;IAInB,OAAO;IA8DP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAMpD;;;OAGG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAKtD"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InvokeAgentScope = void 0;
7
+ const api_1 = require("@opentelemetry/api");
8
+ const OpenTelemetryScope_1 = require("./OpenTelemetryScope");
9
+ const constants_1 = require("../constants");
10
+ /**
11
+ * Provides OpenTelemetry tracing scope for AI agent invocation operations.
12
+ */
13
+ class InvokeAgentScope extends OpenTelemetryScope_1.OpenTelemetryScope {
14
+ /**
15
+ * Creates and starts a new scope for agent invocation tracing.
16
+ * @param invokeAgentDetails The details of the agent invocation including endpoint, agent information, and conversation context.
17
+ * @param tenantDetails The tenant details.
18
+ * @param callerAgentDetails The details of the caller agent.
19
+ * @param callerDetails The details of the non-agentic caller.
20
+ * @returns A new InvokeAgentScope instance.
21
+ */
22
+ static start(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails) {
23
+ return new InvokeAgentScope(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails);
24
+ }
25
+ constructor(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails) {
26
+ super(api_1.SpanKind.CLIENT, constants_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, invokeAgentDetails.agentName
27
+ ? `${constants_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME} ${invokeAgentDetails.agentName}`
28
+ : constants_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, invokeAgentDetails, tenantDetails);
29
+ // Set session ID and endpoint information
30
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.SESSION_ID_KEY, invokeAgentDetails.sessionId);
31
+ if (invokeAgentDetails.endpoint) {
32
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.SERVER_ADDRESS_KEY, invokeAgentDetails.endpoint.host);
33
+ // Only record port if it is different from 443 (default HTTPS port)
34
+ if (invokeAgentDetails.endpoint.port && invokeAgentDetails.endpoint.port !== 443) {
35
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.SERVER_PORT_KEY, invokeAgentDetails.endpoint.port);
36
+ }
37
+ }
38
+ // Set request-related tags
39
+ const requestToUse = invokeAgentDetails.request;
40
+ if (requestToUse) {
41
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY, requestToUse.executionType?.toString());
42
+ if (requestToUse.sourceMetadata) {
43
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_ID_KEY, requestToUse.sourceMetadata.id);
44
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, requestToUse.sourceMetadata.name);
45
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, requestToUse.sourceMetadata.description);
46
+ }
47
+ }
48
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, invokeAgentDetails.conversationId);
49
+ // Set caller details tags
50
+ if (callerDetails) {
51
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_ID_KEY, callerDetails.callerId);
52
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_UPN_KEY, callerDetails.callerUpn);
53
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_NAME_KEY, callerDetails.callerName);
54
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_USER_ID_KEY, callerDetails.callerUserId);
55
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_TENANT_ID_KEY, callerDetails.tenantId);
56
+ }
57
+ // Set caller agent details tags
58
+ if (callerAgentDetails) {
59
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_NAME_KEY, callerAgentDetails.agentName);
60
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_ID_KEY, callerAgentDetails.agentId);
61
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY, callerAgentDetails.agentBlueprintId);
62
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_USER_ID_KEY, callerAgentDetails.agentAUID);
63
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_UPN_KEY, callerAgentDetails.agentUPN);
64
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_AGENT_TENANT_ID_KEY, callerAgentDetails.tenantId);
65
+ }
66
+ }
67
+ /**
68
+ * Records response information for telemetry tracking.
69
+ * @param response The invocation response
70
+ */
71
+ recordResponse(response) {
72
+ this.recordOutputMessages([response]);
73
+ }
74
+ /**
75
+ * Records the input messages for telemetry tracking.
76
+ * @param messages Array of input messages
77
+ */
78
+ recordInputMessages(messages) {
79
+ if (InvokeAgentScope.enableTelemetry) {
80
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, messages.join(','));
81
+ }
82
+ }
83
+ /**
84
+ * Records the output messages for telemetry tracking.
85
+ * @param messages Array of output messages
86
+ */
87
+ recordOutputMessages(messages) {
88
+ if (InvokeAgentScope.enableTelemetry) {
89
+ this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, messages.join(','));
90
+ }
91
+ }
92
+ }
93
+ exports.InvokeAgentScope = InvokeAgentScope;
94
+ //# sourceMappingURL=InvokeAgentScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvokeAgentScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { SpanKind, Span } from '@opentelemetry/api';
2
+ import { EnhancedAgentDetails, TenantDetails } from '../contracts';
3
+ /**
4
+ * Base class for OpenTelemetry tracing scopes
5
+ */
6
+ export declare abstract class OpenTelemetryScope implements Disposable {
7
+ private static readonly tracer;
8
+ protected readonly span: Span;
9
+ private readonly startTime;
10
+ protected static enableTelemetry: boolean;
11
+ private errorType?;
12
+ private exception?;
13
+ private hasEnded;
14
+ /**
15
+ * Initializes a new instance of the OpenTelemetryScope class
16
+ * @param kind The kind of span (CLIENT, SERVER, INTERNAL, etc.)
17
+ * @param operationName The name of the operation being traced
18
+ * @param spanName The name of the span for display purposes
19
+ * @param agentDetails Optional agent details
20
+ * @param tenantDetails Optional tenant details
21
+ */
22
+ protected constructor(kind: SpanKind, operationName: string, spanName: string, agentDetails?: EnhancedAgentDetails, tenantDetails?: TenantDetails);
23
+ /**
24
+ * Makes this span active for the duration of the async callback execution
25
+ */
26
+ withActiveSpanAsync<T>(callback: () => Promise<T>): Promise<T>;
27
+ /**
28
+ * Records an error that occurred during the operation
29
+ * @param error The error that occurred
30
+ */
31
+ recordError(error: Error): void;
32
+ /**
33
+ * Sets a tag on the span if telemetry is enabled
34
+ * @param name The tag name
35
+ * @param value The tag value
36
+ */
37
+ protected setTagMaybe<T extends string | number | boolean>(name: string, value: T | null | undefined): void;
38
+ /**
39
+ * Add baggage to the current context
40
+ * @param key The baggage key
41
+ * @param value The baggage value
42
+ */
43
+ protected addBaggage(key: string, value: string): void;
44
+ /**
45
+ * Finalizes the scope and records metrics
46
+ */
47
+ private end;
48
+ /**
49
+ * Disposes the scope and finalizes telemetry data collection
50
+ */
51
+ [Symbol.dispose](): void;
52
+ /**
53
+ * Legacy dispose method for compatibility
54
+ */
55
+ dispose(): void;
56
+ }
57
+ //# sourceMappingURL=OpenTelemetryScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenTelemetryScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,QAAQ,EAAE,IAAI,EAAuC,MAAM,oBAAoB,CAAC;AAGhG,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnE;;GAEG;AACH,8BAAsB,kBAAmB,YAAW,UAAU;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAuD;IAErF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAS,CAAC,MAAM,CAAC,eAAe,UAAgC;IAEhE,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;IACH,SAAS,aACP,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,oBAAoB,EACnC,aAAa,CAAC,EAAE,aAAa;IAoC/B;;OAEG;IACI,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKrE;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAoBtC;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAM3G;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,GAAG;IAsBX;;OAEG;IACI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAO/B;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}