@microsoft/agents-a365-observability 0.1.0-preview.63 → 0.1.0-preview.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/dist/cjs/ObservabilityBuilder.d.ts +2 -0
- package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -1
- package/dist/cjs/ObservabilityBuilder.js +33 -7
- package/dist/cjs/ObservabilityBuilder.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts +32 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.js +253 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.js.map +1 -0
- package/dist/cjs/tracing/constants.d.ts +2 -0
- package/dist/cjs/tracing/constants.d.ts.map +1 -1
- package/dist/cjs/tracing/constants.js +2 -0
- package/dist/cjs/tracing/constants.js.map +1 -1
- package/dist/cjs/tracing/context/token-context.d.ts +11 -0
- package/dist/cjs/tracing/context/token-context.d.ts.map +1 -0
- package/dist/cjs/tracing/context/token-context.js +29 -0
- package/dist/cjs/tracing/context/token-context.js.map +1 -0
- package/dist/cjs/tracing/contracts.d.ts +2 -0
- package/dist/cjs/tracing/contracts.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +1 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365Exporter.js +40 -17
- package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts +3 -0
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js +3 -0
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js.map +1 -1
- package/dist/cjs/tracing/exporter/utils.d.ts +25 -0
- package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/utils.js +53 -0
- package/dist/cjs/tracing/exporter/utils.js.map +1 -1
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +6 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -1
- package/dist/cjs/tracing/middleware/BaggageBuilder.js +9 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -1
- package/dist/cjs/tracing/processors/util.d.ts.map +1 -1
- package/dist/cjs/tracing/processors/util.js +1 -0
- package/dist/cjs/tracing/processors/util.js.map +1 -1
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -1
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js +3 -1
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -1
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -1
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +1 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -1
- package/dist/cjs/tracing/util.d.ts +5 -12
- package/dist/cjs/tracing/util.d.ts.map +1 -1
- package/dist/cjs/tracing/util.js +6 -26
- package/dist/cjs/tracing/util.js.map +1 -1
- package/dist/esm/ObservabilityBuilder.d.ts +2 -0
- package/dist/esm/ObservabilityBuilder.d.ts.map +1 -1
- package/dist/esm/ObservabilityBuilder.js +29 -6
- package/dist/esm/ObservabilityBuilder.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tracing/PerRequestSpanProcessor.d.ts +32 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.js +246 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.js.map +1 -0
- package/dist/esm/tracing/constants.d.ts +2 -0
- package/dist/esm/tracing/constants.d.ts.map +1 -1
- package/dist/esm/tracing/constants.js +2 -0
- package/dist/esm/tracing/constants.js.map +1 -1
- package/dist/esm/tracing/context/token-context.d.ts +11 -0
- package/dist/esm/tracing/context/token-context.d.ts.map +1 -0
- package/dist/esm/tracing/context/token-context.js +22 -0
- package/dist/esm/tracing/context/token-context.js.map +1 -0
- package/dist/esm/tracing/contracts.d.ts +2 -0
- package/dist/esm/tracing/contracts.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +1 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/Agent365Exporter.js +40 -17
- package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -1
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts +3 -0
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.js +3 -0
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.js.map +1 -1
- package/dist/esm/tracing/exporter/utils.d.ts +25 -0
- package/dist/esm/tracing/exporter/utils.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/utils.js +49 -0
- package/dist/esm/tracing/exporter/utils.js.map +1 -1
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +6 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -1
- package/dist/esm/tracing/middleware/BaggageBuilder.js +9 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -1
- package/dist/esm/tracing/processors/util.d.ts.map +1 -1
- package/dist/esm/tracing/processors/util.js +1 -0
- package/dist/esm/tracing/processors/util.js.map +1 -1
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -1
- package/dist/esm/tracing/scopes/InvokeAgentScope.js +3 -1
- package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -1
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -1
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js +1 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -1
- package/dist/esm/tracing/util.d.ts +5 -12
- package/dist/esm/tracing/util.d.ts.map +1 -1
- package/dist/esm/tracing/util.js +5 -23
- package/dist/esm/tracing/util.js.map +1 -1
- package/package.json +36 -37
package/dist/cjs/tracing/util.js
CHANGED
|
@@ -4,11 +4,14 @@
|
|
|
4
4
|
// Licensed under the MIT License.
|
|
5
5
|
// ------------------------------------------------------------------------------
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
8
|
-
exports.resolveAgent365Endpoint = resolveAgent365Endpoint;
|
|
7
|
+
exports.isAgent365ExporterEnabled = void 0;
|
|
9
8
|
const constants_1 = require("./constants");
|
|
10
9
|
/**
|
|
11
|
-
* Check if exporter is enabled via environment variables
|
|
10
|
+
* Check if exporter is enabled via environment variables.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: Exporter-specific helpers have been moved to
|
|
13
|
+
* tracing/exporter/utils.ts. This file remains only for any
|
|
14
|
+
* non-exporter tracing utilities that may be added in the future.
|
|
12
15
|
*/
|
|
13
16
|
const isAgent365ExporterEnabled = () => {
|
|
14
17
|
const enableA365Exporter = process.env[constants_1.OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY_EXPORTER]?.toLowerCase();
|
|
@@ -18,27 +21,4 @@ const isAgent365ExporterEnabled = () => {
|
|
|
18
21
|
enableA365Exporter === 'on');
|
|
19
22
|
};
|
|
20
23
|
exports.isAgent365ExporterEnabled = isAgent365ExporterEnabled;
|
|
21
|
-
/**
|
|
22
|
-
* Single toggle to use custom domain for observability export.
|
|
23
|
-
* When true exporter will send traces to custom Agent365 service endpoint
|
|
24
|
-
* and include x-ms-tenant-id in headers.
|
|
25
|
-
*/
|
|
26
|
-
const useCustomDomainForObservability = () => {
|
|
27
|
-
const value = process.env.A365_OBSERVABILITY_USE_CUSTOM_DOMAIN?.toLowerCase();
|
|
28
|
-
return (value === 'true' ||
|
|
29
|
-
value === '1' ||
|
|
30
|
-
value === 'yes' ||
|
|
31
|
-
value === 'on');
|
|
32
|
-
};
|
|
33
|
-
exports.useCustomDomainForObservability = useCustomDomainForObservability;
|
|
34
|
-
/**
|
|
35
|
-
* Resolve the Agent365 service endpoint base URI for a given cluster category.
|
|
36
|
-
*/
|
|
37
|
-
function resolveAgent365Endpoint(clusterCategory) {
|
|
38
|
-
switch (clusterCategory) {
|
|
39
|
-
case 'prod':
|
|
40
|
-
default:
|
|
41
|
-
return 'https://agent365.svc.cloud.microsoft';
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
24
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;AAEjF,2CAAqD;AAErD;;;;;;GAMG;AACI,MAAM,yBAAyB,GAAkB,GAAY,EAAE;IACpE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,kCAAkC,CAAC,EAAE,WAAW,EAAE,CAAC;IAEjH,OAAO,CACL,kBAAkB,KAAK,MAAM;QAC7B,kBAAkB,KAAK,GAAG;QAC1B,kBAAkB,KAAK,KAAK;QAC5B,kBAAkB,KAAK,IAAI,CAC5B,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,yBAAyB,6BASpC"}
|
|
@@ -54,6 +54,8 @@ export declare class ObservabilityBuilder {
|
|
|
54
54
|
*/
|
|
55
55
|
withExporterOptions(exporterOptions: Partial<Agent365ExporterOptions>): ObservabilityBuilder;
|
|
56
56
|
private createBatchProcessor;
|
|
57
|
+
private createPerRequestProcessor;
|
|
58
|
+
private createExportProcessor;
|
|
57
59
|
private createResource;
|
|
58
60
|
/**
|
|
59
61
|
* Builds and initializes the Agent 365 configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservabilityBuilder.d.ts","sourceRoot":"","sources":["../../src/ObservabilityBuilder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"ObservabilityBuilder.d.ts","sourceRoot":"","sources":["../../src/ObservabilityBuilder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAKrF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gEAAgE;IAChE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAEpD;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAU;IAEtB;;;;;OAKG;IACI,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,oBAAoB;IAMtF;;;;OAIG;IACI,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,oBAAoB;IAK5E;;;;OAIG;IACI,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,oBAAoB;IAKlF;;;;;OAKG;IACI,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,oBAAoB;IAQnG,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAUtB;;;OAGG;IACI,KAAK,IAAI,OAAO;IA8CvB;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtC;;OAEG;IAEH,OAAO,CAAC,wBAAwB;CAUjC"}
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
5
5
|
import { ConsoleSpanExporter, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
6
6
|
import { SpanProcessor } from './tracing/processors/SpanProcessor';
|
|
7
|
-
import { isAgent365ExporterEnabled } from './tracing/
|
|
7
|
+
import { isAgent365ExporterEnabled, isPerRequestExportEnabled } from './tracing/exporter/utils';
|
|
8
8
|
import { Agent365Exporter } from './tracing/exporter/Agent365Exporter';
|
|
9
9
|
import { Agent365ExporterOptions } from './tracing/exporter/Agent365ExporterOptions';
|
|
10
|
+
import { PerRequestSpanProcessor } from './tracing/PerRequestSpanProcessor';
|
|
10
11
|
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
11
12
|
import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
|
|
12
13
|
import { trace } from '@opentelemetry/api';
|
|
14
|
+
import logger from './utils/logging';
|
|
13
15
|
/**
|
|
14
16
|
* Builder for configuring Agent 365 with OpenTelemetry tracing
|
|
15
17
|
*/
|
|
@@ -62,6 +64,7 @@ export class ObservabilityBuilder {
|
|
|
62
64
|
}
|
|
63
65
|
createBatchProcessor() {
|
|
64
66
|
if (!isAgent365ExporterEnabled()) {
|
|
67
|
+
logger.info('[ObservabilityBuilder] Agent 365 exporter not enabled. Using ConsoleSpanExporter for BatchSpanProcessor.');
|
|
65
68
|
return new BatchSpanProcessor(new ConsoleSpanExporter());
|
|
66
69
|
}
|
|
67
70
|
const opts = new Agent365ExporterOptions();
|
|
@@ -79,6 +82,26 @@ export class ObservabilityBuilder {
|
|
|
79
82
|
maxExportBatchSize: opts.maxExportBatchSize
|
|
80
83
|
});
|
|
81
84
|
}
|
|
85
|
+
createPerRequestProcessor() {
|
|
86
|
+
if (!isAgent365ExporterEnabled()) {
|
|
87
|
+
logger.info('[Agent365Exporter] Per-request export enabled but Agent 365 exporter is disabled. Using ConsoleSpanExporter.');
|
|
88
|
+
return new PerRequestSpanProcessor(new ConsoleSpanExporter());
|
|
89
|
+
}
|
|
90
|
+
const opts = new Agent365ExporterOptions();
|
|
91
|
+
if (this.options.exporterOptions) {
|
|
92
|
+
Object.assign(opts, this.options.exporterOptions);
|
|
93
|
+
}
|
|
94
|
+
opts.clusterCategory = this.options.clusterCategory || opts.clusterCategory || 'prod';
|
|
95
|
+
// For per-request export, token is retrieved from OTel Context by Agent365Exporter
|
|
96
|
+
// using getExportToken(), so no tokenResolver is needed here
|
|
97
|
+
return new PerRequestSpanProcessor(new Agent365Exporter(opts));
|
|
98
|
+
}
|
|
99
|
+
createExportProcessor() {
|
|
100
|
+
if (isPerRequestExportEnabled()) {
|
|
101
|
+
return this.createPerRequestProcessor();
|
|
102
|
+
}
|
|
103
|
+
return this.createBatchProcessor();
|
|
104
|
+
}
|
|
82
105
|
createResource() {
|
|
83
106
|
const serviceName = this.options.serviceVersion
|
|
84
107
|
? `${this.options.serviceName}-${this.options.serviceVersion}`
|
|
@@ -98,8 +121,8 @@ export class ObservabilityBuilder {
|
|
|
98
121
|
// Create processors in the desired order:
|
|
99
122
|
// 1. baggage enricher (copies baggage -> span attributes)
|
|
100
123
|
const spanProcessor = new SpanProcessor();
|
|
101
|
-
// 2.
|
|
102
|
-
const
|
|
124
|
+
// 2. export processor (batch or per-request based on environment variable)
|
|
125
|
+
const exportProcessor = this.createExportProcessor();
|
|
103
126
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
127
|
const globalProvider = trace.getTracerProvider();
|
|
105
128
|
const canAddProcessors = typeof globalProvider?.addSpanProcessor === 'function' &&
|
|
@@ -107,10 +130,10 @@ export class ObservabilityBuilder {
|
|
|
107
130
|
if (canAddProcessors) {
|
|
108
131
|
// Someone else already created a provider (maybe their own NodeSDK).
|
|
109
132
|
// We DO NOT create a new NodeSDK.
|
|
110
|
-
// We just add our baggage enricher +
|
|
133
|
+
// We just add our baggage enricher + export processor to their provider,
|
|
111
134
|
// but only if they aren't already there.
|
|
112
135
|
this.attachProcessorIfMissing(globalProvider, spanProcessor);
|
|
113
|
-
this.attachProcessorIfMissing(globalProvider,
|
|
136
|
+
this.attachProcessorIfMissing(globalProvider, exportProcessor);
|
|
114
137
|
this.isBuilt = true;
|
|
115
138
|
this.sdk = undefined; // we didn't create/own one
|
|
116
139
|
return this.isBuilt;
|
|
@@ -120,7 +143,7 @@ export class ObservabilityBuilder {
|
|
|
120
143
|
resource: this.createResource(),
|
|
121
144
|
spanProcessors: [
|
|
122
145
|
spanProcessor,
|
|
123
|
-
|
|
146
|
+
exportProcessor,
|
|
124
147
|
],
|
|
125
148
|
});
|
|
126
149
|
this.isBuilt = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservabilityBuilder.js","sourceRoot":"","sources":["../../src/ObservabilityBuilder.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ObservabilityBuilder.js","sourceRoot":"","sources":["../../src/ObservabilityBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { ObservabilityBuilder as Builder, BuilderOptions } from './Observability
|
|
|
3
3
|
export { Agent365ExporterOptions } from './tracing/exporter/Agent365ExporterOptions';
|
|
4
4
|
export { OpenTelemetryConstants } from './tracing/constants';
|
|
5
5
|
export { BaggageBuilder, BaggageScope } from './tracing/middleware/BaggageBuilder';
|
|
6
|
+
export { runWithExportToken, getExportToken } from './tracing/context/token-context';
|
|
6
7
|
export { ExecutionType, InvocationRole, SourceMetadata, AgentRequest, AgentDetails, TenantDetails, ToolCallDetails, InvokeAgentDetails, CallerDetails, EnhancedAgentDetails, ServiceEndpoint, InferenceDetails, InferenceOperationType, InferenceResponse } from './tracing/contracts';
|
|
7
8
|
export { OpenTelemetryScope } from './tracing/scopes/OpenTelemetryScope';
|
|
8
9
|
export { ExecuteToolScope } from './tracing/scopes/ExecuteToolScope';
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnF,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGrF,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -9,6 +9,8 @@ export { Agent365ExporterOptions } from './tracing/exporter/Agent365ExporterOpti
|
|
|
9
9
|
export { OpenTelemetryConstants } from './tracing/constants';
|
|
10
10
|
// Baggage builder
|
|
11
11
|
export { BaggageBuilder, BaggageScope } from './tracing/middleware/BaggageBuilder';
|
|
12
|
+
// Per-request export utilities
|
|
13
|
+
export { runWithExportToken, getExportToken } from './tracing/context/token-context';
|
|
12
14
|
// Contracts and interfaces
|
|
13
15
|
export { ExecutionType, InvocationRole, InferenceOperationType } from './tracing/contracts';
|
|
14
16
|
// Scopes
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnF,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EAWd,sBAAsB,EAEvB,MAAM,qBAAqB,CAAC;AAE7B,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnF,+BAA+B;AAC/B,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAErF,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EAWd,sBAAsB,EAEvB,MAAM,qBAAqB,CAAC;AAE7B,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Context } from '@opentelemetry/api';
|
|
2
|
+
import type { ReadableSpan, SpanProcessor, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
3
|
+
/**
|
|
4
|
+
* Buffers spans per trace and exports once the request completes.
|
|
5
|
+
* Token is not stored; we export under the saved request Context so that getExportToken()
|
|
6
|
+
* can read the token from the active OpenTelemetry Context at export time.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PerRequestSpanProcessor implements SpanProcessor {
|
|
9
|
+
private readonly exporter;
|
|
10
|
+
private readonly flushGraceMs;
|
|
11
|
+
private readonly maxTraceAgeMs;
|
|
12
|
+
private traces;
|
|
13
|
+
private sweepTimer?;
|
|
14
|
+
private isSweeping;
|
|
15
|
+
private readonly maxBufferedTraces;
|
|
16
|
+
private readonly maxSpansPerTrace;
|
|
17
|
+
private readonly maxConcurrentExports;
|
|
18
|
+
private inFlightExports;
|
|
19
|
+
private exportWaiters;
|
|
20
|
+
constructor(exporter: SpanExporter, flushGraceMs?: number, maxTraceAgeMs?: number);
|
|
21
|
+
onStart(span: ReadableSpan, ctx: Context): void;
|
|
22
|
+
onEnd(span: ReadableSpan): void;
|
|
23
|
+
forceFlush(): Promise<void>;
|
|
24
|
+
shutdown(): Promise<void>;
|
|
25
|
+
private ensureSweepTimer;
|
|
26
|
+
private stopSweepTimerIfIdle;
|
|
27
|
+
private sweep;
|
|
28
|
+
private flushTrace;
|
|
29
|
+
private acquireExportSlot;
|
|
30
|
+
private releaseExportSlot;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=PerRequestSpanProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerRequestSpanProcessor.d.ts","sourceRoot":"","sources":["../../../src/tracing/PerRequestSpanProcessor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAqC/F;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAazD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAdhC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAE9C,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAAyB;gBAG3B,QAAQ,EAAE,YAAY,EACtB,YAAY,GAAE,MAA+B,EAC7C,aAAa,GAAE,MAAiC;IASnE,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IA6C/C,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IA4CzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;YAOd,KAAK;YAmCL,UAAU;YA4DV,iBAAiB;IAe/B,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
// ------------------------------------------------------------------------------
|
|
5
|
+
import { context } from '@opentelemetry/api';
|
|
6
|
+
import logger from '../utils/logging';
|
|
7
|
+
/** Default grace period (ms) to wait for child spans after root span ends */
|
|
8
|
+
const DEFAULT_FLUSH_GRACE_MS = 250;
|
|
9
|
+
/** Default maximum age (ms) for a trace before forcing flush */
|
|
10
|
+
const DEFAULT_MAX_TRACE_AGE_MS = 30000;
|
|
11
|
+
/** Guardrails to prevent unbounded memory growth / export bursts */
|
|
12
|
+
const DEFAULT_MAX_BUFFERED_TRACES = 1000;
|
|
13
|
+
const DEFAULT_MAX_SPANS_PER_TRACE = 5000;
|
|
14
|
+
const DEFAULT_MAX_CONCURRENT_EXPORTS = 20;
|
|
15
|
+
function readEnvInt(name, fallback) {
|
|
16
|
+
const raw = process.env[name];
|
|
17
|
+
if (!raw)
|
|
18
|
+
return fallback;
|
|
19
|
+
const parsed = Number.parseInt(raw, 10);
|
|
20
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
21
|
+
}
|
|
22
|
+
function isRootSpan(span) {
|
|
23
|
+
return !span.parentSpanContext;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Buffers spans per trace and exports once the request completes.
|
|
27
|
+
* Token is not stored; we export under the saved request Context so that getExportToken()
|
|
28
|
+
* can read the token from the active OpenTelemetry Context at export time.
|
|
29
|
+
*/
|
|
30
|
+
export class PerRequestSpanProcessor {
|
|
31
|
+
constructor(exporter, flushGraceMs = DEFAULT_FLUSH_GRACE_MS, maxTraceAgeMs = DEFAULT_MAX_TRACE_AGE_MS) {
|
|
32
|
+
this.exporter = exporter;
|
|
33
|
+
this.flushGraceMs = flushGraceMs;
|
|
34
|
+
this.maxTraceAgeMs = maxTraceAgeMs;
|
|
35
|
+
this.traces = new Map();
|
|
36
|
+
this.isSweeping = false;
|
|
37
|
+
this.inFlightExports = 0;
|
|
38
|
+
this.exportWaiters = [];
|
|
39
|
+
// Defaults are intentionally high but bounded; override via env vars if needed.
|
|
40
|
+
// Set to 0 (or negative) to disable a guardrail.
|
|
41
|
+
this.maxBufferedTraces = readEnvInt('A365_PER_REQUEST_MAX_TRACES', DEFAULT_MAX_BUFFERED_TRACES);
|
|
42
|
+
this.maxSpansPerTrace = readEnvInt('A365_PER_REQUEST_MAX_SPANS_PER_TRACE', DEFAULT_MAX_SPANS_PER_TRACE);
|
|
43
|
+
this.maxConcurrentExports = readEnvInt('A365_PER_REQUEST_MAX_CONCURRENT_EXPORTS', DEFAULT_MAX_CONCURRENT_EXPORTS);
|
|
44
|
+
}
|
|
45
|
+
onStart(span, ctx) {
|
|
46
|
+
const traceId = span.spanContext().traceId;
|
|
47
|
+
let buf = this.traces.get(traceId);
|
|
48
|
+
if (!buf) {
|
|
49
|
+
if (this.traces.size >= this.maxBufferedTraces) {
|
|
50
|
+
logger.warn(`[PerRequestSpanProcessor] Dropping new trace due to maxBufferedTraces=${this.maxBufferedTraces} traceId=${traceId}`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
buf = {
|
|
54
|
+
spans: [],
|
|
55
|
+
openCount: 0,
|
|
56
|
+
rootEnded: false,
|
|
57
|
+
rootCtx: undefined,
|
|
58
|
+
startedAtMs: Date.now(),
|
|
59
|
+
droppedSpans: 0,
|
|
60
|
+
};
|
|
61
|
+
this.traces.set(traceId, buf);
|
|
62
|
+
this.ensureSweepTimer();
|
|
63
|
+
logger.info(`[PerRequestSpanProcessor] Trace started traceId=${traceId} maxTraceAgeMs=${this.maxTraceAgeMs}`);
|
|
64
|
+
}
|
|
65
|
+
buf.openCount += 1;
|
|
66
|
+
// Debug lifecycle: span started
|
|
67
|
+
logger.info(`[PerRequestSpanProcessor] Span start name=${span.name} traceId=${traceId} spanId=${span.spanContext().spanId}` +
|
|
68
|
+
` root=${isRootSpan(span)} openCount=${buf.openCount}`);
|
|
69
|
+
// Capture a context to export under.
|
|
70
|
+
// - Use the first seen context as a fallback.
|
|
71
|
+
// - If/when the root span starts, prefer its context (contains token via ALS).
|
|
72
|
+
if (isRootSpan(span)) {
|
|
73
|
+
buf.rootCtx = ctx;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
buf.rootCtx ?? (buf.rootCtx = ctx);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
onEnd(span) {
|
|
80
|
+
const traceId = span.spanContext().traceId;
|
|
81
|
+
const buf = this.traces.get(traceId);
|
|
82
|
+
if (!buf)
|
|
83
|
+
return;
|
|
84
|
+
if (buf.spans.length >= this.maxSpansPerTrace) {
|
|
85
|
+
buf.droppedSpans += 1;
|
|
86
|
+
if (buf.droppedSpans === 1 || buf.droppedSpans % 100 === 0) {
|
|
87
|
+
logger.warn(`[PerRequestSpanProcessor] Dropping ended span due to maxSpansPerTrace=${this.maxSpansPerTrace} ` +
|
|
88
|
+
`traceId=${traceId} droppedSpans=${buf.droppedSpans}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
buf.spans.push(span);
|
|
93
|
+
}
|
|
94
|
+
buf.openCount -= 1;
|
|
95
|
+
if (buf.openCount < 0) {
|
|
96
|
+
logger.warn(`[PerRequestSpanProcessor] openCount underflow traceId=${traceId} spanId=${span.spanContext().spanId} resettingToZero`);
|
|
97
|
+
buf.openCount = 0;
|
|
98
|
+
}
|
|
99
|
+
// Debug lifecycle: span ended
|
|
100
|
+
logger.info(`[PerRequestSpanProcessor] Span end name=${span.name} traceId=${traceId} spanId=${span.spanContext().spanId}` +
|
|
101
|
+
` root=${isRootSpan(span)} openCount=${buf.openCount} rootEnded=${buf.rootEnded}`);
|
|
102
|
+
if (isRootSpan(span)) {
|
|
103
|
+
buf.rootEnded = true;
|
|
104
|
+
buf.rootEndedAtMs = Date.now();
|
|
105
|
+
if (buf.openCount === 0) {
|
|
106
|
+
// Trace completed: root ended and no open spans remain.
|
|
107
|
+
this.flushTrace(traceId, 'trace_completed');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (buf.rootEnded && buf.openCount === 0) {
|
|
111
|
+
// Common case: root ends first, then children finish shortly after.
|
|
112
|
+
// Flush immediately when the last child ends instead of waiting for grace/max timers.
|
|
113
|
+
this.flushTrace(traceId, 'trace_completed');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async forceFlush() {
|
|
117
|
+
await Promise.all([...this.traces.keys()].map((id) => this.flushTrace(id, 'force_flush')));
|
|
118
|
+
}
|
|
119
|
+
async shutdown() {
|
|
120
|
+
await this.forceFlush();
|
|
121
|
+
this.stopSweepTimerIfIdle();
|
|
122
|
+
await this.exporter.shutdown?.();
|
|
123
|
+
}
|
|
124
|
+
ensureSweepTimer() {
|
|
125
|
+
if (this.sweepTimer)
|
|
126
|
+
return;
|
|
127
|
+
// Keep one lightweight sweeper. Interval is derived from grace/max-age to keep responsiveness reasonable.
|
|
128
|
+
const intervalMs = Math.max(10, Math.min(this.flushGraceMs, 250));
|
|
129
|
+
this.sweepTimer = setInterval(() => {
|
|
130
|
+
void this.sweep();
|
|
131
|
+
}, intervalMs);
|
|
132
|
+
this.sweepTimer.unref?.();
|
|
133
|
+
}
|
|
134
|
+
stopSweepTimerIfIdle() {
|
|
135
|
+
if (this.traces.size !== 0)
|
|
136
|
+
return;
|
|
137
|
+
if (!this.sweepTimer)
|
|
138
|
+
return;
|
|
139
|
+
clearInterval(this.sweepTimer);
|
|
140
|
+
this.sweepTimer = undefined;
|
|
141
|
+
}
|
|
142
|
+
async sweep() {
|
|
143
|
+
if (this.isSweeping)
|
|
144
|
+
return;
|
|
145
|
+
this.isSweeping = true;
|
|
146
|
+
try {
|
|
147
|
+
if (this.traces.size === 0) {
|
|
148
|
+
this.stopSweepTimerIfIdle();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const now = Date.now();
|
|
152
|
+
const toFlush = [];
|
|
153
|
+
for (const [traceId, trace] of this.traces.entries()) {
|
|
154
|
+
// 1) Max age safety flush (clears buffers even if spans never end)
|
|
155
|
+
if (now - trace.startedAtMs >= this.maxTraceAgeMs) {
|
|
156
|
+
toFlush.push({ traceId, reason: 'max_trace_age' });
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// 2) Root ended grace window flush (clears buffers if children never end)
|
|
160
|
+
if (trace.rootEnded && trace.openCount > 0 && trace.rootEndedAtMs) {
|
|
161
|
+
if (now - trace.rootEndedAtMs >= this.flushGraceMs) {
|
|
162
|
+
toFlush.push({ traceId, reason: 'root_ended_grace' });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Flush in parallel; flushTrace removes entries eagerly.
|
|
167
|
+
await Promise.all(toFlush.map((x) => this.flushTrace(x.traceId, x.reason)));
|
|
168
|
+
this.stopSweepTimerIfIdle();
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
this.isSweeping = false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async flushTrace(traceId, reason) {
|
|
175
|
+
const trace = this.traces.get(traceId);
|
|
176
|
+
if (!trace)
|
|
177
|
+
return;
|
|
178
|
+
this.traces.delete(traceId);
|
|
179
|
+
this.stopSweepTimerIfIdle();
|
|
180
|
+
const spans = trace.spans;
|
|
181
|
+
if (spans.length === 0)
|
|
182
|
+
return;
|
|
183
|
+
logger.info(`[PerRequestSpanProcessor] Flushing trace traceId=${traceId} reason=${reason} spans=${spans.length} rootEnded=${trace.rootEnded}`);
|
|
184
|
+
// Must have captured the root context to access the token
|
|
185
|
+
if (!trace.rootCtx) {
|
|
186
|
+
logger.error(`[PerRequestSpanProcessor] Missing rootCtx for trace ${traceId}, cannot export spans`);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
await this.acquireExportSlot();
|
|
190
|
+
try {
|
|
191
|
+
// Export under the original request Context so exporter can read the token from context.active()
|
|
192
|
+
await new Promise((resolve) => {
|
|
193
|
+
try {
|
|
194
|
+
context.with(trace.rootCtx, () => {
|
|
195
|
+
try {
|
|
196
|
+
this.exporter.export(spans, (result) => {
|
|
197
|
+
// Log export failures but still resolve to avoid blocking processor
|
|
198
|
+
if (result.code !== 0) {
|
|
199
|
+
logger.error(`[PerRequestSpanProcessor] Export failed traceId=${traceId} reason=${reason} code=${result.code}`, result.error);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
logger.info(`[PerRequestSpanProcessor] Export succeeded traceId=${traceId} reason=${reason} spans=${spans.length}`);
|
|
203
|
+
}
|
|
204
|
+
resolve();
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
logger.error(`[PerRequestSpanProcessor] Export threw traceId=${traceId} reason=${reason} spans=${spans.length}`, err);
|
|
209
|
+
resolve();
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
logger.error(`[PerRequestSpanProcessor] context.with threw traceId=${traceId} reason=${reason}`, err);
|
|
215
|
+
resolve();
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
finally {
|
|
220
|
+
this.releaseExportSlot();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
async acquireExportSlot() {
|
|
224
|
+
if (this.maxConcurrentExports <= 0)
|
|
225
|
+
return;
|
|
226
|
+
if (this.inFlightExports < this.maxConcurrentExports) {
|
|
227
|
+
this.inFlightExports += 1;
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
await new Promise((resolve) => {
|
|
231
|
+
this.exportWaiters.push(() => {
|
|
232
|
+
this.inFlightExports += 1;
|
|
233
|
+
resolve();
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
releaseExportSlot() {
|
|
238
|
+
if (this.maxConcurrentExports <= 0)
|
|
239
|
+
return;
|
|
240
|
+
this.inFlightExports = Math.max(0, this.inFlightExports - 1);
|
|
241
|
+
const next = this.exportWaiters.shift();
|
|
242
|
+
if (next)
|
|
243
|
+
next();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=PerRequestSpanProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerRequestSpanProcessor.js","sourceRoot":"","sources":["../../../src/tracing/PerRequestSpanProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ export declare class OpenTelemetryConstants {
|
|
|
17
17
|
static readonly ENABLE_OBSERVABILITY = "ENABLE_OBSERVABILITY";
|
|
18
18
|
static readonly ENABLE_A365_OBSERVABILITY_EXPORTER = "ENABLE_A365_OBSERVABILITY_EXPORTER";
|
|
19
19
|
static readonly ENABLE_A365_OBSERVABILITY = "ENABLE_A365_OBSERVABILITY";
|
|
20
|
+
static readonly ENABLE_A365_OBSERVABILITY_PER_REQUEST_EXPORT = "ENABLE_A365_OBSERVABILITY_PER_REQUEST_EXPORT";
|
|
20
21
|
static readonly GEN_AI_CLIENT_OPERATION_DURATION_METRIC_NAME = "gen_ai.client.operation.duration";
|
|
21
22
|
static readonly GEN_AI_CLIENT_TOKEN_USAGE_METRIC_NAME = "gen_ai.client.token.usage";
|
|
22
23
|
static readonly GEN_AI_OPERATION_NAME_KEY = "gen_ai.operation.name";
|
|
@@ -31,6 +32,7 @@ export declare class OpenTelemetryConstants {
|
|
|
31
32
|
static readonly GEN_AI_SYSTEM_VALUE = "az.ai.agent365";
|
|
32
33
|
static readonly GEN_AI_AGENT_ID_KEY = "gen_ai.agent.id";
|
|
33
34
|
static readonly GEN_AI_AGENT_NAME_KEY = "gen_ai.agent.name";
|
|
35
|
+
static readonly GEN_AI_AGENT_TYPE_KEY = "gen_ai.agent.type";
|
|
34
36
|
static readonly GEN_AI_AGENT_DESCRIPTION_KEY = "gen_ai.agent.description";
|
|
35
37
|
static readonly GEN_AI_AGENT_PLATFORM_ID_KEY = "gen_ai.agent.platformid";
|
|
36
38
|
static readonly GEN_AI_CONVERSATION_ID_KEY = "gen_ai.conversation.id";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tracing/constants.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,sBAAsB;IAEjC,gBAAuB,2BAA2B,kBAAkB;IACpE,gBAAuB,2BAA2B,kBAAkB;IAGpE,gBAAuB,cAAc,gBAAgB;IACrD,gBAAuB,iBAAiB,mBAAmB;IAC3D,gBAAuB,gBAAgB,kBAAkB;IACzD,gBAAuB,kBAAkB,oBAAoB;IAC7D,gBAAuB,eAAe,iBAAiB;IACvD,gBAAuB,wBAAwB,iCAAiC;IAChF,gBAAuB,WAAW,iBAAiB;IACnD,gBAAuB,2BAA2B,6CAA6C;IAC/F,gBAAuB,qBAAqB,iDAAiD;IAC7F,gBAAuB,mCAAmC,oDAAoD;IAC9G,gBAAuB,oBAAoB,0BAA0B;IACrE,gBAAuB,kCAAkC,wCAAwC;IACjG,gBAAuB,yBAAyB,+BAA+B;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tracing/constants.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,sBAAsB;IAEjC,gBAAuB,2BAA2B,kBAAkB;IACpE,gBAAuB,2BAA2B,kBAAkB;IAGpE,gBAAuB,cAAc,gBAAgB;IACrD,gBAAuB,iBAAiB,mBAAmB;IAC3D,gBAAuB,gBAAgB,kBAAkB;IACzD,gBAAuB,kBAAkB,oBAAoB;IAC7D,gBAAuB,eAAe,iBAAiB;IACvD,gBAAuB,wBAAwB,iCAAiC;IAChF,gBAAuB,WAAW,iBAAiB;IACnD,gBAAuB,2BAA2B,6CAA6C;IAC/F,gBAAuB,qBAAqB,iDAAiD;IAC7F,gBAAuB,mCAAmC,oDAAoD;IAC9G,gBAAuB,oBAAoB,0BAA0B;IACrE,gBAAuB,kCAAkC,wCAAwC;IACjG,gBAAuB,yBAAyB,+BAA+B;IAC/E,gBAAuB,4CAA4C,kDAAkD;IAGrH,gBAAuB,4CAA4C,sCAAsC;IACzG,gBAAuB,qCAAqC,+BAA+B;IAC3F,gBAAuB,yBAAyB,2BAA2B;IAC3E,gBAAuB,6BAA6B,+BAA+B;IACnF,gBAAuB,wBAAwB,0BAA0B;IACzE,gBAAuB,8BAA8B,gCAAgC;IACrF,gBAAuB,wBAAwB,0BAA0B;IACzE,gBAAuB,sBAAsB,wBAAwB;IACrE,gBAAuB,kCAAkC,oCAAoC;IAC7F,gBAAuB,yBAAyB,2BAA2B;IAC3E,gBAAuB,iBAAiB,mBAAmB;IAC3D,gBAAuB,mBAAmB,oBAAoB;IAE9D,gBAAuB,mBAAmB,qBAAqB;IAC/D,gBAAuB,qBAAqB,uBAAuB;IACnE,gBAAuB,qBAAqB,uBAAuB;IACnE,gBAAuB,4BAA4B,8BAA8B;IACjF,gBAAuB,4BAA4B,6BAA6B;IAChF,gBAAuB,0BAA0B,4BAA4B;IAC7E,gBAAuB,iCAAiC,mCAAmC;IAC3F,gBAAuB,qBAAqB,uBAAuB;IACnE,gBAAuB,6BAA6B,+BAA+B;IACnF,gBAAuB,8BAA8B,gCAAgC;IACrF,gBAAuB,aAAa,mBAAmB;IACvD,gBAAuB,wBAAwB,0BAA0B;IAEzE,gBAAuB,8BAA8B,gCAAgC;IACrF,gBAAuB,yBAAyB,2BAA2B;IAC3E,gBAAuB,0BAA0B,4BAA4B;IAC7E,gBAAuB,oBAAoB,0BAA0B;IAGrE,gBAAuB,uBAAuB,yBAAyB;IACvE,gBAAuB,oBAAoB,sBAAsB;IACjE,gBAAuB,2BAA2B,6BAA6B;IAC/E,gBAAuB,oBAAoB,gCAAgC;IAC3E,gBAAuB,2BAA2B,0BAA0B;IAC5E,gBAAuB,oBAAoB,sBAAsB;IAGjE,gBAAuB,wBAAwB,yBAAyB;IACxE,gBAAuB,2BAA2B,4BAA4B;IAC9E,gBAAuB,oBAAoB,sBAAsB;IACjE,gBAAuB,sBAAsB,wBAAwB;IACrE,gBAAuB,qBAAqB,uBAAuB;IACnE,gBAAuB,2BAA2B,6BAA6B;IAG/E,gBAAuB,+BAA+B,gCAAgC;IACtF,gBAAuB,2BAA2B,6BAA6B;IAC/E,gBAAuB,iCAAiC,kCAAkC;IAC1F,gBAAuB,4BAA4B,8BAA8B;IACjF,gBAAuB,0BAA0B,4BAA4B;IAC7E,gBAAuB,sCAAsC,uCAAuC;IACpG,gBAAuB,iCAAiC,wCAAwC;IAChG,gBAAuB,mCAAmC,oCAAoC;IAE9F,gBAAuB,YAAY,qBAAqB;IACxD,gBAAuB,kBAAkB,oBAAoB;IAC7D,gBAAuB,cAAc,gBAAgB;IACrD,gBAAuB,uBAAuB,yBAAyB;IACvE,gBAAuB,mBAAmB,8BAA8B;IACxE,gBAAuB,aAAa,eAAe;IAGnD,gBAAuB,oBAAoB,sBAAsB;IACjE,gBAAuB,qBAAqB,0BAA0B;IACtE,gBAAuB,oBAAoB,sBAAsB;IACjE,gBAAuB,6BAA6B,gCAAgC;IACpF,gBAAuB,kBAAkB,oBAAoB;IAC7D,gBAAuB,qBAAqB,uBAAuB;IAGnE,gBAAuB,yBAAyB,2BAA2B;IAC3E,gBAAuB,4BAA4B,8BAA8B;IAGjF,gBAAuB,8BAA8B,wCAAwC;IAC7F,gBAAuB,gCAAgC,yBAAyB;IAChF,gBAAuB,uCAAuC,yBAAyB;IAGvF,gBAAuB,yBAAyB,2BAA2B;IAC3E,gBAAuB,oBAAoB,sBAAsB;CAClE"}
|
|
@@ -23,6 +23,7 @@ OpenTelemetryConstants.TRACE_CONTENTS_ENVIRONMENT_VARIABLE = 'AZURE_TRACING_GEN_
|
|
|
23
23
|
OpenTelemetryConstants.ENABLE_OBSERVABILITY = 'ENABLE_OBSERVABILITY';
|
|
24
24
|
OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY_EXPORTER = 'ENABLE_A365_OBSERVABILITY_EXPORTER';
|
|
25
25
|
OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY = 'ENABLE_A365_OBSERVABILITY';
|
|
26
|
+
OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY_PER_REQUEST_EXPORT = 'ENABLE_A365_OBSERVABILITY_PER_REQUEST_EXPORT';
|
|
26
27
|
// GenAI semantic conventions
|
|
27
28
|
OpenTelemetryConstants.GEN_AI_CLIENT_OPERATION_DURATION_METRIC_NAME = 'gen_ai.client.operation.duration';
|
|
28
29
|
OpenTelemetryConstants.GEN_AI_CLIENT_TOKEN_USAGE_METRIC_NAME = 'gen_ai.client.token.usage';
|
|
@@ -38,6 +39,7 @@ OpenTelemetryConstants.GEN_AI_SYSTEM_KEY = 'gen_ai.system';
|
|
|
38
39
|
OpenTelemetryConstants.GEN_AI_SYSTEM_VALUE = 'az.ai.agent365';
|
|
39
40
|
OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY = 'gen_ai.agent.id';
|
|
40
41
|
OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY = 'gen_ai.agent.name';
|
|
42
|
+
OpenTelemetryConstants.GEN_AI_AGENT_TYPE_KEY = 'gen_ai.agent.type';
|
|
41
43
|
OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY = 'gen_ai.agent.description';
|
|
42
44
|
OpenTelemetryConstants.GEN_AI_AGENT_PLATFORM_ID_KEY = 'gen_ai.agent.platformid';
|
|
43
45
|
OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY = 'gen_ai.conversation.id';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/tracing/constants.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF;;GAEG;AACH,MAAM,OAAO,sBAAsB;;AACjC,uBAAuB;AACA,kDAA2B,GAAG,cAAc,CAAC;AAC7C,kDAA2B,GAAG,cAAc,CAAC;AAEpE,qCAAqC;AACd,qCAAc,GAAG,YAAY,CAAC;AAC9B,wCAAiB,GAAG,eAAe,CAAC;AACpC,uCAAgB,GAAG,cAAc,CAAC;AAClC,yCAAkB,GAAG,gBAAgB,CAAC;AACtC,sCAAe,GAAG,aAAa,CAAC;AAChC,+CAAwB,GAAG,6BAA6B,CAAC;AACzD,kCAAW,GAAG,aAAa,CAAC;AAC5B,kDAA2B,GAAG,yCAAyC,CAAC;AACxE,4CAAqB,GAAG,6CAA6C,CAAC;AACtE,0DAAmC,GAAG,gDAAgD,CAAC;AACvF,2CAAoB,GAAG,sBAAsB,CAAC;AAC9C,yDAAkC,GAAG,oCAAoC,CAAC;AAC1E,gDAAyB,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/tracing/constants.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF;;GAEG;AACH,MAAM,OAAO,sBAAsB;;AACjC,uBAAuB;AACA,kDAA2B,GAAG,cAAc,CAAC;AAC7C,kDAA2B,GAAG,cAAc,CAAC;AAEpE,qCAAqC;AACd,qCAAc,GAAG,YAAY,CAAC;AAC9B,wCAAiB,GAAG,eAAe,CAAC;AACpC,uCAAgB,GAAG,cAAc,CAAC;AAClC,yCAAkB,GAAG,gBAAgB,CAAC;AACtC,sCAAe,GAAG,aAAa,CAAC;AAChC,+CAAwB,GAAG,6BAA6B,CAAC;AACzD,kCAAW,GAAG,aAAa,CAAC;AAC5B,kDAA2B,GAAG,yCAAyC,CAAC;AACxE,4CAAqB,GAAG,6CAA6C,CAAC;AACtE,0DAAmC,GAAG,gDAAgD,CAAC;AACvF,2CAAoB,GAAG,sBAAsB,CAAC;AAC9C,yDAAkC,GAAG,oCAAoC,CAAC;AAC1E,gDAAyB,GAAG,2BAA2B,CAAC;AACxD,mEAA4C,GAAG,8CAA8C,CAAC;AAErH,6BAA6B;AACN,mEAA4C,GAAG,kCAAkC,CAAC;AAClF,4DAAqC,GAAG,2BAA2B,CAAC;AACpE,gDAAyB,GAAG,uBAAuB,CAAC;AACpD,oDAA6B,GAAG,2BAA2B,CAAC;AAC5D,+CAAwB,GAAG,sBAAsB,CAAC;AAClD,qDAA8B,GAAG,4BAA4B,CAAC;AAC9D,+CAAwB,GAAG,sBAAsB,CAAC;AAClD,6CAAsB,GAAG,oBAAoB,CAAC;AAC9C,yDAAkC,GAAG,gCAAgC,CAAC;AACtE,gDAAyB,GAAG,uBAAuB,CAAC;AACpD,wCAAiB,GAAG,eAAe,CAAC;AACpC,0CAAmB,GAAG,gBAAgB,CAAC;AAEvC,0CAAmB,GAAG,iBAAiB,CAAC;AACxC,4CAAqB,GAAG,mBAAmB,CAAC;AAC5C,4CAAqB,GAAG,mBAAmB,CAAC;AAC5C,mDAA4B,GAAG,0BAA0B,CAAC;AAC1D,mDAA4B,GAAG,yBAAyB,CAAC;AACzD,iDAA0B,GAAG,wBAAwB,CAAC;AACtD,wDAAiC,GAAG,+BAA+B,CAAC;AACpE,4CAAqB,GAAG,mBAAmB,CAAC;AAC5C,oDAA6B,GAAG,2BAA2B,CAAC;AAC5D,qDAA8B,GAAG,4BAA4B,CAAC;AAC9D,oCAAa,GAAG,eAAe,CAAC;AAChC,+CAAwB,GAAG,sBAAsB,CAAC;AAElD,qDAA8B,GAAG,4BAA4B,CAAC;AAC9D,gDAAyB,GAAG,uBAAuB,CAAC;AACpD,iDAA0B,GAAG,wBAAwB,CAAC;AACtD,2CAAoB,GAAG,sBAAsB,CAAC;AAErE,2BAA2B;AACJ,8CAAuB,GAAG,qBAAqB,CAAC;AAChD,2CAAoB,GAAG,kBAAkB,CAAC;AAC1C,kDAA2B,GAAG,yBAAyB,CAAC;AACxD,2CAAoB,GAAG,4BAA4B,CAAC;AACpD,kDAA2B,GAAG,sBAAsB,CAAC,CAAC,uBAAuB;AAC7E,2CAAoB,GAAG,kBAAkB,CAAC;AAEjE,gFAAgF;AACzD,+CAAwB,GAAG,qBAAqB,CAAC;AACjD,kDAA2B,GAAG,wBAAwB,CAAC;AACvD,2CAAoB,GAAG,kBAAkB,CAAC;AAC1C,6CAAsB,GAAG,oBAAoB,CAAC;AAC9C,4CAAqB,GAAG,mBAAmB,CAAC;AAC5C,kDAA2B,GAAG,yBAAyB,CAAC;AAE/E,yCAAyC;AAClB,sDAA+B,GAAG,4BAA4B,CAAC;AAC/D,kDAA2B,GAAG,yBAAyB,CAAC;AACxD,wDAAiC,GAAG,8BAA8B,CAAC;AACnE,mDAA4B,GAAG,0BAA0B,CAAC;AAC1D,iDAA0B,GAAG,wBAAwB,CAAC;AACtD,6DAAsC,GAAG,mCAAmC,CAAC;AAC7E,wDAAiC,GAAG,oCAAoC,CAAC;AACzE,0DAAmC,GAAG,gCAAgC,CAAC;AAC9F,4BAA4B;AACL,mCAAY,GAAG,iBAAiB,CAAC;AACjC,yCAAkB,GAAG,gBAAgB,CAAC;AACtC,qCAAc,GAAG,YAAY,CAAC;AAC9B,8CAAuB,GAAG,qBAAqB,CAAC;AAChD,0CAAmB,GAAG,0BAA0B,CAAC;AACjD,oCAAa,GAAG,WAAW,CAAC;AAEnD,eAAe;AACQ,2CAAoB,GAAG,kBAAkB,CAAC;AAC1C,4CAAqB,GAAG,sBAAsB,CAAC;AAC/C,2CAAoB,GAAG,kBAAkB,CAAC;AAC1C,oDAA6B,GAAG,4BAA4B,CAAC;AAC7D,yCAAkB,GAAG,gBAAgB,CAAC;AACtC,4CAAqB,GAAG,mBAAmB,CAAC;AAEnE,+BAA+B;AACR,gDAAyB,GAAG,uBAAuB,CAAC;AACpD,mDAA4B,GAAG,0BAA0B,CAAC;AAEjF,6BAA6B;AACN,qDAA8B,GAAG,oCAAoC,CAAC;AACtE,uDAAgC,GAAG,qBAAqB,CAAC;AACzD,8DAAuC,GAAG,qBAAqB,CAAC;AAEvF,uCAAuC;AAChB,gDAAyB,GAAG,uBAAuB,CAAC;AACpD,2CAAoB,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Context } from '@opentelemetry/api';
|
|
2
|
+
/**
|
|
3
|
+
* Run a function within a Context that carries the per-request export token.
|
|
4
|
+
* This keeps the token only in OTel Context (ALS), never in any registry.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runWithExportToken<T>(token: string, fn: () => T): T;
|
|
7
|
+
/**
|
|
8
|
+
* Retrieve the per-request export token from a given OTel Context (or the active one).
|
|
9
|
+
*/
|
|
10
|
+
export declare function getExportToken(ctx?: Context): string | undefined;
|
|
11
|
+
//# sourceMappingURL=token-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-context.d.ts","sourceRoot":"","sources":["../../../../src/tracing/context/token-context.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKxE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAInE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,OAA0B,GAAG,MAAM,GAAG,SAAS,CAElF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
// ------------------------------------------------------------------------------
|
|
4
|
+
import { context, createContextKey } from '@opentelemetry/api';
|
|
5
|
+
import logger from '../../utils/logging';
|
|
6
|
+
const EXPORT_TOKEN_KEY = createContextKey('a365_export_token');
|
|
7
|
+
/**
|
|
8
|
+
* Run a function within a Context that carries the per-request export token.
|
|
9
|
+
* This keeps the token only in OTel Context (ALS), never in any registry.
|
|
10
|
+
*/
|
|
11
|
+
export function runWithExportToken(token, fn) {
|
|
12
|
+
const ctxWithToken = context.active().setValue(EXPORT_TOKEN_KEY, token);
|
|
13
|
+
logger.info('[TokenContext] Running function with export token in context.');
|
|
14
|
+
return context.with(ctxWithToken, fn);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Retrieve the per-request export token from a given OTel Context (or the active one).
|
|
18
|
+
*/
|
|
19
|
+
export function getExportToken(ctx = context.active()) {
|
|
20
|
+
return ctx.getValue(EXPORT_TOKEN_KEY);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=token-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-context.js","sourceRoot":"","sources":["../../../../src/tracing/context/token-context.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAW,MAAM,oBAAoB,CAAC;AACxE,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAEzC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAI,KAAa,EAAE,EAAW;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe,OAAO,CAAC,MAAM,EAAE;IAC5D,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAuB,CAAC;AAC9D,CAAC"}
|
|
@@ -77,6 +77,8 @@ export interface AgentDetails {
|
|
|
77
77
|
conversationId?: string;
|
|
78
78
|
/** The human-readable name of the AI agent */
|
|
79
79
|
agentName?: string;
|
|
80
|
+
/** Optional type of the AI agent */
|
|
81
|
+
agentType?: string;
|
|
80
82
|
/** A description of the AI agent's purpose or capabilities */
|
|
81
83
|
agentDescription?: string;
|
|
82
84
|
/** Optional icon identifier or URL for visual representation of the agent */
|