@microsoft/agents-a365-observability-hosting 0.1.0-preview.103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/cjs/caching/AgenticTokenCache.d.ts +55 -0
  3. package/dist/cjs/caching/AgenticTokenCache.d.ts.map +1 -0
  4. package/dist/cjs/caching/AgenticTokenCache.js +214 -0
  5. package/dist/cjs/caching/AgenticTokenCache.js.map +1 -0
  6. package/dist/cjs/index.d.ts +5 -0
  7. package/dist/cjs/index.d.ts.map +1 -0
  8. package/dist/cjs/index.js +28 -0
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/utils/BaggageBuilderUtils.d.ts +57 -0
  11. package/dist/cjs/utils/BaggageBuilderUtils.d.ts.map +1 -0
  12. package/dist/cjs/utils/BaggageBuilderUtils.js +93 -0
  13. package/dist/cjs/utils/BaggageBuilderUtils.js.map +1 -0
  14. package/dist/cjs/utils/ScopeUtils.d.ts +83 -0
  15. package/dist/cjs/utils/ScopeUtils.d.ts.map +1 -0
  16. package/dist/cjs/utils/ScopeUtils.js +198 -0
  17. package/dist/cjs/utils/ScopeUtils.js.map +1 -0
  18. package/dist/cjs/utils/TurnContextUtils.d.ts +38 -0
  19. package/dist/cjs/utils/TurnContextUtils.d.ts.map +1 -0
  20. package/dist/cjs/utils/TurnContextUtils.js +144 -0
  21. package/dist/cjs/utils/TurnContextUtils.js.map +1 -0
  22. package/dist/esm/caching/AgenticTokenCache.d.ts +55 -0
  23. package/dist/esm/caching/AgenticTokenCache.d.ts.map +1 -0
  24. package/dist/esm/caching/AgenticTokenCache.js +210 -0
  25. package/dist/esm/caching/AgenticTokenCache.js.map +1 -0
  26. package/dist/esm/index.d.ts +5 -0
  27. package/dist/esm/index.d.ts.map +1 -0
  28. package/dist/esm/index.js +9 -0
  29. package/dist/esm/index.js.map +1 -0
  30. package/dist/esm/utils/BaggageBuilderUtils.d.ts +57 -0
  31. package/dist/esm/utils/BaggageBuilderUtils.d.ts.map +1 -0
  32. package/dist/esm/utils/BaggageBuilderUtils.js +89 -0
  33. package/dist/esm/utils/BaggageBuilderUtils.js.map +1 -0
  34. package/dist/esm/utils/ScopeUtils.d.ts +83 -0
  35. package/dist/esm/utils/ScopeUtils.d.ts.map +1 -0
  36. package/dist/esm/utils/ScopeUtils.js +194 -0
  37. package/dist/esm/utils/ScopeUtils.js.map +1 -0
  38. package/dist/esm/utils/TurnContextUtils.d.ts +38 -0
  39. package/dist/esm/utils/TurnContextUtils.d.ts.map +1 -0
  40. package/dist/esm/utils/TurnContextUtils.js +136 -0
  41. package/dist/esm/utils/TurnContextUtils.js.map +1 -0
  42. package/package.json +65 -0
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Microsoft
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,55 @@
1
+ import { TurnContext, Authorization } from '@microsoft/agents-hosting';
2
+ import { ObservabilityConfiguration } from '@microsoft/agents-a365-observability';
3
+ import { IConfigurationProvider } from '@microsoft/agents-a365-runtime';
4
+ /**
5
+ * Cache for agentic authentication tokens used by observability services.
6
+ *
7
+ * For custom configuration, create a new instance with your own configuration provider:
8
+ * ```typescript
9
+ * const customCache = new AgenticTokenCache(myConfigProvider);
10
+ * ```
11
+ *
12
+ * For default configuration using environment variables, use the exported
13
+ * `AgenticTokenCacheInstance` singleton.
14
+ */
15
+ export declare class AgenticTokenCache {
16
+ private readonly _map;
17
+ private readonly _defaultRefreshSkewMs;
18
+ private readonly _defaultMaxTokenAgeMs;
19
+ private readonly _keyLocks;
20
+ private readonly _configProvider;
21
+ /**
22
+ * Construct an AgenticTokenCache.
23
+ * @param configProvider Optional configuration provider. Defaults to defaultObservabilityConfigurationProvider if not specified.
24
+ */
25
+ constructor(configProvider?: IConfigurationProvider<ObservabilityConfiguration>);
26
+ static makeKey(agentId: string, tenantId: string): string;
27
+ getObservabilityToken(agentId: string, tenantId: string): string | null;
28
+ RefreshObservabilityToken(agentId: string, tenantId: string, turnContext: TurnContext, authorization: Authorization, scopes: string[]): Promise<void>;
29
+ invalidateToken(agentId: string, tenantId: string): void;
30
+ invalidateAll(): void;
31
+ private decodeExp;
32
+ private isExpired;
33
+ private isRetriableError;
34
+ private sleep;
35
+ private withKeyLock;
36
+ }
37
+ /**
38
+ * Default singleton instance of AgenticTokenCache using the default configuration provider.
39
+ *
40
+ * This instance uses `defaultObservabilityConfigurationProvider` which reads from
41
+ * environment variables. It is suitable for:
42
+ * - Single-tenant deployments
43
+ * - Multi-tenant deployments using dynamic override functions in the configuration
44
+ *
45
+ * **For custom configuration:** Create a new `AgenticTokenCache` instance with your
46
+ * own `IConfigurationProvider<ObservabilityConfiguration>`:
47
+ * ```typescript
48
+ * import { AgenticTokenCache } from '@microsoft/agents-a365-observability-hosting';
49
+ *
50
+ * const customCache = new AgenticTokenCache(myCustomConfigProvider);
51
+ * ```
52
+ */
53
+ export declare const AgenticTokenCacheInstance: AgenticTokenCache;
54
+ export default AgenticTokenCacheInstance;
55
+ //# sourceMappingURL=AgenticTokenCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgenticTokenCache.d.ts","sourceRoot":"","sources":["../../../src/caching/AgenticTokenCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAuB,0BAA0B,EAA6C,MAAM,sCAAsC,CAAC;AAClJ,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AASxE;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;IAErF;;;OAGG;gBACS,cAAc,CAAC,EAAE,sBAAsB,CAAC,0BAA0B,CAAC;WAIjE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIzD,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkBjE,yBAAyB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC;IAiET,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQxD,aAAa,IAAI,IAAI;IAI5B,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,KAAK;YAIC,WAAW;CAiB5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,mBAA0B,CAAC;AACjE,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation.
4
+ // Licensed under the MIT License.
5
+ // ------------------------------------------------------------------------------
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgenticTokenCacheInstance = exports.AgenticTokenCache = void 0;
8
+ const agents_a365_observability_1 = require("@microsoft/agents-a365-observability");
9
+ /**
10
+ * Cache for agentic authentication tokens used by observability services.
11
+ *
12
+ * For custom configuration, create a new instance with your own configuration provider:
13
+ * ```typescript
14
+ * const customCache = new AgenticTokenCache(myConfigProvider);
15
+ * ```
16
+ *
17
+ * For default configuration using environment variables, use the exported
18
+ * `AgenticTokenCacheInstance` singleton.
19
+ */
20
+ class AgenticTokenCache {
21
+ /**
22
+ * Construct an AgenticTokenCache.
23
+ * @param configProvider Optional configuration provider. Defaults to defaultObservabilityConfigurationProvider if not specified.
24
+ */
25
+ constructor(configProvider) {
26
+ this._map = new Map();
27
+ this._defaultRefreshSkewMs = 60000;
28
+ this._defaultMaxTokenAgeMs = 3600000;
29
+ this._keyLocks = new Map();
30
+ this._configProvider = configProvider ?? agents_a365_observability_1.defaultObservabilityConfigurationProvider;
31
+ }
32
+ static makeKey(agentId, tenantId) {
33
+ return `${agentId}:${tenantId}`;
34
+ }
35
+ getObservabilityToken(agentId, tenantId) {
36
+ const key = AgenticTokenCache.makeKey(agentId, tenantId);
37
+ const entry = this._map.get(key);
38
+ if (!entry) {
39
+ agents_a365_observability_1.logger.error(`[AgenticTokenCache] No cache entry for ${key}`);
40
+ return null;
41
+ }
42
+ if (!entry.token) {
43
+ agents_a365_observability_1.logger.error(`[AgenticTokenCache] No token cached for ${key}`);
44
+ return null;
45
+ }
46
+ if (this.isExpired(entry)) {
47
+ agents_a365_observability_1.logger.error(`[AgenticTokenCache] Token expired for ${key}`);
48
+ return null;
49
+ }
50
+ return entry.token;
51
+ }
52
+ async RefreshObservabilityToken(agentId, tenantId, turnContext, authorization, scopes) {
53
+ const key = AgenticTokenCache.makeKey(agentId, tenantId);
54
+ if (!authorization) {
55
+ throw new Error('[AgenticTokenCache] Authorization not set');
56
+ }
57
+ if (!turnContext) {
58
+ throw new Error('[AgenticTokenCache] TurnContext not set');
59
+ }
60
+ return this.withKeyLock(key, async () => {
61
+ let entry = this._map.get(key);
62
+ if (!entry) {
63
+ const effectiveScopes = (scopes && scopes.length > 0) ? scopes : [...this._configProvider.getConfiguration().observabilityAuthenticationScopes];
64
+ if (!Array.isArray(effectiveScopes) || effectiveScopes.length === 0) {
65
+ agents_a365_observability_1.logger.error('[AgenticTokenCache] No valid scopes');
66
+ return;
67
+ }
68
+ entry = { scopes: effectiveScopes };
69
+ this._map.set(key, entry);
70
+ }
71
+ if (!Array.isArray(entry.scopes) || entry.scopes.length === 0) {
72
+ agents_a365_observability_1.logger.error('[AgenticTokenCache] Entry has invalid scopes');
73
+ return;
74
+ }
75
+ if (entry.token && !this.isExpired(entry)) {
76
+ return;
77
+ }
78
+ const maxRetries = 2;
79
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
80
+ agents_a365_observability_1.logger.info(`[AgenticTokenCache] Exchanging token attempt ${attempt + 1}/${maxRetries + 1}`);
81
+ try {
82
+ const tokenResponse = await authorization.exchangeToken(turnContext, 'agentic', { scopes: entry.scopes });
83
+ if (!tokenResponse?.token) {
84
+ agents_a365_observability_1.logger.error('[AgenticTokenCache] Undefined token returned');
85
+ entry.token = undefined;
86
+ entry.expiresOn = undefined;
87
+ break;
88
+ }
89
+ entry.token = tokenResponse.token;
90
+ entry.acquiredOn = Date.now();
91
+ const oboExp = this.decodeExp(entry.token);
92
+ if (oboExp) {
93
+ entry.expiresOn = oboExp * 1000;
94
+ }
95
+ else {
96
+ agents_a365_observability_1.logger.warn('[AgenticTokenCache] No exp claim, fallback TTL');
97
+ }
98
+ agents_a365_observability_1.logger.info('[AgenticTokenCache] Token cached');
99
+ return;
100
+ }
101
+ catch (e) {
102
+ const retriable = this.isRetriableError(e);
103
+ if (retriable && attempt < maxRetries) {
104
+ agents_a365_observability_1.logger.warn(`[AgenticTokenCache] Retriable failure attempt ${attempt + 1}`, (0, agents_a365_observability_1.formatError)(e));
105
+ await this.sleep(200 * (attempt + 1));
106
+ continue;
107
+ }
108
+ agents_a365_observability_1.logger.error('[AgenticTokenCache] Non-retriable failure', (0, agents_a365_observability_1.formatError)(e));
109
+ entry.token = undefined;
110
+ entry.expiresOn = undefined;
111
+ break;
112
+ }
113
+ }
114
+ });
115
+ }
116
+ invalidateToken(agentId, tenantId) {
117
+ const entry = this._map.get(AgenticTokenCache.makeKey(agentId, tenantId));
118
+ if (entry) {
119
+ entry.token = undefined;
120
+ entry.expiresOn = undefined;
121
+ }
122
+ }
123
+ invalidateAll() {
124
+ this._map.clear();
125
+ }
126
+ decodeExp(jwt) {
127
+ try {
128
+ if (!jwt) {
129
+ return undefined;
130
+ }
131
+ const parts = jwt.split('.');
132
+ if (parts.length < 2) {
133
+ return undefined;
134
+ }
135
+ const payloadSegment = parts[1];
136
+ const padded = payloadSegment + '='.repeat((4 - (payloadSegment.length % 4)) % 4);
137
+ const json = JSON.parse(Buffer.from(padded, 'base64').toString('utf8'));
138
+ return typeof json.exp === 'number' ? json.exp : undefined;
139
+ }
140
+ catch {
141
+ return undefined;
142
+ }
143
+ }
144
+ isExpired(entry) {
145
+ const now = Date.now();
146
+ if (entry.expiresOn) {
147
+ return now >= (entry.expiresOn - this._defaultRefreshSkewMs);
148
+ }
149
+ if (entry.acquiredOn) {
150
+ return now >= (entry.acquiredOn + this._defaultMaxTokenAgeMs);
151
+ }
152
+ return true;
153
+ }
154
+ isRetriableError(err) {
155
+ const e = err;
156
+ if (!e) {
157
+ return false;
158
+ }
159
+ const msg = (e.message || '').toLowerCase();
160
+ if (msg.includes('timeout') || msg.includes('econnreset') || msg.includes('network')) {
161
+ return true;
162
+ }
163
+ if (typeof e.status === 'number') {
164
+ if (e.status === 408 || e.status === 429) {
165
+ return true;
166
+ }
167
+ if (e.status >= 500 && e.status < 600) {
168
+ return true;
169
+ }
170
+ }
171
+ return false;
172
+ }
173
+ sleep(ms) {
174
+ return new Promise(resolve => setTimeout(resolve, ms));
175
+ }
176
+ async withKeyLock(key, fn) {
177
+ const previous = this._keyLocks.get(key);
178
+ if (previous) {
179
+ try {
180
+ await previous;
181
+ }
182
+ catch (err) {
183
+ agents_a365_observability_1.logger.warn(`[AgenticTokenCache] previous promise for ${key} rejected:`, (0, agents_a365_observability_1.formatError)(err));
184
+ }
185
+ }
186
+ const currentPromise = fn().finally(() => {
187
+ if (this._keyLocks.get(key) === currentPromise) {
188
+ this._keyLocks.delete(key);
189
+ }
190
+ });
191
+ this._keyLocks.set(key, currentPromise);
192
+ return currentPromise;
193
+ }
194
+ }
195
+ exports.AgenticTokenCache = AgenticTokenCache;
196
+ /**
197
+ * Default singleton instance of AgenticTokenCache using the default configuration provider.
198
+ *
199
+ * This instance uses `defaultObservabilityConfigurationProvider` which reads from
200
+ * environment variables. It is suitable for:
201
+ * - Single-tenant deployments
202
+ * - Multi-tenant deployments using dynamic override functions in the configuration
203
+ *
204
+ * **For custom configuration:** Create a new `AgenticTokenCache` instance with your
205
+ * own `IConfigurationProvider<ObservabilityConfiguration>`:
206
+ * ```typescript
207
+ * import { AgenticTokenCache } from '@microsoft/agents-a365-observability-hosting';
208
+ *
209
+ * const customCache = new AgenticTokenCache(myCustomConfigProvider);
210
+ * ```
211
+ */
212
+ exports.AgenticTokenCacheInstance = new AgenticTokenCache();
213
+ exports.default = exports.AgenticTokenCacheInstance;
214
+ //# sourceMappingURL=AgenticTokenCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgenticTokenCache.js","sourceRoot":"","sources":["../../../src/caching/AgenticTokenCache.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;AAGjF,oFAAkJ;AAUlJ;;;;;;;;;;GAUG;AACH,MAAa,iBAAiB;IAO1B;;;OAGG;IACH,YAAY,cAAmE;QAV9D,SAAI,GAAG,IAAI,GAAG,EAAsB,CAAC;QACrC,0BAAqB,GAAG,KAAM,CAAC;QAC/B,0BAAqB,GAAG,OAAS,CAAC;QAClC,cAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QAQ7D,IAAI,CAAC,eAAe,GAAG,cAAc,IAAI,qEAAyC,CAAC;IACvF,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,OAAe,EAAE,QAAgB;QACnD,OAAO,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;IACpC,CAAC;IAEM,qBAAqB,CAAC,OAAe,EAAE,QAAgB;QAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,kCAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACf,kCAAM,CAAC,KAAK,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,kCAAM,CAAC,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAClC,OAAe,EACf,QAAgB,EAChB,WAAwB,EACxB,aAA4B,EAC5B,MAAgB;QAEhB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAO,GAAG,EAAE,KAAK,IAAI,EAAE;YAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,iCAAiC,CAAC,CAAC;gBAChJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClE,kCAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBACpD,OAAO;gBACX,CAAC;gBACD,KAAK,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5D,kCAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC7D,OAAO;YACX,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,OAAO;YACX,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,CAAC;YACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;gBACrD,kCAAM,CAAC,IAAI,CAAC,gDAAgD,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC7F,IAAI,CAAC;oBACD,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1G,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;wBACxB,kCAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;wBAC7D,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;wBACxB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC5B,MAAM;oBACV,CAAC;oBACD,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;oBAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3C,IAAI,MAAM,EAAE,CAAC;wBACT,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACJ,kCAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;oBAClE,CAAC;oBACD,kCAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;oBAChD,OAAO;gBACX,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,SAAS,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;wBACpC,kCAAM,CAAC,IAAI,CAAC,iDAAiD,OAAO,GAAG,CAAC,EAAE,EAAE,IAAA,uCAAW,EAAC,CAAC,CAAC,CAAC,CAAC;wBAC5F,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBACtC,SAAS;oBACb,CAAC;oBACD,kCAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAA,uCAAW,EAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;oBACxB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC5B,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,eAAe,CAAC,OAAe,EAAE,QAAgB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1E,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;YACxB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAChC,CAAC;IACL,CAAC;IAEM,aAAa;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEO,SAAS,CAAC,GAAW;QACzB,IAAI,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAsB,CAAC;YAC7F,OAAO,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,KAAiB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,GAAY;QACjC,MAAM,CAAC,GAAG,GAAuE,CAAC;QAClF,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnF,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,EAAU;QACpB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,WAAW,CAAI,GAAW,EAAE,EAAoB;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC;gBACD,MAAM,QAAQ,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,kCAAM,CAAC,IAAI,CAAC,4CAA4C,GAAG,YAAY,EAAE,IAAA,uCAAW,EAAC,GAAG,CAAC,CAAC,CAAC;YAC/F,CAAC;QACL,CAAC;QACD,MAAM,cAAc,GAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACjD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,EAAE,CAAC;gBAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACxC,OAAO,cAAc,CAAC;IAC1B,CAAC;CACJ;AA9LD,8CA8LC;AAED;;;;;;;;;;;;;;;GAeG;AACU,QAAA,yBAAyB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACjE,kBAAe,iCAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './utils/BaggageBuilderUtils';
2
+ export * from './utils/ScopeUtils';
3
+ export * from './utils/TurnContextUtils';
4
+ export { AgenticTokenCache, AgenticTokenCacheInstance } from './caching/AgenticTokenCache';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation.
4
+ // Licensed under the MIT License.
5
+ // ------------------------------------------------------------------------------
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.AgenticTokenCacheInstance = exports.AgenticTokenCache = void 0;
22
+ __exportStar(require("./utils/BaggageBuilderUtils"), exports);
23
+ __exportStar(require("./utils/ScopeUtils"), exports);
24
+ __exportStar(require("./utils/TurnContextUtils"), exports);
25
+ var AgenticTokenCache_1 = require("./caching/AgenticTokenCache");
26
+ Object.defineProperty(exports, "AgenticTokenCache", { enumerable: true, get: function () { return AgenticTokenCache_1.AgenticTokenCache; } });
27
+ Object.defineProperty(exports, "AgenticTokenCacheInstance", { enumerable: true, get: function () { return AgenticTokenCache_1.AgenticTokenCacheInstance; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,57 @@
1
+ import { TurnContext } from '@microsoft/agents-hosting';
2
+ import { BaggageBuilder } from '@microsoft/agents-a365-observability';
3
+ /**
4
+ * Utilities to populate BaggageBuilder from a TurnContext.
5
+ */
6
+ export declare class BaggageBuilderUtils {
7
+ /**
8
+ * Populate all supported baggage pairs from the provided TurnContext.
9
+ * @param builder The BaggageBuilder instance to populate.
10
+ * @param turnContext The TurnContext containing activity information.
11
+ * @returns The updated BaggageBuilder instance.
12
+ */
13
+ static fromTurnContext(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
14
+ /**
15
+ * Sets the caller-related baggage values from the TurnContext.
16
+ * @param builder The BaggageBuilder instance.
17
+ * @param turnContext The TurnContext containing activity information.
18
+ * @returns The updated BaggageBuilder instance.
19
+ */
20
+ static setCallerBaggage(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
21
+ /**
22
+ * Sets the execution type baggage value based on caller and recipient agentic status.
23
+ * @param builder The BaggageBuilder instance.
24
+ * @param turnContext The TurnContext containing activity information.
25
+ * @returns The updated BaggageBuilder instance.
26
+ */
27
+ static setExecutionTypeBaggage(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
28
+ /**
29
+ * Sets the target agent-related baggage values from the TurnContext.
30
+ * @param builder The BaggageBuilder instance.
31
+ * @param turnContext The TurnContext containing activity information.
32
+ * @returns The updated BaggageBuilder instance.
33
+ */
34
+ static setTargetAgentBaggage(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
35
+ /**
36
+ * Sets the tenant ID baggage value, extracting from ChannelData if necessary.
37
+ * @param builder The BaggageBuilder instance.
38
+ * @param turnContext The TurnContext containing activity information.
39
+ * @returns The updated BaggageBuilder instance.
40
+ */
41
+ static setTenantIdBaggage(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
42
+ /**
43
+ * Sets the source metadata baggage values from the TurnContext.
44
+ * @param builder The BaggageBuilder instance.
45
+ * @param turnContext The TurnContext containing activity information.
46
+ * @returns The updated BaggageBuilder instance.
47
+ */
48
+ static setSourceMetadataBaggage(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
49
+ /**
50
+ * Sets the conversation ID and item link baggage values from the TurnContext.
51
+ * @param builder The BaggageBuilder instance.
52
+ * @param turnContext The TurnContext containing activity information.
53
+ * @returns The updated BaggageBuilder instance.
54
+ */
55
+ static setConversationIdBaggage(builder: BaggageBuilder, turnContext: TurnContext): BaggageBuilder;
56
+ }
57
+ //# sourceMappingURL=BaggageBuilderUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaggageBuilderUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BaggageBuilderUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AASxD,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAItE;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;IAazF;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;IAM1F;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;IAMjG;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;IAM/F;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;IAM5F;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;IAMlG;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,cAAc;CAInG"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation.
4
+ // Licensed under the MIT License.
5
+ // ------------------------------------------------------------------------------
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BaggageBuilderUtils = void 0;
8
+ const TurnContextUtils_1 = require("./TurnContextUtils");
9
+ /**
10
+ * Utilities to populate BaggageBuilder from a TurnContext.
11
+ */
12
+ class BaggageBuilderUtils {
13
+ /**
14
+ * Populate all supported baggage pairs from the provided TurnContext.
15
+ * @param builder The BaggageBuilder instance to populate.
16
+ * @param turnContext The TurnContext containing activity information.
17
+ * @returns The updated BaggageBuilder instance.
18
+ */
19
+ static fromTurnContext(builder, turnContext) {
20
+ if (!turnContext) {
21
+ throw new Error('turnContext is required');
22
+ }
23
+ this.setCallerBaggage(builder, turnContext);
24
+ this.setExecutionTypeBaggage(builder, turnContext);
25
+ this.setTargetAgentBaggage(builder, turnContext);
26
+ this.setTenantIdBaggage(builder, turnContext);
27
+ this.setSourceMetadataBaggage(builder, turnContext);
28
+ this.setConversationIdBaggage(builder, turnContext);
29
+ return builder;
30
+ }
31
+ /**
32
+ * Sets the caller-related baggage values from the TurnContext.
33
+ * @param builder The BaggageBuilder instance.
34
+ * @param turnContext The TurnContext containing activity information.
35
+ * @returns The updated BaggageBuilder instance.
36
+ */
37
+ static setCallerBaggage(builder, turnContext) {
38
+ builder.setPairs((0, TurnContextUtils_1.getCallerBaggagePairs)(turnContext));
39
+ return builder;
40
+ }
41
+ /**
42
+ * Sets the execution type baggage value based on caller and recipient agentic status.
43
+ * @param builder The BaggageBuilder instance.
44
+ * @param turnContext The TurnContext containing activity information.
45
+ * @returns The updated BaggageBuilder instance.
46
+ */
47
+ static setExecutionTypeBaggage(builder, turnContext) {
48
+ builder.setPairs((0, TurnContextUtils_1.getExecutionTypePair)(turnContext));
49
+ return builder;
50
+ }
51
+ /**
52
+ * Sets the target agent-related baggage values from the TurnContext.
53
+ * @param builder The BaggageBuilder instance.
54
+ * @param turnContext The TurnContext containing activity information.
55
+ * @returns The updated BaggageBuilder instance.
56
+ */
57
+ static setTargetAgentBaggage(builder, turnContext) {
58
+ builder.setPairs((0, TurnContextUtils_1.getTargetAgentBaggagePairs)(turnContext));
59
+ return builder;
60
+ }
61
+ /**
62
+ * Sets the tenant ID baggage value, extracting from ChannelData if necessary.
63
+ * @param builder The BaggageBuilder instance.
64
+ * @param turnContext The TurnContext containing activity information.
65
+ * @returns The updated BaggageBuilder instance.
66
+ */
67
+ static setTenantIdBaggage(builder, turnContext) {
68
+ builder.setPairs((0, TurnContextUtils_1.getTenantIdPair)(turnContext));
69
+ return builder;
70
+ }
71
+ /**
72
+ * Sets the source metadata baggage values from the TurnContext.
73
+ * @param builder The BaggageBuilder instance.
74
+ * @param turnContext The TurnContext containing activity information.
75
+ * @returns The updated BaggageBuilder instance.
76
+ */
77
+ static setSourceMetadataBaggage(builder, turnContext) {
78
+ builder.setPairs((0, TurnContextUtils_1.getSourceMetadataBaggagePairs)(turnContext));
79
+ return builder;
80
+ }
81
+ /**
82
+ * Sets the conversation ID and item link baggage values from the TurnContext.
83
+ * @param builder The BaggageBuilder instance.
84
+ * @param turnContext The TurnContext containing activity information.
85
+ * @returns The updated BaggageBuilder instance.
86
+ */
87
+ static setConversationIdBaggage(builder, turnContext) {
88
+ builder.setPairs((0, TurnContextUtils_1.getConversationIdAndItemLinkPairs)(turnContext));
89
+ return builder;
90
+ }
91
+ }
92
+ exports.BaggageBuilderUtils = BaggageBuilderUtils;
93
+ //# sourceMappingURL=BaggageBuilderUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaggageBuilderUtils.js","sourceRoot":"","sources":["../../../src/utils/BaggageBuilderUtils.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;;;AAGjF,yDAO4B;AAK5B;;GAEG;AACH,MAAa,mBAAmB;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,OAAuB,EAAE,WAAwB;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAuB,EAAE,WAAwB;QACvE,OAAO,CAAC,QAAQ,CAAC,IAAA,wCAAqB,EAAC,WAAW,CAAC,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAuB,EAAE,WAAwB;QAC9E,OAAO,CAAC,QAAQ,CAAC,IAAA,uCAAoB,EAAC,WAAW,CAAC,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,OAAuB,EAAE,WAAwB;QAC5E,OAAO,CAAC,QAAQ,CAAC,IAAA,6CAA0B,EAAC,WAAW,CAAC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAuB,EAAE,WAAwB;QACzE,OAAO,CAAC,QAAQ,CAAC,IAAA,kCAAe,EAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAuB,EAAE,WAAwB;QAC/E,OAAO,CAAC,QAAQ,CAAC,IAAA,gDAA6B,EAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAuB,EAAE,WAAwB;QAC/E,OAAO,CAAC,QAAQ,CAAC,IAAA,oDAAiC,EAAC,WAAW,CAAC,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA1FD,kDA0FC"}
@@ -0,0 +1,83 @@
1
+ import { TurnContext } from '@microsoft/agents-hosting';
2
+ import { InvokeAgentScope, InferenceScope, ExecuteToolScope, AgentDetails, TenantDetails, CallerDetails, InferenceDetails, InvokeAgentDetails, ToolCallDetails } from '@microsoft/agents-a365-observability';
3
+ /**
4
+ * Unified utilities to populate scope tags from a TurnContext.
5
+ * Provides common tag population and scope-specific helpers.
6
+ */
7
+ export declare class ScopeUtils {
8
+ private static setInputMessageTags;
9
+ /**
10
+ * Derive tenant details from the TurnContext.
11
+ * @param turnContext Activity context
12
+ * @returns Tenant details if a recipient tenant id is present; otherwise undefined.
13
+ */
14
+ static deriveTenantDetails(turnContext: TurnContext): TenantDetails | undefined;
15
+ /**
16
+ * Derive target agent details from the activity recipient.
17
+ * @param turnContext Activity context
18
+ * @returns Agent details built from recipient properties; otherwise undefined.
19
+ */
20
+ static deriveAgentDetails(turnContext: TurnContext): AgentDetails | undefined;
21
+ /**
22
+ * Derive caller agent details from the activity from.
23
+ * @param turnContext Activity context
24
+ * @returns Agent details built from caller (from) properties; otherwise undefined.
25
+ */
26
+ static deriveCallerAgent(turnContext: TurnContext): AgentDetails | undefined;
27
+ /**
28
+ * Derive caller identity details (id, upn, name, tenant, client ip) from the activity from.
29
+ * @param turnContext Activity context
30
+ * @returns Caller details when available; otherwise undefined.
31
+ */
32
+ static deriveCallerDetails(turnContext: TurnContext): CallerDetails | undefined;
33
+ /**
34
+ * Derive conversation id from the TurnContext.
35
+ * @param turnContext Activity context
36
+ * @returns Conversation id when present; otherwise undefined.
37
+ */
38
+ static deriveConversationId(turnContext: TurnContext): string | undefined;
39
+ /**
40
+ * Derive source metadata (channel name and description/link) from the TurnContext.
41
+ * @param turnContext Activity context
42
+ * @returns Object with optional name and description fields.
43
+ */
44
+ static deriveSourceMetadataObject(turnContext: TurnContext): {
45
+ name?: string;
46
+ description?: string;
47
+ };
48
+ /**
49
+ * Create an `InferenceScope` using `details` and values derived from the provided `TurnContext`.
50
+ * Derives `agentDetails`, `tenantDetails`, `conversationId`, and `sourceMetadata` (channel name/link) from context.
51
+ * Also records input messages from the context if present.
52
+ * @param details The inference call details (model, provider, tokens, etc.).
53
+ * @param turnContext The current activity context to derive scope parameters from.
54
+ * @returns A started `InferenceScope` enriched with context-derived parameters.
55
+ */
56
+ static populateInferenceScopeFromTurnContext(details: InferenceDetails, turnContext: TurnContext): InferenceScope;
57
+ /**
58
+ * Create an `InvokeAgentScope` using `details` and values derived from the provided `TurnContext`.
59
+ * Populates `conversationId` and `request.sourceMetadata` (channel name/link) in `details` from the `TurnContext`, overriding any existing values.
60
+ * Derives `tenantDetails`, `callerAgentDetails` (from caller), and `callerDetails` (from user).
61
+ * Also sets execution type and input messages from the context if present.
62
+ * @param details The invoke-agent call details to be augmented and used for the scope.
63
+ * @param turnContext The current activity context to derive scope parameters from.
64
+ * @returns A started `InvokeAgentScope` enriched with context-derived parameters.
65
+ */
66
+ static populateInvokeAgentScopeFromTurnContext(details: InvokeAgentDetails, turnContext: TurnContext): InvokeAgentScope;
67
+ /**
68
+ * Build InvokeAgentDetails by merging provided details with agent info, conversation id and source metadata from the TurnContext.
69
+ * @param details Base invoke-agent details to augment
70
+ * @param turnContext Activity context
71
+ * @returns New InvokeAgentDetails suitable for starting an InvokeAgentScope.
72
+ */
73
+ static buildInvokeAgentDetails(details: InvokeAgentDetails, turnContext: TurnContext): InvokeAgentDetails;
74
+ /**
75
+ * Create an `ExecuteToolScope` using `details` and values derived from the provided `TurnContext`.
76
+ * Derives `agentDetails`, `tenantDetails`, `conversationId`, and `sourceMetadata` (channel name/link) from context.
77
+ * @param details The tool call details (name, type, args, call id, etc.).
78
+ * @param turnContext The current activity context to derive scope parameters from.
79
+ * @returns A started `ExecuteToolScope` enriched with context-derived parameters.
80
+ */
81
+ static populateExecuteToolScopeFromTurnContext(details: ToolCallDetails, turnContext: TurnContext): ExecuteToolScope;
82
+ }
83
+ //# sourceMappingURL=ScopeUtils.d.ts.map
@@ -0,0 +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,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAK9C;;;GAGG;AACH,qBAAa,UAAU;IAGrB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;;;OAIG;WACW,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS;IAKtF;;;;OAIG;WACW,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS;IAapF;;;;OAIG;WACW,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS;IAcnF;;;;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;;;;;;;OAOG;IACH,MAAM,CAAC,qCAAqC,CAC1C,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,WAAW,GACvB,cAAc;IAkBjB;;;;;;;;OAQG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,WAAW,GACvB,gBAAgB;IAenB;;;;;OAKG;WACW,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,GAAG,kBAAkB;IAuBhH;;;;;;OAMG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,WAAW,GACvB,gBAAgB;CAcpB"}