@microsoft/agents-a365-observability-hosting 0.1.0-preview.115 → 0.1.0-preview.116
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/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/middleware/OutputLoggingMiddleware.d.ts +12 -0
- package/dist/cjs/middleware/OutputLoggingMiddleware.d.ts.map +1 -1
- package/dist/cjs/middleware/OutputLoggingMiddleware.js +26 -2
- package/dist/cjs/middleware/OutputLoggingMiddleware.js.map +1 -1
- package/dist/cjs/utils/ScopeUtils.d.ts +13 -5
- package/dist/cjs/utils/ScopeUtils.d.ts.map +1 -1
- package/dist/cjs/utils/ScopeUtils.js +26 -14
- package/dist/cjs/utils/ScopeUtils.js.map +1 -1
- package/dist/cjs/utils/TurnContextUtils.d.ts +16 -2
- package/dist/cjs/utils/TurnContextUtils.d.ts.map +1 -1
- package/dist/cjs/utils/TurnContextUtils.js +25 -19
- package/dist/cjs/utils/TurnContextUtils.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/middleware/OutputLoggingMiddleware.d.ts +12 -0
- package/dist/esm/middleware/OutputLoggingMiddleware.d.ts.map +1 -1
- package/dist/esm/middleware/OutputLoggingMiddleware.js +26 -2
- package/dist/esm/middleware/OutputLoggingMiddleware.js.map +1 -1
- package/dist/esm/utils/ScopeUtils.d.ts +13 -5
- package/dist/esm/utils/ScopeUtils.d.ts.map +1 -1
- package/dist/esm/utils/ScopeUtils.js +26 -14
- package/dist/esm/utils/ScopeUtils.js.map +1 -1
- package/dist/esm/utils/TurnContextUtils.d.ts +16 -2
- package/dist/esm/utils/TurnContextUtils.d.ts.map +1 -1
- package/dist/esm/utils/TurnContextUtils.js +24 -19
- package/dist/esm/utils/TurnContextUtils.js.map +1 -1
- package/package.json +4 -4
package/dist/cjs/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export * from './utils/ScopeUtils';
|
|
|
3
3
|
export * from './utils/TurnContextUtils';
|
|
4
4
|
export { AgenticTokenCache, AgenticTokenCacheInstance } from './caching/AgenticTokenCache';
|
|
5
5
|
export { BaggageMiddleware } from './middleware/BaggageMiddleware';
|
|
6
|
-
export { OutputLoggingMiddleware, A365_PARENT_SPAN_KEY } from './middleware/OutputLoggingMiddleware';
|
|
6
|
+
export { OutputLoggingMiddleware, A365_PARENT_SPAN_KEY, A365_AUTH_TOKEN_KEY } from './middleware/OutputLoggingMiddleware';
|
|
7
7
|
export { ObservabilityHostingManager } from './middleware/ObservabilityHostingManager';
|
|
8
8
|
export type { ObservabilityHostingOptions } from './middleware/ObservabilityHostingManager';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1H,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,YAAY,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.ObservabilityHostingManager = exports.A365_PARENT_SPAN_KEY = exports.OutputLoggingMiddleware = exports.BaggageMiddleware = exports.AgenticTokenCacheInstance = exports.AgenticTokenCache = void 0;
|
|
21
|
+
exports.ObservabilityHostingManager = exports.A365_AUTH_TOKEN_KEY = exports.A365_PARENT_SPAN_KEY = exports.OutputLoggingMiddleware = exports.BaggageMiddleware = exports.AgenticTokenCacheInstance = exports.AgenticTokenCache = void 0;
|
|
22
22
|
__exportStar(require("./utils/BaggageBuilderUtils"), exports);
|
|
23
23
|
__exportStar(require("./utils/ScopeUtils"), exports);
|
|
24
24
|
__exportStar(require("./utils/TurnContextUtils"), exports);
|
|
@@ -30,6 +30,7 @@ Object.defineProperty(exports, "BaggageMiddleware", { enumerable: true, get: fun
|
|
|
30
30
|
var OutputLoggingMiddleware_1 = require("./middleware/OutputLoggingMiddleware");
|
|
31
31
|
Object.defineProperty(exports, "OutputLoggingMiddleware", { enumerable: true, get: function () { return OutputLoggingMiddleware_1.OutputLoggingMiddleware; } });
|
|
32
32
|
Object.defineProperty(exports, "A365_PARENT_SPAN_KEY", { enumerable: true, get: function () { return OutputLoggingMiddleware_1.A365_PARENT_SPAN_KEY; } });
|
|
33
|
+
Object.defineProperty(exports, "A365_AUTH_TOKEN_KEY", { enumerable: true, get: function () { return OutputLoggingMiddleware_1.A365_AUTH_TOKEN_KEY; } });
|
|
33
34
|
var ObservabilityHostingManager_1 = require("./middleware/ObservabilityHostingManager");
|
|
34
35
|
Object.defineProperty(exports, "ObservabilityHostingManager", { enumerable: true, get: function () { return ObservabilityHostingManager_1.ObservabilityHostingManager; } });
|
|
35
36
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;;;;;;;;;;;;;;;AAEjF,8DAA4C;AAC5C,qDAAmC;AACnC,2DAAyC;AACzC,iEAA2F;AAAlF,sHAAA,iBAAiB,OAAA;AAAE,8HAAA,yBAAyB,OAAA;AACrD,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA;AAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;;;;;;;;;;;;;;;AAEjF,8DAA4C;AAC5C,qDAAmC;AACnC,2DAAyC;AACzC,iEAA2F;AAAlF,sHAAA,iBAAiB,OAAA;AAAE,8HAAA,yBAAyB,OAAA;AACrD,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA;AAC1B,gFAA0H;AAAjH,kIAAA,uBAAuB,OAAA;AAAE,+HAAA,oBAAoB,OAAA;AAAE,8HAAA,mBAAmB,OAAA;AAC3E,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA"}
|
|
@@ -4,6 +4,12 @@ import { TurnContext, Middleware } from '@microsoft/agents-hosting';
|
|
|
4
4
|
* Set this in `turnState` to link OutputScope spans as children of an InvokeAgentScope.
|
|
5
5
|
*/
|
|
6
6
|
export declare const A365_PARENT_SPAN_KEY = "A365ParentSpanId";
|
|
7
|
+
/**
|
|
8
|
+
* TurnState key for the auth token.
|
|
9
|
+
* Set this in `turnState` so middleware can resolve the agent blueprint ID
|
|
10
|
+
* from token claims (used for embodied/agentic requests).
|
|
11
|
+
*/
|
|
12
|
+
export declare const A365_AUTH_TOKEN_KEY = "A365AuthToken";
|
|
7
13
|
/**
|
|
8
14
|
* Middleware that creates {@link OutputScope} spans for outgoing messages.
|
|
9
15
|
* Links to a parent span when {@link A365_PARENT_SPAN_KEY} is set in turnState.
|
|
@@ -13,6 +19,12 @@ export declare const A365_PARENT_SPAN_KEY = "A365ParentSpanId";
|
|
|
13
19
|
*/
|
|
14
20
|
export declare class OutputLoggingMiddleware implements Middleware {
|
|
15
21
|
onTurn(context: TurnContext, next: () => Promise<void>): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the auth token for agent identity resolution.
|
|
24
|
+
* When per-request export is enabled, reads from turnState.
|
|
25
|
+
* Otherwise, reads from the cached observability token.
|
|
26
|
+
*/
|
|
27
|
+
private resolveAuthToken;
|
|
16
28
|
/**
|
|
17
29
|
* Creates a send handler that wraps outgoing messages in OutputScope spans.
|
|
18
30
|
* Reads parent span ref lazily so the agent handler can set it during `next()`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputLoggingMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAyB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"OutputLoggingMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAyB,MAAM,2BAA2B,CAAC;AAa3F;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IAElD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5E;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CA8C3B"}
|
|
@@ -2,14 +2,21 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.OutputLoggingMiddleware = exports.A365_PARENT_SPAN_KEY = void 0;
|
|
5
|
+
exports.OutputLoggingMiddleware = exports.A365_AUTH_TOKEN_KEY = exports.A365_PARENT_SPAN_KEY = void 0;
|
|
6
6
|
const agents_a365_observability_1 = require("@microsoft/agents-a365-observability");
|
|
7
7
|
const ScopeUtils_1 = require("../utils/ScopeUtils");
|
|
8
|
+
const AgenticTokenCache_1 = require("../caching/AgenticTokenCache");
|
|
8
9
|
/**
|
|
9
10
|
* TurnState key for the parent span reference.
|
|
10
11
|
* Set this in `turnState` to link OutputScope spans as children of an InvokeAgentScope.
|
|
11
12
|
*/
|
|
12
13
|
exports.A365_PARENT_SPAN_KEY = 'A365ParentSpanId';
|
|
14
|
+
/**
|
|
15
|
+
* TurnState key for the auth token.
|
|
16
|
+
* Set this in `turnState` so middleware can resolve the agent blueprint ID
|
|
17
|
+
* from token claims (used for embodied/agentic requests).
|
|
18
|
+
*/
|
|
19
|
+
exports.A365_AUTH_TOKEN_KEY = 'A365AuthToken';
|
|
13
20
|
/**
|
|
14
21
|
* Middleware that creates {@link OutputScope} spans for outgoing messages.
|
|
15
22
|
* Links to a parent span when {@link A365_PARENT_SPAN_KEY} is set in turnState.
|
|
@@ -19,7 +26,8 @@ exports.A365_PARENT_SPAN_KEY = 'A365ParentSpanId';
|
|
|
19
26
|
*/
|
|
20
27
|
class OutputLoggingMiddleware {
|
|
21
28
|
async onTurn(context, next) {
|
|
22
|
-
const
|
|
29
|
+
const authToken = this.resolveAuthToken(context);
|
|
30
|
+
const agentDetails = ScopeUtils_1.ScopeUtils.deriveAgentDetails(context, authToken);
|
|
23
31
|
const tenantDetails = ScopeUtils_1.ScopeUtils.deriveTenantDetails(context);
|
|
24
32
|
if (!agentDetails || !tenantDetails) {
|
|
25
33
|
await next();
|
|
@@ -31,6 +39,22 @@ class OutputLoggingMiddleware {
|
|
|
31
39
|
context.onSendActivities(this._createSendHandler(context, agentDetails, tenantDetails, callerDetails, conversationId, sourceMetadata));
|
|
32
40
|
await next();
|
|
33
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the auth token for agent identity resolution.
|
|
44
|
+
* When per-request export is enabled, reads from turnState.
|
|
45
|
+
* Otherwise, reads from the cached observability token.
|
|
46
|
+
*/
|
|
47
|
+
resolveAuthToken(context) {
|
|
48
|
+
if ((0, agents_a365_observability_1.isPerRequestExportEnabled)()) {
|
|
49
|
+
return context.turnState.get(exports.A365_AUTH_TOKEN_KEY) ?? '';
|
|
50
|
+
}
|
|
51
|
+
const agentId = context.activity?.getAgenticInstanceId?.() ?? '';
|
|
52
|
+
const tenantId = context.activity?.getAgenticTenantId?.() ?? '';
|
|
53
|
+
if (agentId && tenantId) {
|
|
54
|
+
return AgenticTokenCache_1.AgenticTokenCacheInstance.getObservabilityToken(agentId, tenantId) ?? '';
|
|
55
|
+
}
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
34
58
|
/**
|
|
35
59
|
* Creates a send handler that wraps outgoing messages in OutputScope spans.
|
|
36
60
|
* Reads parent span ref lazily so the agent handler can set it during `next()`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputLoggingMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,
|
|
1
|
+
{"version":3,"file":"OutputLoggingMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,13 @@ export declare class ScopeUtils {
|
|
|
15
15
|
static deriveTenantDetails(turnContext: TurnContext): TenantDetails | undefined;
|
|
16
16
|
/**
|
|
17
17
|
* Derive target agent details from the activity recipient.
|
|
18
|
+
* Uses {@link resolveEmbodiedAgentIds} to resolve the agent ID and blueprint ID, which are only
|
|
19
|
+
* set for embodied (agentic) agents — see that function for the rationale.
|
|
18
20
|
* @param turnContext Activity context
|
|
21
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
19
22
|
* @returns Agent details built from recipient properties; otherwise undefined.
|
|
20
23
|
*/
|
|
21
|
-
static deriveAgentDetails(turnContext: TurnContext): AgentDetails | undefined;
|
|
24
|
+
static deriveAgentDetails(turnContext: TurnContext, authToken: string): AgentDetails | undefined;
|
|
22
25
|
/**
|
|
23
26
|
* Derive caller agent details from the activity from.
|
|
24
27
|
* @param turnContext Activity context
|
|
@@ -52,11 +55,12 @@ export declare class ScopeUtils {
|
|
|
52
55
|
* Also records input messages from the context if present.
|
|
53
56
|
* @param details The inference call details (model, provider, tokens, etc.).
|
|
54
57
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
58
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
55
59
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
56
60
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
57
61
|
* @returns A started `InferenceScope` enriched with context-derived parameters.
|
|
58
62
|
*/
|
|
59
|
-
static populateInferenceScopeFromTurnContext(details: InferenceDetails, turnContext: TurnContext, startTime?: TimeInput, endTime?: TimeInput): InferenceScope;
|
|
63
|
+
static populateInferenceScopeFromTurnContext(details: InferenceDetails, turnContext: TurnContext, authToken: string, startTime?: TimeInput, endTime?: TimeInput): InferenceScope;
|
|
60
64
|
/**
|
|
61
65
|
* Create an `InvokeAgentScope` using `details` and values derived from the provided `TurnContext`.
|
|
62
66
|
* Populates `conversationId` and `request.sourceMetadata` (channel name/link) in `details` from the `TurnContext`, overriding any existing values.
|
|
@@ -64,28 +68,32 @@ export declare class ScopeUtils {
|
|
|
64
68
|
* Also sets execution type and input messages from the context if present.
|
|
65
69
|
* @param details The invoke-agent call details to be augmented and used for the scope.
|
|
66
70
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
71
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
67
72
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
68
73
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
69
74
|
* @returns A started `InvokeAgentScope` enriched with context-derived parameters.
|
|
70
75
|
*/
|
|
71
|
-
static populateInvokeAgentScopeFromTurnContext(details: InvokeAgentDetails, turnContext: TurnContext, startTime?: TimeInput, endTime?: TimeInput): InvokeAgentScope;
|
|
76
|
+
static populateInvokeAgentScopeFromTurnContext(details: InvokeAgentDetails, turnContext: TurnContext, authToken: string, startTime?: TimeInput, endTime?: TimeInput): InvokeAgentScope;
|
|
72
77
|
/**
|
|
73
78
|
* Build InvokeAgentDetails by merging provided details with agent info, conversation id and source metadata from the TurnContext.
|
|
74
79
|
* @param details Base invoke-agent details to augment
|
|
75
80
|
* @param turnContext Activity context
|
|
81
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
76
82
|
* @returns New InvokeAgentDetails suitable for starting an InvokeAgentScope.
|
|
77
83
|
*/
|
|
78
|
-
static buildInvokeAgentDetails(details: InvokeAgentDetails, turnContext: TurnContext): InvokeAgentDetails;
|
|
84
|
+
static buildInvokeAgentDetails(details: InvokeAgentDetails, turnContext: TurnContext, authToken: string): InvokeAgentDetails;
|
|
85
|
+
private static buildInvokeAgentDetailsCore;
|
|
79
86
|
/**
|
|
80
87
|
* Create an `ExecuteToolScope` using `details` and values derived from the provided `TurnContext`.
|
|
81
88
|
* Derives `agentDetails`, `tenantDetails`, `conversationId`, and `sourceMetadata` (channel name/link) from context.
|
|
82
89
|
* @param details The tool call details (name, type, args, call id, etc.).
|
|
83
90
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
91
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
84
92
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime). Useful when recording a
|
|
85
93
|
* tool call after execution has already completed.
|
|
86
94
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
87
95
|
* @returns A started `ExecuteToolScope` enriched with context-derived parameters.
|
|
88
96
|
*/
|
|
89
|
-
static populateExecuteToolScopeFromTurnContext(details: ToolCallDetails, turnContext: TurnContext, startTime?: TimeInput, endTime?: TimeInput): ExecuteToolScope;
|
|
97
|
+
static populateExecuteToolScopeFromTurnContext(details: ToolCallDetails, turnContext: TurnContext, authToken: string, startTime?: TimeInput, endTime?: TimeInput): ExecuteToolScope;
|
|
90
98
|
}
|
|
91
99
|
//# sourceMappingURL=ScopeUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"ScopeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAG9C;;;GAGG;AACH,qBAAa,UAAU;IAGrB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;;;OAIG;WACW,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS;IAKtF;;;;;;;OAOG;WACW,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAgBvG;;;;OAIG;WACW,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS;IAenF;;;;OAIG;WACW,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS;IAWtF;;;;OAIG;WACW,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAIhF;;;;OAIG;WACW,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAO3G;;;;;;;;;;OAUG;IACH,MAAM,CAAC,qCAAqC,CAC1C,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,cAAc;IAkBjB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,gBAAgB;IAenB;;;;;;OAMG;WACW,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAInI,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAqB1C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,gBAAgB;CAepB"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.ScopeUtils = void 0;
|
|
8
8
|
const agents_a365_observability_1 = require("@microsoft/agents-a365-observability");
|
|
9
|
+
const TurnContextUtils_1 = require("./TurnContextUtils");
|
|
9
10
|
/**
|
|
10
11
|
* Unified utilities to populate scope tags from a TurnContext.
|
|
11
12
|
* Provides common tag population and scope-specific helpers.
|
|
@@ -26,26 +27,30 @@ class ScopeUtils {
|
|
|
26
27
|
* @returns Tenant details if a recipient tenant id is present; otherwise undefined.
|
|
27
28
|
*/
|
|
28
29
|
static deriveTenantDetails(turnContext) {
|
|
29
|
-
const tenantId = turnContext?.activity?.
|
|
30
|
+
const tenantId = turnContext?.activity?.getAgenticTenantId?.();
|
|
30
31
|
return tenantId ? { tenantId } : undefined;
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
34
|
* Derive target agent details from the activity recipient.
|
|
35
|
+
* Uses {@link resolveEmbodiedAgentIds} to resolve the agent ID and blueprint ID, which are only
|
|
36
|
+
* set for embodied (agentic) agents — see that function for the rationale.
|
|
34
37
|
* @param turnContext Activity context
|
|
38
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
35
39
|
* @returns Agent details built from recipient properties; otherwise undefined.
|
|
36
40
|
*/
|
|
37
|
-
static deriveAgentDetails(turnContext) {
|
|
41
|
+
static deriveAgentDetails(turnContext, authToken) {
|
|
38
42
|
const recipient = turnContext?.activity?.recipient;
|
|
39
43
|
if (!recipient)
|
|
40
44
|
return undefined;
|
|
45
|
+
const { agentId, agentBlueprintId } = (0, TurnContextUtils_1.resolveEmbodiedAgentIds)(turnContext, authToken);
|
|
41
46
|
return {
|
|
42
|
-
agentId
|
|
47
|
+
agentId,
|
|
43
48
|
agentName: recipient.name,
|
|
44
49
|
agentAUID: recipient.aadObjectId,
|
|
45
|
-
agentBlueprintId
|
|
46
|
-
agentUPN:
|
|
50
|
+
agentBlueprintId,
|
|
51
|
+
agentUPN: turnContext?.activity?.getAgenticUser?.(),
|
|
47
52
|
agentDescription: recipient.role,
|
|
48
|
-
tenantId:
|
|
53
|
+
tenantId: turnContext?.activity?.getAgenticTenantId?.()
|
|
49
54
|
};
|
|
50
55
|
}
|
|
51
56
|
/**
|
|
@@ -108,12 +113,13 @@ class ScopeUtils {
|
|
|
108
113
|
* Also records input messages from the context if present.
|
|
109
114
|
* @param details The inference call details (model, provider, tokens, etc.).
|
|
110
115
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
116
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
111
117
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
112
118
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
113
119
|
* @returns A started `InferenceScope` enriched with context-derived parameters.
|
|
114
120
|
*/
|
|
115
|
-
static populateInferenceScopeFromTurnContext(details, turnContext, startTime, endTime) {
|
|
116
|
-
const agent = ScopeUtils.deriveAgentDetails(turnContext);
|
|
121
|
+
static populateInferenceScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
|
|
122
|
+
const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
|
|
117
123
|
const tenant = ScopeUtils.deriveTenantDetails(turnContext);
|
|
118
124
|
const conversationId = ScopeUtils.deriveConversationId(turnContext);
|
|
119
125
|
const sourceMetadata = ScopeUtils.deriveSourceMetadataObject(turnContext);
|
|
@@ -134,15 +140,16 @@ class ScopeUtils {
|
|
|
134
140
|
* Also sets execution type and input messages from the context if present.
|
|
135
141
|
* @param details The invoke-agent call details to be augmented and used for the scope.
|
|
136
142
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
143
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
137
144
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
138
145
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
139
146
|
* @returns A started `InvokeAgentScope` enriched with context-derived parameters.
|
|
140
147
|
*/
|
|
141
|
-
static populateInvokeAgentScopeFromTurnContext(details, turnContext, startTime, endTime) {
|
|
148
|
+
static populateInvokeAgentScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
|
|
142
149
|
const tenant = ScopeUtils.deriveTenantDetails(turnContext);
|
|
143
150
|
const callerAgent = ScopeUtils.deriveCallerAgent(turnContext);
|
|
144
151
|
const caller = ScopeUtils.deriveCallerDetails(turnContext);
|
|
145
|
-
const invokeAgentDetails = ScopeUtils.
|
|
152
|
+
const invokeAgentDetails = ScopeUtils.buildInvokeAgentDetailsCore(details, turnContext, authToken);
|
|
146
153
|
if (!tenant) {
|
|
147
154
|
throw new Error('populateInvokeAgentScopeFromTurnContext: Missing tenant details on TurnContext (recipient)');
|
|
148
155
|
}
|
|
@@ -154,10 +161,14 @@ class ScopeUtils {
|
|
|
154
161
|
* Build InvokeAgentDetails by merging provided details with agent info, conversation id and source metadata from the TurnContext.
|
|
155
162
|
* @param details Base invoke-agent details to augment
|
|
156
163
|
* @param turnContext Activity context
|
|
164
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
157
165
|
* @returns New InvokeAgentDetails suitable for starting an InvokeAgentScope.
|
|
158
166
|
*/
|
|
159
|
-
static buildInvokeAgentDetails(details, turnContext) {
|
|
160
|
-
|
|
167
|
+
static buildInvokeAgentDetails(details, turnContext, authToken) {
|
|
168
|
+
return ScopeUtils.buildInvokeAgentDetailsCore(details, turnContext, authToken);
|
|
169
|
+
}
|
|
170
|
+
static buildInvokeAgentDetailsCore(details, turnContext, authToken) {
|
|
171
|
+
const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
|
|
161
172
|
const srcMetaFromContext = ScopeUtils.deriveSourceMetadataObject(turnContext);
|
|
162
173
|
const baseRequest = details.request ?? {};
|
|
163
174
|
const baseSource = baseRequest.sourceMetadata ?? {};
|
|
@@ -181,13 +192,14 @@ class ScopeUtils {
|
|
|
181
192
|
* Derives `agentDetails`, `tenantDetails`, `conversationId`, and `sourceMetadata` (channel name/link) from context.
|
|
182
193
|
* @param details The tool call details (name, type, args, call id, etc.).
|
|
183
194
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
195
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
184
196
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime). Useful when recording a
|
|
185
197
|
* tool call after execution has already completed.
|
|
186
198
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
187
199
|
* @returns A started `ExecuteToolScope` enriched with context-derived parameters.
|
|
188
200
|
*/
|
|
189
|
-
static populateExecuteToolScopeFromTurnContext(details, turnContext, startTime, endTime) {
|
|
190
|
-
const agent = ScopeUtils.deriveAgentDetails(turnContext);
|
|
201
|
+
static populateExecuteToolScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
|
|
202
|
+
const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
|
|
191
203
|
const tenant = ScopeUtils.deriveTenantDetails(turnContext);
|
|
192
204
|
const conversationId = ScopeUtils.deriveConversationId(turnContext);
|
|
193
205
|
const sourceMetadata = ScopeUtils.deriveSourceMetadataObject(turnContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeUtils.js","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;AAIjF,oFAU8C;
|
|
1
|
+
{"version":3,"file":"ScopeUtils.js","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,28 @@ export declare function getCallerBaggagePairs(turnContext: TurnContext): Array<[
|
|
|
11
11
|
* @returns Array of [key, value] for execution type
|
|
12
12
|
*/
|
|
13
13
|
export declare function getExecutionTypePair(turnContext: TurnContext): Array<[string, string]>;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves the agent instance ID and blueprint ID for embodied (agentic) agents only.
|
|
16
|
+
* For the non-embodied agent case, we cannot reliably determine whether the token contains an app ID,
|
|
17
|
+
* or whether the app ID present in the token claims actually corresponds to this agent. Therefore,
|
|
18
|
+
* we only set agentId and agentBlueprintId for embodied (agentic) agents.
|
|
19
|
+
* @param turnContext Activity context
|
|
20
|
+
* @param authToken Auth token for resolving blueprint ID from token claims.
|
|
21
|
+
* @returns Object with agentId and agentBlueprintId, both undefined for non-embodied agents.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveEmbodiedAgentIds(turnContext: TurnContext, authToken: string): {
|
|
24
|
+
agentId: string | undefined;
|
|
25
|
+
agentBlueprintId: string | undefined;
|
|
26
|
+
};
|
|
14
27
|
/**
|
|
15
28
|
* Extracts agent/recipient-related OpenTelemetry baggage pairs from the TurnContext.
|
|
16
29
|
* @param turnContext The current TurnContext (activity context)
|
|
30
|
+
* @param authToken Optional auth token for resolving agent blueprint ID from token claims.
|
|
17
31
|
* @returns Array of [key, value] pairs for agent identity and description
|
|
18
32
|
*/
|
|
19
|
-
export declare function getTargetAgentBaggagePairs(turnContext: TurnContext): Array<[string, string]>;
|
|
33
|
+
export declare function getTargetAgentBaggagePairs(turnContext: TurnContext, authToken?: string): Array<[string, string]>;
|
|
20
34
|
/**
|
|
21
|
-
* Extracts the tenant ID baggage key-value pair
|
|
35
|
+
* Extracts the tenant ID baggage key-value pair using the Activity's getAgenticTenantId() helper.
|
|
22
36
|
* @param turnContext The current TurnContext (activity context)
|
|
23
37
|
* @returns Array of [key, value] for tenant ID
|
|
24
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnContextUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"TurnContextUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAexD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAevF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkBtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAQ1J;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgBhH;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAS/F;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWnG"}
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.getCallerBaggagePairs = getCallerBaggagePairs;
|
|
8
8
|
exports.getExecutionTypePair = getExecutionTypePair;
|
|
9
|
+
exports.resolveEmbodiedAgentIds = resolveEmbodiedAgentIds;
|
|
9
10
|
exports.getTargetAgentBaggagePairs = getTargetAgentBaggagePairs;
|
|
10
11
|
exports.getTenantIdPair = getTenantIdPair;
|
|
11
12
|
exports.getSourceMetadataBaggagePairs = getSourceMetadataBaggagePairs;
|
|
12
13
|
exports.getConversationIdAndItemLinkPairs = getConversationIdAndItemLinkPairs;
|
|
13
14
|
const agents_a365_observability_1 = require("@microsoft/agents-a365-observability");
|
|
14
15
|
const agents_activity_1 = require("@microsoft/agents-activity");
|
|
16
|
+
const agents_a365_runtime_1 = require("@microsoft/agents-a365-runtime");
|
|
15
17
|
/**
|
|
16
18
|
* TurnContext utility methods.
|
|
17
19
|
*/
|
|
@@ -63,17 +65,36 @@ function getExecutionTypePair(turnContext) {
|
|
|
63
65
|
}
|
|
64
66
|
return [[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY, executionType]];
|
|
65
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolves the agent instance ID and blueprint ID for embodied (agentic) agents only.
|
|
70
|
+
* For the non-embodied agent case, we cannot reliably determine whether the token contains an app ID,
|
|
71
|
+
* or whether the app ID present in the token claims actually corresponds to this agent. Therefore,
|
|
72
|
+
* we only set agentId and agentBlueprintId for embodied (agentic) agents.
|
|
73
|
+
* @param turnContext Activity context
|
|
74
|
+
* @param authToken Auth token for resolving blueprint ID from token claims.
|
|
75
|
+
* @returns Object with agentId and agentBlueprintId, both undefined for non-embodied agents.
|
|
76
|
+
*/
|
|
77
|
+
function resolveEmbodiedAgentIds(turnContext, authToken) {
|
|
78
|
+
const isAgentic = turnContext?.activity?.isAgenticRequest?.();
|
|
79
|
+
const rawAgentId = isAgentic ? turnContext.activity.getAgenticInstanceId?.() : undefined;
|
|
80
|
+
const rawBlueprintId = isAgentic ? agents_a365_runtime_1.Utility.getAgentIdFromToken(authToken) : undefined;
|
|
81
|
+
return {
|
|
82
|
+
agentId: rawAgentId || undefined,
|
|
83
|
+
agentBlueprintId: rawBlueprintId || undefined,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
66
86
|
/**
|
|
67
87
|
* Extracts agent/recipient-related OpenTelemetry baggage pairs from the TurnContext.
|
|
68
88
|
* @param turnContext The current TurnContext (activity context)
|
|
89
|
+
* @param authToken Optional auth token for resolving agent blueprint ID from token claims.
|
|
69
90
|
* @returns Array of [key, value] pairs for agent identity and description
|
|
70
91
|
*/
|
|
71
|
-
function getTargetAgentBaggagePairs(turnContext) {
|
|
92
|
+
function getTargetAgentBaggagePairs(turnContext, authToken) {
|
|
72
93
|
if (!turnContext || !turnContext.activity?.recipient) {
|
|
73
94
|
return [];
|
|
74
95
|
}
|
|
75
96
|
const recipient = turnContext.activity.recipient;
|
|
76
|
-
const agentId =
|
|
97
|
+
const { agentId } = authToken ? resolveEmbodiedAgentIds(turnContext, authToken) : { agentId: turnContext.activity?.isAgenticRequest?.() ? turnContext.activity.getAgenticInstanceId?.() : undefined };
|
|
77
98
|
const agentName = recipient.name;
|
|
78
99
|
const aadObjectId = recipient.aadObjectId;
|
|
79
100
|
const agentDescription = recipient.role;
|
|
@@ -86,27 +107,12 @@ function getTargetAgentBaggagePairs(turnContext) {
|
|
|
86
107
|
return normalizePairs(pairs);
|
|
87
108
|
}
|
|
88
109
|
/**
|
|
89
|
-
* Extracts the tenant ID baggage key-value pair
|
|
110
|
+
* Extracts the tenant ID baggage key-value pair using the Activity's getAgenticTenantId() helper.
|
|
90
111
|
* @param turnContext The current TurnContext (activity context)
|
|
91
112
|
* @returns Array of [key, value] for tenant ID
|
|
92
113
|
*/
|
|
93
114
|
function getTenantIdPair(turnContext) {
|
|
94
|
-
|
|
95
|
-
// If not found, try to extract from channelData. Accepts both object and JSON string.
|
|
96
|
-
if (!tenantId && turnContext.activity?.channelData) {
|
|
97
|
-
try {
|
|
98
|
-
let channelData = turnContext.activity.channelData;
|
|
99
|
-
if (typeof channelData === 'string') {
|
|
100
|
-
channelData = JSON.parse(channelData);
|
|
101
|
-
}
|
|
102
|
-
if (typeof channelData === 'object' && channelData !== null) {
|
|
103
|
-
tenantId = channelData?.tenant?.id;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
catch (_err) {
|
|
107
|
-
// ignore JSON parse errors
|
|
108
|
-
}
|
|
109
|
-
}
|
|
115
|
+
const tenantId = turnContext.activity?.getAgenticTenantId?.();
|
|
110
116
|
return tenantId ? [[agents_a365_observability_1.OpenTelemetryConstants.TENANT_ID_KEY, tenantId]] : [];
|
|
111
117
|
}
|
|
112
118
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnContextUtils.js","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;
|
|
1
|
+
{"version":3,"file":"TurnContextUtils.js","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export * from './utils/ScopeUtils';
|
|
|
3
3
|
export * from './utils/TurnContextUtils';
|
|
4
4
|
export { AgenticTokenCache, AgenticTokenCacheInstance } from './caching/AgenticTokenCache';
|
|
5
5
|
export { BaggageMiddleware } from './middleware/BaggageMiddleware';
|
|
6
|
-
export { OutputLoggingMiddleware, A365_PARENT_SPAN_KEY } from './middleware/OutputLoggingMiddleware';
|
|
6
|
+
export { OutputLoggingMiddleware, A365_PARENT_SPAN_KEY, A365_AUTH_TOKEN_KEY } from './middleware/OutputLoggingMiddleware';
|
|
7
7
|
export { ObservabilityHostingManager } from './middleware/ObservabilityHostingManager';
|
|
8
8
|
export type { ObservabilityHostingOptions } from './middleware/ObservabilityHostingManager';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
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,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1H,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,YAAY,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -7,6 +7,6 @@ export * from './utils/ScopeUtils';
|
|
|
7
7
|
export * from './utils/TurnContextUtils';
|
|
8
8
|
export { AgenticTokenCache, AgenticTokenCacheInstance } from './caching/AgenticTokenCache';
|
|
9
9
|
export { BaggageMiddleware } from './middleware/BaggageMiddleware';
|
|
10
|
-
export { OutputLoggingMiddleware, A365_PARENT_SPAN_KEY } from './middleware/OutputLoggingMiddleware';
|
|
10
|
+
export { OutputLoggingMiddleware, A365_PARENT_SPAN_KEY, A365_AUTH_TOKEN_KEY } from './middleware/OutputLoggingMiddleware';
|
|
11
11
|
export { ObservabilityHostingManager } from './middleware/ObservabilityHostingManager';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
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,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;AAEjF,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;AAEjF,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1H,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC"}
|
|
@@ -4,6 +4,12 @@ import { TurnContext, Middleware } from '@microsoft/agents-hosting';
|
|
|
4
4
|
* Set this in `turnState` to link OutputScope spans as children of an InvokeAgentScope.
|
|
5
5
|
*/
|
|
6
6
|
export declare const A365_PARENT_SPAN_KEY = "A365ParentSpanId";
|
|
7
|
+
/**
|
|
8
|
+
* TurnState key for the auth token.
|
|
9
|
+
* Set this in `turnState` so middleware can resolve the agent blueprint ID
|
|
10
|
+
* from token claims (used for embodied/agentic requests).
|
|
11
|
+
*/
|
|
12
|
+
export declare const A365_AUTH_TOKEN_KEY = "A365AuthToken";
|
|
7
13
|
/**
|
|
8
14
|
* Middleware that creates {@link OutputScope} spans for outgoing messages.
|
|
9
15
|
* Links to a parent span when {@link A365_PARENT_SPAN_KEY} is set in turnState.
|
|
@@ -13,6 +19,12 @@ export declare const A365_PARENT_SPAN_KEY = "A365ParentSpanId";
|
|
|
13
19
|
*/
|
|
14
20
|
export declare class OutputLoggingMiddleware implements Middleware {
|
|
15
21
|
onTurn(context: TurnContext, next: () => Promise<void>): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the auth token for agent identity resolution.
|
|
24
|
+
* When per-request export is enabled, reads from turnState.
|
|
25
|
+
* Otherwise, reads from the cached observability token.
|
|
26
|
+
*/
|
|
27
|
+
private resolveAuthToken;
|
|
16
28
|
/**
|
|
17
29
|
* Creates a send handler that wraps outgoing messages in OutputScope spans.
|
|
18
30
|
* Reads parent span ref lazily so the agent handler can set it during `next()`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputLoggingMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAyB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"OutputLoggingMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAyB,MAAM,2BAA2B,CAAC;AAa3F;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IAElD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5E;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CA8C3B"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { OutputScope, logger, } from '@microsoft/agents-a365-observability';
|
|
3
|
+
import { OutputScope, logger, isPerRequestExportEnabled, } from '@microsoft/agents-a365-observability';
|
|
4
4
|
import { ScopeUtils } from '../utils/ScopeUtils';
|
|
5
|
+
import { AgenticTokenCacheInstance } from '../caching/AgenticTokenCache';
|
|
5
6
|
/**
|
|
6
7
|
* TurnState key for the parent span reference.
|
|
7
8
|
* Set this in `turnState` to link OutputScope spans as children of an InvokeAgentScope.
|
|
8
9
|
*/
|
|
9
10
|
export const A365_PARENT_SPAN_KEY = 'A365ParentSpanId';
|
|
11
|
+
/**
|
|
12
|
+
* TurnState key for the auth token.
|
|
13
|
+
* Set this in `turnState` so middleware can resolve the agent blueprint ID
|
|
14
|
+
* from token claims (used for embodied/agentic requests).
|
|
15
|
+
*/
|
|
16
|
+
export const A365_AUTH_TOKEN_KEY = 'A365AuthToken';
|
|
10
17
|
/**
|
|
11
18
|
* Middleware that creates {@link OutputScope} spans for outgoing messages.
|
|
12
19
|
* Links to a parent span when {@link A365_PARENT_SPAN_KEY} is set in turnState.
|
|
@@ -16,7 +23,8 @@ export const A365_PARENT_SPAN_KEY = 'A365ParentSpanId';
|
|
|
16
23
|
*/
|
|
17
24
|
export class OutputLoggingMiddleware {
|
|
18
25
|
async onTurn(context, next) {
|
|
19
|
-
const
|
|
26
|
+
const authToken = this.resolveAuthToken(context);
|
|
27
|
+
const agentDetails = ScopeUtils.deriveAgentDetails(context, authToken);
|
|
20
28
|
const tenantDetails = ScopeUtils.deriveTenantDetails(context);
|
|
21
29
|
if (!agentDetails || !tenantDetails) {
|
|
22
30
|
await next();
|
|
@@ -28,6 +36,22 @@ export class OutputLoggingMiddleware {
|
|
|
28
36
|
context.onSendActivities(this._createSendHandler(context, agentDetails, tenantDetails, callerDetails, conversationId, sourceMetadata));
|
|
29
37
|
await next();
|
|
30
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve the auth token for agent identity resolution.
|
|
41
|
+
* When per-request export is enabled, reads from turnState.
|
|
42
|
+
* Otherwise, reads from the cached observability token.
|
|
43
|
+
*/
|
|
44
|
+
resolveAuthToken(context) {
|
|
45
|
+
if (isPerRequestExportEnabled()) {
|
|
46
|
+
return context.turnState.get(A365_AUTH_TOKEN_KEY) ?? '';
|
|
47
|
+
}
|
|
48
|
+
const agentId = context.activity?.getAgenticInstanceId?.() ?? '';
|
|
49
|
+
const tenantId = context.activity?.getAgenticTenantId?.() ?? '';
|
|
50
|
+
if (agentId && tenantId) {
|
|
51
|
+
return AgenticTokenCacheInstance.getObservabilityToken(agentId, tenantId) ?? '';
|
|
52
|
+
}
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
31
55
|
/**
|
|
32
56
|
* Creates a send handler that wraps outgoing messages in OutputScope spans.
|
|
33
57
|
* Reads parent span ref lazily so the agent handler can set it during `next()`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputLoggingMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,WAAW,EAKX,MAAM,
|
|
1
|
+
{"version":3,"file":"OutputLoggingMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/OutputLoggingMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,13 @@ export declare class ScopeUtils {
|
|
|
15
15
|
static deriveTenantDetails(turnContext: TurnContext): TenantDetails | undefined;
|
|
16
16
|
/**
|
|
17
17
|
* Derive target agent details from the activity recipient.
|
|
18
|
+
* Uses {@link resolveEmbodiedAgentIds} to resolve the agent ID and blueprint ID, which are only
|
|
19
|
+
* set for embodied (agentic) agents — see that function for the rationale.
|
|
18
20
|
* @param turnContext Activity context
|
|
21
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
19
22
|
* @returns Agent details built from recipient properties; otherwise undefined.
|
|
20
23
|
*/
|
|
21
|
-
static deriveAgentDetails(turnContext: TurnContext): AgentDetails | undefined;
|
|
24
|
+
static deriveAgentDetails(turnContext: TurnContext, authToken: string): AgentDetails | undefined;
|
|
22
25
|
/**
|
|
23
26
|
* Derive caller agent details from the activity from.
|
|
24
27
|
* @param turnContext Activity context
|
|
@@ -52,11 +55,12 @@ export declare class ScopeUtils {
|
|
|
52
55
|
* Also records input messages from the context if present.
|
|
53
56
|
* @param details The inference call details (model, provider, tokens, etc.).
|
|
54
57
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
58
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
55
59
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
56
60
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
57
61
|
* @returns A started `InferenceScope` enriched with context-derived parameters.
|
|
58
62
|
*/
|
|
59
|
-
static populateInferenceScopeFromTurnContext(details: InferenceDetails, turnContext: TurnContext, startTime?: TimeInput, endTime?: TimeInput): InferenceScope;
|
|
63
|
+
static populateInferenceScopeFromTurnContext(details: InferenceDetails, turnContext: TurnContext, authToken: string, startTime?: TimeInput, endTime?: TimeInput): InferenceScope;
|
|
60
64
|
/**
|
|
61
65
|
* Create an `InvokeAgentScope` using `details` and values derived from the provided `TurnContext`.
|
|
62
66
|
* Populates `conversationId` and `request.sourceMetadata` (channel name/link) in `details` from the `TurnContext`, overriding any existing values.
|
|
@@ -64,28 +68,32 @@ export declare class ScopeUtils {
|
|
|
64
68
|
* Also sets execution type and input messages from the context if present.
|
|
65
69
|
* @param details The invoke-agent call details to be augmented and used for the scope.
|
|
66
70
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
71
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
67
72
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
68
73
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
69
74
|
* @returns A started `InvokeAgentScope` enriched with context-derived parameters.
|
|
70
75
|
*/
|
|
71
|
-
static populateInvokeAgentScopeFromTurnContext(details: InvokeAgentDetails, turnContext: TurnContext, startTime?: TimeInput, endTime?: TimeInput): InvokeAgentScope;
|
|
76
|
+
static populateInvokeAgentScopeFromTurnContext(details: InvokeAgentDetails, turnContext: TurnContext, authToken: string, startTime?: TimeInput, endTime?: TimeInput): InvokeAgentScope;
|
|
72
77
|
/**
|
|
73
78
|
* Build InvokeAgentDetails by merging provided details with agent info, conversation id and source metadata from the TurnContext.
|
|
74
79
|
* @param details Base invoke-agent details to augment
|
|
75
80
|
* @param turnContext Activity context
|
|
81
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
76
82
|
* @returns New InvokeAgentDetails suitable for starting an InvokeAgentScope.
|
|
77
83
|
*/
|
|
78
|
-
static buildInvokeAgentDetails(details: InvokeAgentDetails, turnContext: TurnContext): InvokeAgentDetails;
|
|
84
|
+
static buildInvokeAgentDetails(details: InvokeAgentDetails, turnContext: TurnContext, authToken: string): InvokeAgentDetails;
|
|
85
|
+
private static buildInvokeAgentDetailsCore;
|
|
79
86
|
/**
|
|
80
87
|
* Create an `ExecuteToolScope` using `details` and values derived from the provided `TurnContext`.
|
|
81
88
|
* Derives `agentDetails`, `tenantDetails`, `conversationId`, and `sourceMetadata` (channel name/link) from context.
|
|
82
89
|
* @param details The tool call details (name, type, args, call id, etc.).
|
|
83
90
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
91
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
84
92
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime). Useful when recording a
|
|
85
93
|
* tool call after execution has already completed.
|
|
86
94
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
87
95
|
* @returns A started `ExecuteToolScope` enriched with context-derived parameters.
|
|
88
96
|
*/
|
|
89
|
-
static populateExecuteToolScopeFromTurnContext(details: ToolCallDetails, turnContext: TurnContext, startTime?: TimeInput, endTime?: TimeInput): ExecuteToolScope;
|
|
97
|
+
static populateExecuteToolScopeFromTurnContext(details: ToolCallDetails, turnContext: TurnContext, authToken: string, startTime?: TimeInput, endTime?: TimeInput): ExecuteToolScope;
|
|
90
98
|
}
|
|
91
99
|
//# sourceMappingURL=ScopeUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"ScopeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAG9C;;;GAGG;AACH,qBAAa,UAAU;IAGrB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;;;OAIG;WACW,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS;IAKtF;;;;;;;OAOG;WACW,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAgBvG;;;;OAIG;WACW,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS;IAenF;;;;OAIG;WACW,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS;IAWtF;;;;OAIG;WACW,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAIhF;;;;OAIG;WACW,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAO3G;;;;;;;;;;OAUG;IACH,MAAM,CAAC,qCAAqC,CAC1C,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,cAAc;IAkBjB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,gBAAgB;IAenB;;;;;;OAMG;WACW,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAInI,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAqB1C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,gBAAgB;CAepB"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
// ------------------------------------------------------------------------------
|
|
5
5
|
import { InvokeAgentScope, InferenceScope, ExecuteToolScope, } from '@microsoft/agents-a365-observability';
|
|
6
|
+
import { resolveEmbodiedAgentIds } from './TurnContextUtils';
|
|
6
7
|
/**
|
|
7
8
|
* Unified utilities to populate scope tags from a TurnContext.
|
|
8
9
|
* Provides common tag population and scope-specific helpers.
|
|
@@ -23,26 +24,30 @@ export class ScopeUtils {
|
|
|
23
24
|
* @returns Tenant details if a recipient tenant id is present; otherwise undefined.
|
|
24
25
|
*/
|
|
25
26
|
static deriveTenantDetails(turnContext) {
|
|
26
|
-
const tenantId = turnContext?.activity?.
|
|
27
|
+
const tenantId = turnContext?.activity?.getAgenticTenantId?.();
|
|
27
28
|
return tenantId ? { tenantId } : undefined;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
31
|
* Derive target agent details from the activity recipient.
|
|
32
|
+
* Uses {@link resolveEmbodiedAgentIds} to resolve the agent ID and blueprint ID, which are only
|
|
33
|
+
* set for embodied (agentic) agents — see that function for the rationale.
|
|
31
34
|
* @param turnContext Activity context
|
|
35
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
32
36
|
* @returns Agent details built from recipient properties; otherwise undefined.
|
|
33
37
|
*/
|
|
34
|
-
static deriveAgentDetails(turnContext) {
|
|
38
|
+
static deriveAgentDetails(turnContext, authToken) {
|
|
35
39
|
const recipient = turnContext?.activity?.recipient;
|
|
36
40
|
if (!recipient)
|
|
37
41
|
return undefined;
|
|
42
|
+
const { agentId, agentBlueprintId } = resolveEmbodiedAgentIds(turnContext, authToken);
|
|
38
43
|
return {
|
|
39
|
-
agentId
|
|
44
|
+
agentId,
|
|
40
45
|
agentName: recipient.name,
|
|
41
46
|
agentAUID: recipient.aadObjectId,
|
|
42
|
-
agentBlueprintId
|
|
43
|
-
agentUPN:
|
|
47
|
+
agentBlueprintId,
|
|
48
|
+
agentUPN: turnContext?.activity?.getAgenticUser?.(),
|
|
44
49
|
agentDescription: recipient.role,
|
|
45
|
-
tenantId:
|
|
50
|
+
tenantId: turnContext?.activity?.getAgenticTenantId?.()
|
|
46
51
|
};
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
@@ -105,12 +110,13 @@ export class ScopeUtils {
|
|
|
105
110
|
* Also records input messages from the context if present.
|
|
106
111
|
* @param details The inference call details (model, provider, tokens, etc.).
|
|
107
112
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
113
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
108
114
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
109
115
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
110
116
|
* @returns A started `InferenceScope` enriched with context-derived parameters.
|
|
111
117
|
*/
|
|
112
|
-
static populateInferenceScopeFromTurnContext(details, turnContext, startTime, endTime) {
|
|
113
|
-
const agent = ScopeUtils.deriveAgentDetails(turnContext);
|
|
118
|
+
static populateInferenceScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
|
|
119
|
+
const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
|
|
114
120
|
const tenant = ScopeUtils.deriveTenantDetails(turnContext);
|
|
115
121
|
const conversationId = ScopeUtils.deriveConversationId(turnContext);
|
|
116
122
|
const sourceMetadata = ScopeUtils.deriveSourceMetadataObject(turnContext);
|
|
@@ -131,15 +137,16 @@ export class ScopeUtils {
|
|
|
131
137
|
* Also sets execution type and input messages from the context if present.
|
|
132
138
|
* @param details The invoke-agent call details to be augmented and used for the scope.
|
|
133
139
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
140
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
134
141
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime).
|
|
135
142
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
136
143
|
* @returns A started `InvokeAgentScope` enriched with context-derived parameters.
|
|
137
144
|
*/
|
|
138
|
-
static populateInvokeAgentScopeFromTurnContext(details, turnContext, startTime, endTime) {
|
|
145
|
+
static populateInvokeAgentScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
|
|
139
146
|
const tenant = ScopeUtils.deriveTenantDetails(turnContext);
|
|
140
147
|
const callerAgent = ScopeUtils.deriveCallerAgent(turnContext);
|
|
141
148
|
const caller = ScopeUtils.deriveCallerDetails(turnContext);
|
|
142
|
-
const invokeAgentDetails = ScopeUtils.
|
|
149
|
+
const invokeAgentDetails = ScopeUtils.buildInvokeAgentDetailsCore(details, turnContext, authToken);
|
|
143
150
|
if (!tenant) {
|
|
144
151
|
throw new Error('populateInvokeAgentScopeFromTurnContext: Missing tenant details on TurnContext (recipient)');
|
|
145
152
|
}
|
|
@@ -151,10 +158,14 @@ export class ScopeUtils {
|
|
|
151
158
|
* Build InvokeAgentDetails by merging provided details with agent info, conversation id and source metadata from the TurnContext.
|
|
152
159
|
* @param details Base invoke-agent details to augment
|
|
153
160
|
* @param turnContext Activity context
|
|
161
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
154
162
|
* @returns New InvokeAgentDetails suitable for starting an InvokeAgentScope.
|
|
155
163
|
*/
|
|
156
|
-
static buildInvokeAgentDetails(details, turnContext) {
|
|
157
|
-
|
|
164
|
+
static buildInvokeAgentDetails(details, turnContext, authToken) {
|
|
165
|
+
return ScopeUtils.buildInvokeAgentDetailsCore(details, turnContext, authToken);
|
|
166
|
+
}
|
|
167
|
+
static buildInvokeAgentDetailsCore(details, turnContext, authToken) {
|
|
168
|
+
const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
|
|
158
169
|
const srcMetaFromContext = ScopeUtils.deriveSourceMetadataObject(turnContext);
|
|
159
170
|
const baseRequest = details.request ?? {};
|
|
160
171
|
const baseSource = baseRequest.sourceMetadata ?? {};
|
|
@@ -178,13 +189,14 @@ export class ScopeUtils {
|
|
|
178
189
|
* Derives `agentDetails`, `tenantDetails`, `conversationId`, and `sourceMetadata` (channel name/link) from context.
|
|
179
190
|
* @param details The tool call details (name, type, args, call id, etc.).
|
|
180
191
|
* @param turnContext The current activity context to derive scope parameters from.
|
|
192
|
+
* @param authToken Auth token for resolving agent identity from token claims.
|
|
181
193
|
* @param startTime Optional explicit start time (ms epoch, Date, or HrTime). Useful when recording a
|
|
182
194
|
* tool call after execution has already completed.
|
|
183
195
|
* @param endTime Optional explicit end time (ms epoch, Date, or HrTime).
|
|
184
196
|
* @returns A started `ExecuteToolScope` enriched with context-derived parameters.
|
|
185
197
|
*/
|
|
186
|
-
static populateExecuteToolScopeFromTurnContext(details, turnContext, startTime, endTime) {
|
|
187
|
-
const agent = ScopeUtils.deriveAgentDetails(turnContext);
|
|
198
|
+
static populateExecuteToolScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
|
|
199
|
+
const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
|
|
188
200
|
const tenant = ScopeUtils.deriveTenantDetails(turnContext);
|
|
189
201
|
const conversationId = ScopeUtils.deriveConversationId(turnContext);
|
|
190
202
|
const sourceMetadata = ScopeUtils.deriveSourceMetadataObject(turnContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeUtils.js","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;AAIjF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAOjB,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"ScopeUtils.js","sourceRoot":"","sources":["../../../src/utils/ScopeUtils.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;AAIjF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAOjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;GAGG;AACH,MAAM,OAAO,UAAU;IAGb,MAAM,CAAC,mBAAmB,CAAC,KAAwC,EAAE,WAAwB;QACnG,IAAI,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAChC,KAAK,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAyB;IACzB,0BAA0B;IAC1B,yBAAyB;IACzB;;;;OAIG;IACI,MAAM,CAAC,mBAAmB,CAAC,WAAwB;QACxD,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,kBAAkB,CAAC,WAAwB,EAAE,SAAiB;QAC1E,MAAM,SAAS,GAAG,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;QACnD,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,uBAAuB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtF,OAAO;YACL,OAAO;YACP,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,SAAS,EAAE,SAAS,CAAC,WAAW;YAChC,gBAAgB;YAChB,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;YACnD,gBAAgB,EAAE,SAAS,CAAC,IAAI;YAChC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE;SACxC,CAAC;IACpB,CAAC;IAGD;;;;OAIG;IACI,MAAM,CAAC,iBAAiB,CAAC,WAAwB;QACtD,MAAM,IAAI,GAAG,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,qBAAqB;YAC5C,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,gBAAgB,EAAE,IAAI,CAAC,IAAI;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,aAAa;SACb,CAAC;IACpB,CAAC;IAGD;;;;OAIG;IACI,MAAM,CAAC,mBAAmB,CAAC,WAAwB;QACxD,MAAM,IAAI,GAAG,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,SAAS,EAAE,IAAI,CAAC,aAAa;YAC7B,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACP,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,oBAAoB,CAAC,WAAwB;QACzD,OAAO,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,0BAA0B,CAAC,WAAwB;QAC/D,OAAO;YACL,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS;YACtC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAyC;SAC9E,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,qCAAqC,CAC1C,OAAyB,EACzB,WAAwB,EACxB,SAAiB,EACjB,SAAqB,EACrB,OAAmB;QAEnB,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,UAAU,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAE1E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1H,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAA2B,EAC3B,WAAwB,EACxB,SAAiB,EACjB,SAAqB,EACrB,OAAmB;QAEnB,MAAM,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,kBAAkB,GAAG,UAAU,CAAC,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAEnG,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAChH,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrH,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,uBAAuB,CAAC,OAA2B,EAAE,WAAwB,EAAE,SAAiB;QAC5G,OAAO,UAAU,CAAC,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACjF,CAAC;IAEO,MAAM,CAAC,2BAA2B,CAAC,OAA2B,EAAE,WAAwB,EAAE,SAAiB;QACjH,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,kBAAkB,GAAG,UAAU,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC;QACpD,MAAM,oBAAoB,GAAG;YAC3B,GAAG,UAAU;YACb,GAAG,CAAC,kBAAkB,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,kBAAkB,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzG,CAAC;QACF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,KAAK;YACR,cAAc,EAAE,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC;YAC5D,OAAO,EAAE;gBACP,GAAG,WAAW;gBACd,cAAc,EAAE,oBAAoB;aACrC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAwB,EACxB,WAAwB,EACxB,SAAiB,EACjB,SAAqB,EACrB,OAAmB;QAEnB,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,UAAU,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5H,OAAO,KAAK,CAAC;IACf,CAAC;CAEF"}
|
|
@@ -11,14 +11,28 @@ export declare function getCallerBaggagePairs(turnContext: TurnContext): Array<[
|
|
|
11
11
|
* @returns Array of [key, value] for execution type
|
|
12
12
|
*/
|
|
13
13
|
export declare function getExecutionTypePair(turnContext: TurnContext): Array<[string, string]>;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves the agent instance ID and blueprint ID for embodied (agentic) agents only.
|
|
16
|
+
* For the non-embodied agent case, we cannot reliably determine whether the token contains an app ID,
|
|
17
|
+
* or whether the app ID present in the token claims actually corresponds to this agent. Therefore,
|
|
18
|
+
* we only set agentId and agentBlueprintId for embodied (agentic) agents.
|
|
19
|
+
* @param turnContext Activity context
|
|
20
|
+
* @param authToken Auth token for resolving blueprint ID from token claims.
|
|
21
|
+
* @returns Object with agentId and agentBlueprintId, both undefined for non-embodied agents.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveEmbodiedAgentIds(turnContext: TurnContext, authToken: string): {
|
|
24
|
+
agentId: string | undefined;
|
|
25
|
+
agentBlueprintId: string | undefined;
|
|
26
|
+
};
|
|
14
27
|
/**
|
|
15
28
|
* Extracts agent/recipient-related OpenTelemetry baggage pairs from the TurnContext.
|
|
16
29
|
* @param turnContext The current TurnContext (activity context)
|
|
30
|
+
* @param authToken Optional auth token for resolving agent blueprint ID from token claims.
|
|
17
31
|
* @returns Array of [key, value] pairs for agent identity and description
|
|
18
32
|
*/
|
|
19
|
-
export declare function getTargetAgentBaggagePairs(turnContext: TurnContext): Array<[string, string]>;
|
|
33
|
+
export declare function getTargetAgentBaggagePairs(turnContext: TurnContext, authToken?: string): Array<[string, string]>;
|
|
20
34
|
/**
|
|
21
|
-
* Extracts the tenant ID baggage key-value pair
|
|
35
|
+
* Extracts the tenant ID baggage key-value pair using the Activity's getAgenticTenantId() helper.
|
|
22
36
|
* @param turnContext The current TurnContext (activity context)
|
|
23
37
|
* @returns Array of [key, value] for tenant ID
|
|
24
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnContextUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"TurnContextUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAexD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAevF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkBtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAQ1J;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgBhH;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAS/F;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWnG"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// ------------------------------------------------------------------------------
|
|
5
5
|
import { ExecutionType, OpenTelemetryConstants } from '@microsoft/agents-a365-observability';
|
|
6
6
|
import { RoleTypes } from '@microsoft/agents-activity';
|
|
7
|
+
import { Utility as RuntimeUtility } from '@microsoft/agents-a365-runtime';
|
|
7
8
|
/**
|
|
8
9
|
* TurnContext utility methods.
|
|
9
10
|
*/
|
|
@@ -55,17 +56,36 @@ export function getExecutionTypePair(turnContext) {
|
|
|
55
56
|
}
|
|
56
57
|
return [[OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY, executionType]];
|
|
57
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolves the agent instance ID and blueprint ID for embodied (agentic) agents only.
|
|
61
|
+
* For the non-embodied agent case, we cannot reliably determine whether the token contains an app ID,
|
|
62
|
+
* or whether the app ID present in the token claims actually corresponds to this agent. Therefore,
|
|
63
|
+
* we only set agentId and agentBlueprintId for embodied (agentic) agents.
|
|
64
|
+
* @param turnContext Activity context
|
|
65
|
+
* @param authToken Auth token for resolving blueprint ID from token claims.
|
|
66
|
+
* @returns Object with agentId and agentBlueprintId, both undefined for non-embodied agents.
|
|
67
|
+
*/
|
|
68
|
+
export function resolveEmbodiedAgentIds(turnContext, authToken) {
|
|
69
|
+
const isAgentic = turnContext?.activity?.isAgenticRequest?.();
|
|
70
|
+
const rawAgentId = isAgentic ? turnContext.activity.getAgenticInstanceId?.() : undefined;
|
|
71
|
+
const rawBlueprintId = isAgentic ? RuntimeUtility.getAgentIdFromToken(authToken) : undefined;
|
|
72
|
+
return {
|
|
73
|
+
agentId: rawAgentId || undefined,
|
|
74
|
+
agentBlueprintId: rawBlueprintId || undefined,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
58
77
|
/**
|
|
59
78
|
* Extracts agent/recipient-related OpenTelemetry baggage pairs from the TurnContext.
|
|
60
79
|
* @param turnContext The current TurnContext (activity context)
|
|
80
|
+
* @param authToken Optional auth token for resolving agent blueprint ID from token claims.
|
|
61
81
|
* @returns Array of [key, value] pairs for agent identity and description
|
|
62
82
|
*/
|
|
63
|
-
export function getTargetAgentBaggagePairs(turnContext) {
|
|
83
|
+
export function getTargetAgentBaggagePairs(turnContext, authToken) {
|
|
64
84
|
if (!turnContext || !turnContext.activity?.recipient) {
|
|
65
85
|
return [];
|
|
66
86
|
}
|
|
67
87
|
const recipient = turnContext.activity.recipient;
|
|
68
|
-
const agentId =
|
|
88
|
+
const { agentId } = authToken ? resolveEmbodiedAgentIds(turnContext, authToken) : { agentId: turnContext.activity?.isAgenticRequest?.() ? turnContext.activity.getAgenticInstanceId?.() : undefined };
|
|
69
89
|
const agentName = recipient.name;
|
|
70
90
|
const aadObjectId = recipient.aadObjectId;
|
|
71
91
|
const agentDescription = recipient.role;
|
|
@@ -78,27 +98,12 @@ export function getTargetAgentBaggagePairs(turnContext) {
|
|
|
78
98
|
return normalizePairs(pairs);
|
|
79
99
|
}
|
|
80
100
|
/**
|
|
81
|
-
* Extracts the tenant ID baggage key-value pair
|
|
101
|
+
* Extracts the tenant ID baggage key-value pair using the Activity's getAgenticTenantId() helper.
|
|
82
102
|
* @param turnContext The current TurnContext (activity context)
|
|
83
103
|
* @returns Array of [key, value] for tenant ID
|
|
84
104
|
*/
|
|
85
105
|
export function getTenantIdPair(turnContext) {
|
|
86
|
-
|
|
87
|
-
// If not found, try to extract from channelData. Accepts both object and JSON string.
|
|
88
|
-
if (!tenantId && turnContext.activity?.channelData) {
|
|
89
|
-
try {
|
|
90
|
-
let channelData = turnContext.activity.channelData;
|
|
91
|
-
if (typeof channelData === 'string') {
|
|
92
|
-
channelData = JSON.parse(channelData);
|
|
93
|
-
}
|
|
94
|
-
if (typeof channelData === 'object' && channelData !== null) {
|
|
95
|
-
tenantId = channelData?.tenant?.id;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (_err) {
|
|
99
|
-
// ignore JSON parse errors
|
|
100
|
-
}
|
|
101
|
-
}
|
|
106
|
+
const tenantId = turnContext.activity?.getAgenticTenantId?.();
|
|
102
107
|
return tenantId ? [[OpenTelemetryConstants.TENANT_ID_KEY, tenantId]] : [];
|
|
103
108
|
}
|
|
104
109
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnContextUtils.js","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;AAGjF,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"TurnContextUtils.js","sourceRoot":"","sources":["../../../src/utils/TurnContextUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/agents-a365-observability-hosting",
|
|
3
|
-
"version": "0.1.0-preview.
|
|
3
|
+
"version": "0.1.0-preview.116",
|
|
4
4
|
"description": "Hosting & Observability utilities for Agent365 (Node.js): token caching, baggage builder, hosting registration.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent365",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"CHANGELOG.md"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@microsoft/agents-a365-observability": "0.1.0-preview.
|
|
33
|
-
"@microsoft/agents-a365-runtime": "0.1.0-preview.
|
|
34
|
-
"@microsoft/agents-hosting": "^1.1
|
|
32
|
+
"@microsoft/agents-a365-observability": "0.1.0-preview.116",
|
|
33
|
+
"@microsoft/agents-a365-runtime": "0.1.0-preview.116",
|
|
34
|
+
"@microsoft/agents-hosting": "^1.3.1",
|
|
35
35
|
"@opentelemetry/api": "^1.9.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|