@microsoft/agents-hosting 0.5.4-ga4d0401645 → 0.5.16-g6bdf69cc43

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 (106) hide show
  1. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js +4 -4
  2. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js.map +1 -1
  3. package/dist/src/app/agentApplication.d.ts +186 -20
  4. package/dist/src/app/agentApplication.js +235 -33
  5. package/dist/src/app/agentApplication.js.map +1 -1
  6. package/dist/src/app/agentApplicationBuilder.d.ts +1 -1
  7. package/dist/src/app/agentApplicationOptions.d.ts +1 -1
  8. package/dist/src/app/appRoute.d.ts +5 -0
  9. package/dist/src/app/authorization.d.ts +293 -0
  10. package/dist/src/app/authorization.js +375 -0
  11. package/dist/src/app/authorization.js.map +1 -0
  12. package/dist/src/app/index.d.ts +1 -1
  13. package/dist/src/app/index.js +1 -1
  14. package/dist/src/app/index.js.map +1 -1
  15. package/dist/src/app/streaming/citation.d.ts +25 -0
  16. package/dist/src/app/streaming/{AIEntity.js → citation.js} +1 -1
  17. package/dist/src/app/streaming/citation.js.map +1 -0
  18. package/dist/src/app/streaming/{utilities.d.ts → citationUtil.d.ts} +3 -3
  19. package/dist/src/app/streaming/{utilities.js → citationUtil.js} +5 -36
  20. package/dist/src/app/streaming/citationUtil.js.map +1 -0
  21. package/dist/src/app/streaming/streamingResponse.d.ts +3 -4
  22. package/dist/src/app/streaming/streamingResponse.js +24 -22
  23. package/dist/src/app/streaming/streamingResponse.js.map +1 -1
  24. package/dist/src/auth/index.d.ts +1 -0
  25. package/dist/src/auth/index.js +1 -0
  26. package/dist/src/auth/index.js.map +1 -1
  27. package/dist/src/auth/jwt-middleware.js.map +1 -1
  28. package/dist/src/auth/msalTokenCredential.d.ts +10 -0
  29. package/dist/src/auth/msalTokenCredential.js +19 -0
  30. package/dist/src/auth/msalTokenCredential.js.map +1 -0
  31. package/dist/src/auth/msalTokenProvider.d.ts +1 -0
  32. package/dist/src/auth/msalTokenProvider.js +15 -0
  33. package/dist/src/auth/msalTokenProvider.js.map +1 -1
  34. package/dist/src/cards/cardFactory.d.ts +2 -2
  35. package/dist/src/cards/cardFactory.js.map +1 -1
  36. package/dist/src/oauth/index.d.ts +1 -4
  37. package/dist/src/oauth/index.js +1 -4
  38. package/dist/src/oauth/index.js.map +1 -1
  39. package/dist/src/oauth/oAuthFlow.d.ts +62 -19
  40. package/dist/src/oauth/oAuthFlow.js +193 -67
  41. package/dist/src/oauth/oAuthFlow.js.map +1 -1
  42. package/dist/src/oauth/userTokenClient.d.ts +37 -7
  43. package/dist/src/oauth/userTokenClient.js +56 -15
  44. package/dist/src/oauth/userTokenClient.js.map +1 -1
  45. package/dist/src/oauth/userTokenClient.types.d.ts +147 -0
  46. package/dist/src/oauth/{oAuthCard.js → userTokenClient.types.js} +1 -1
  47. package/dist/src/oauth/userTokenClient.types.js.map +1 -0
  48. package/package.json +5 -4
  49. package/src/app/adaptiveCards/adaptiveCardsActions.ts +4 -4
  50. package/src/app/agentApplication.ts +248 -33
  51. package/src/app/agentApplicationBuilder.ts +1 -1
  52. package/src/app/agentApplicationOptions.ts +1 -1
  53. package/src/app/appRoute.ts +6 -0
  54. package/src/app/authorization.ts +418 -0
  55. package/src/app/index.ts +1 -1
  56. package/src/app/streaming/citation.ts +29 -0
  57. package/src/app/streaming/{utilities.ts → citationUtil.ts} +3 -35
  58. package/src/app/streaming/streamingResponse.ts +28 -27
  59. package/src/auth/index.ts +1 -0
  60. package/src/auth/jwt-middleware.ts +1 -1
  61. package/src/auth/msalTokenCredential.ts +14 -0
  62. package/src/auth/msalTokenProvider.ts +17 -1
  63. package/src/cards/cardFactory.ts +2 -3
  64. package/src/oauth/index.ts +1 -4
  65. package/src/oauth/oAuthFlow.ts +226 -70
  66. package/src/oauth/userTokenClient.ts +62 -19
  67. package/src/oauth/userTokenClient.types.ts +173 -0
  68. package/dist/src/app/oauth/authorization.d.ts +0 -87
  69. package/dist/src/app/oauth/authorization.js +0 -135
  70. package/dist/src/app/oauth/authorization.js.map +0 -1
  71. package/dist/src/app/streaming/AIEntity.d.ts +0 -36
  72. package/dist/src/app/streaming/AIEntity.js.map +0 -1
  73. package/dist/src/app/streaming/actionCall.d.ts +0 -33
  74. package/dist/src/app/streaming/actionCall.js +0 -7
  75. package/dist/src/app/streaming/actionCall.js.map +0 -1
  76. package/dist/src/app/streaming/clientCitation.d.ts +0 -68
  77. package/dist/src/app/streaming/clientCitation.js +0 -10
  78. package/dist/src/app/streaming/clientCitation.js.map +0 -1
  79. package/dist/src/app/streaming/message.d.ts +0 -106
  80. package/dist/src/app/streaming/message.js +0 -7
  81. package/dist/src/app/streaming/message.js.map +0 -1
  82. package/dist/src/app/streaming/sensitivityUsageInfo.d.ts +0 -40
  83. package/dist/src/app/streaming/sensitivityUsageInfo.js +0 -3
  84. package/dist/src/app/streaming/sensitivityUsageInfo.js.map +0 -1
  85. package/dist/src/app/streaming/utilities.js.map +0 -1
  86. package/dist/src/oauth/oAuthCard.d.ts +0 -27
  87. package/dist/src/oauth/oAuthCard.js.map +0 -1
  88. package/dist/src/oauth/signingResource.d.ts +0 -43
  89. package/dist/src/oauth/signingResource.js +0 -5
  90. package/dist/src/oauth/signingResource.js.map +0 -1
  91. package/dist/src/oauth/tokenExchangeRequest.d.ts +0 -17
  92. package/dist/src/oauth/tokenExchangeRequest.js +0 -5
  93. package/dist/src/oauth/tokenExchangeRequest.js.map +0 -1
  94. package/dist/src/oauth/tokenResponse.d.ts +0 -29
  95. package/dist/src/oauth/tokenResponse.js +0 -25
  96. package/dist/src/oauth/tokenResponse.js.map +0 -1
  97. package/src/app/oauth/authorization.ts +0 -162
  98. package/src/app/streaming/AIEntity.ts +0 -44
  99. package/src/app/streaming/actionCall.ts +0 -37
  100. package/src/app/streaming/clientCitation.ts +0 -102
  101. package/src/app/streaming/message.ts +0 -125
  102. package/src/app/streaming/sensitivityUsageInfo.ts +0 -48
  103. package/src/oauth/oAuthCard.ts +0 -30
  104. package/src/oauth/signingResource.ts +0 -48
  105. package/src/oauth/tokenExchangeRequest.ts +0 -20
  106. package/src/oauth/tokenResponse.ts +0 -43
@@ -1,13 +1,27 @@
1
- import { AgentStatePropertyAccessor, UserState, TurnContext, UserTokenClient } from '../';
2
- import { TokenResponse } from './tokenResponse';
3
- export declare class FlowState {
4
- flowStarted: boolean;
5
- flowExpires: number;
1
+ import { Activity } from '@microsoft/agents-activity';
2
+ import { TurnContext, Storage } from '../';
3
+ import { UserTokenClient } from './userTokenClient';
4
+ import { TokenResponse } from './userTokenClient.types';
5
+ /**
6
+ * Represents the state of the OAuth flow.
7
+ * @interface FlowState
8
+ */
9
+ export interface FlowState {
10
+ /** Indicates whether the OAuth flow has been started */
11
+ flowStarted: boolean | undefined;
12
+ /** Timestamp when the OAuth flow expires (in milliseconds since epoch) */
13
+ flowExpires: number | undefined;
14
+ /** The absolute OAuth connection name used for the flow, null if not set */
15
+ absOauthConnectionName: string;
16
+ /** Optional activity to continue the flow with, used for multi-turn scenarios */
17
+ continuationActivity?: Activity | null;
18
+ eTag?: string;
6
19
  }
7
20
  /**
8
21
  * Manages the OAuth flow
9
22
  */
10
23
  export declare class OAuthFlow {
24
+ private storage;
11
25
  /**
12
26
  * The user token client used for managing user tokens.
13
27
  */
@@ -15,15 +29,15 @@ export declare class OAuthFlow {
15
29
  /**
16
30
  * The current state of the OAuth flow.
17
31
  */
18
- state: FlowState | null;
19
- /**
20
- * The accessor for managing the flow state in user state.
21
- */
22
- flowStateAccessor: AgentStatePropertyAccessor<FlowState | null>;
32
+ state: FlowState;
23
33
  /**
24
34
  * The ID of the token exchange request, used to deduplicate requests.
25
35
  */
26
36
  tokenExchangeId: string | null;
37
+ /**
38
+ * In-memory cache for tokens with expiration.
39
+ */
40
+ private tokenCache;
27
41
  /**
28
42
  * The name of the OAuth connection.
29
43
  */
@@ -38,11 +52,15 @@ export declare class OAuthFlow {
38
52
  cardText: string;
39
53
  /**
40
54
  * Creates a new instance of OAuthFlow.
41
- * @param userState The user state.
55
+ * @param storage The storage provider for persisting flow state.
56
+ * @param absOauthConnectionName The absolute OAuth connection name.
57
+ * @param tokenClient Optional user token client. If not provided, will be initialized automatically.
58
+ * @param cardTitle Optional title for the OAuth card. Defaults to 'Sign in'.
59
+ * @param cardText Optional text for the OAuth card. Defaults to 'login'.
42
60
  */
43
- constructor(userState: UserState, absOauthConnectionName: string, tokenClient?: UserTokenClient, cardTitle?: string, cardText?: string);
61
+ constructor(storage: Storage, absOauthConnectionName: string, tokenClient?: UserTokenClient, cardTitle?: string, cardText?: string);
44
62
  /**
45
- * Retrieves the user token from the user token service.
63
+ * Retrieves the user token from the user token service with in-memory caching for 10 minutes.
46
64
  * @param context The turn context containing the activity information.
47
65
  * @returns A promise that resolves to the user token response.
48
66
  * @throws Will throw an error if the channelId or from properties are not set in the activity.
@@ -51,13 +69,13 @@ export declare class OAuthFlow {
51
69
  /**
52
70
  * Begins the OAuth flow.
53
71
  * @param context The turn context.
54
- * @returns A promise that resolves to the user token.
72
+ * @returns A promise that resolves to the user token if available, or undefined if OAuth flow needs to be started.
55
73
  */
56
- beginFlow(context: TurnContext): Promise<TokenResponse>;
74
+ beginFlow(context: TurnContext): Promise<TokenResponse | undefined>;
57
75
  /**
58
76
  * Continues the OAuth flow.
59
77
  * @param context The turn context.
60
- * @returns A promise that resolves to the user token.
78
+ * @returns A promise that resolves to the user token response.
61
79
  */
62
80
  continueFlow(context: TurnContext): Promise<TokenResponse>;
63
81
  /**
@@ -67,10 +85,35 @@ export declare class OAuthFlow {
67
85
  */
68
86
  signOut(context: TurnContext): Promise<void>;
69
87
  /**
70
- * Gets the user state.
88
+ * Gets the user state for the OAuth flow.
71
89
  * @param context The turn context.
72
- * @returns A promise that resolves to the user state.
90
+ * @returns A promise that resolves to the flow state.
91
+ */
92
+ getFlowState(context: TurnContext): Promise<FlowState>;
93
+ /**
94
+ * Sets the flow state for the OAuth flow.
95
+ * @param context The turn context.
96
+ * @param flowState The flow state to set.
97
+ * @returns A promise that resolves when the flow state is set.
98
+ */
99
+ setFlowState(context: TurnContext, flowState: FlowState): Promise<void>;
100
+ /**
101
+ * Initializes the user token client if not already initialized.
102
+ * @param context The turn context used to get authentication credentials.
73
103
  */
74
- private getUserState;
75
104
  private initializeTokenClient;
105
+ /**
106
+ * Generates a cache key for storing user tokens.
107
+ * @param context The turn context containing activity information.
108
+ * @returns The cache key string in format: channelId_userId_connectionName.
109
+ * @throws Will throw an error if required activity properties are missing.
110
+ */
111
+ private getCacheKey;
112
+ /**
113
+ * Generates a storage key for persisting OAuth flow state.
114
+ * @param context The turn context containing activity information.
115
+ * @returns The storage key string in format: oauth/channelId/conversationId/userId/flowState.
116
+ * @throws Will throw an error if required activity properties are missing.
117
+ */
118
+ private getFlowStateKey;
76
119
  }
@@ -1,33 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OAuthFlow = exports.FlowState = void 0;
3
+ exports.OAuthFlow = void 0;
4
4
  // Copyright (c) Microsoft Corporation. All rights reserved.
5
5
  // Licensed under the MIT License.
6
6
  const logger_1 = require("./../logger");
7
7
  const agents_activity_1 = require("@microsoft/agents-activity");
8
8
  const __1 = require("../");
9
- const tokenResponse_1 = require("./tokenResponse");
9
+ const userTokenClient_1 = require("./userTokenClient");
10
10
  const logger = (0, logger_1.debug)('agents:oauth-flow');
11
- class FlowState {
12
- constructor() {
13
- this.flowStarted = false;
14
- this.flowExpires = 0;
15
- }
16
- }
17
- exports.FlowState = FlowState;
18
11
  /**
19
12
  * Manages the OAuth flow
20
13
  */
21
14
  class OAuthFlow {
22
15
  /**
23
16
  * Creates a new instance of OAuthFlow.
24
- * @param userState The user state.
17
+ * @param storage The storage provider for persisting flow state.
18
+ * @param absOauthConnectionName The absolute OAuth connection name.
19
+ * @param tokenClient Optional user token client. If not provided, will be initialized automatically.
20
+ * @param cardTitle Optional title for the OAuth card. Defaults to 'Sign in'.
21
+ * @param cardText Optional text for the OAuth card. Defaults to 'login'.
25
22
  */
26
- constructor(userState, absOauthConnectionName, tokenClient, cardTitle, cardText) {
23
+ constructor(storage, absOauthConnectionName, tokenClient, cardTitle, cardText) {
24
+ this.storage = storage;
27
25
  /**
28
26
  * The ID of the token exchange request, used to deduplicate requests.
29
27
  */
30
28
  this.tokenExchangeId = null;
29
+ /**
30
+ * In-memory cache for tokens with expiration.
31
+ */
32
+ this.tokenCache = new Map();
31
33
  /**
32
34
  * The title of the OAuth card.
33
35
  */
@@ -36,113 +38,187 @@ class OAuthFlow {
36
38
  * The text of the OAuth card.
37
39
  */
38
40
  this.cardText = 'login';
39
- this.state = new FlowState();
40
- this.flowStateAccessor = userState.createProperty('flowState');
41
+ this.state = { flowStarted: undefined, flowExpires: undefined, absOauthConnectionName };
41
42
  this.absOauthConnectionName = absOauthConnectionName;
42
43
  this.userTokenClient = tokenClient !== null && tokenClient !== void 0 ? tokenClient : null;
43
44
  this.cardTitle = cardTitle !== null && cardTitle !== void 0 ? cardTitle : this.cardTitle;
44
45
  this.cardText = cardText !== null && cardText !== void 0 ? cardText : this.cardText;
45
46
  }
46
47
  /**
47
- * Retrieves the user token from the user token service.
48
+ * Retrieves the user token from the user token service with in-memory caching for 10 minutes.
48
49
  * @param context The turn context containing the activity information.
49
50
  * @returns A promise that resolves to the user token response.
50
51
  * @throws Will throw an error if the channelId or from properties are not set in the activity.
51
52
  */
52
53
  async getUserToken(context) {
53
54
  await this.initializeTokenClient(context);
54
- logger.info('Get token from user token service');
55
55
  const activity = context.activity;
56
- if (activity.channelId && activity.from && activity.from.id) {
57
- return await this.userTokenClient.getUserToken(this.absOauthConnectionName, activity.channelId, activity.from.id);
58
- }
59
- else {
56
+ if (!activity.channelId || !activity.from || !activity.from.id) {
60
57
  throw new Error('UserTokenService requires channelId and from to be set');
61
58
  }
59
+ const cacheKey = this.getCacheKey(context);
60
+ const cachedEntry = this.tokenCache.get(cacheKey);
61
+ if (cachedEntry && Date.now() < cachedEntry.expiresAt) {
62
+ logger.info(`Returning cached token for user with cache key: ${cacheKey}`);
63
+ return cachedEntry.token;
64
+ }
65
+ logger.info('Get token from user token service');
66
+ const tokenResponse = await this.userTokenClient.getUserToken(this.absOauthConnectionName, activity.channelId, activity.from.id);
67
+ // Cache the token if it's valid (has a token value)
68
+ if (tokenResponse && tokenResponse.token) {
69
+ const cacheExpiry = Date.now() + (10 * 60 * 1000); // 10 minutes from now
70
+ this.tokenCache.set(cacheKey, {
71
+ token: tokenResponse,
72
+ expiresAt: cacheExpiry
73
+ });
74
+ logger.info('Token cached for 10 minutes');
75
+ }
76
+ return tokenResponse;
62
77
  }
63
78
  /**
64
79
  * Begins the OAuth flow.
65
80
  * @param context The turn context.
66
- * @returns A promise that resolves to the user token.
81
+ * @returns A promise that resolves to the user token if available, or undefined if OAuth flow needs to be started.
67
82
  */
68
83
  async beginFlow(context) {
69
84
  var _a;
70
- this.state = await this.getUserState(context);
85
+ this.state = await this.getFlowState(context);
71
86
  if (this.absOauthConnectionName === '') {
72
87
  throw new Error('connectionName is not set');
73
88
  }
74
89
  logger.info('Starting OAuth flow for connectionName:', this.absOauthConnectionName);
75
90
  await this.initializeTokenClient(context);
76
- const tokenResponse = await this.userTokenClient.getUserToken(this.absOauthConnectionName, context.activity.channelId, (_a = context.activity.from) === null || _a === void 0 ? void 0 : _a.id);
77
- if ((tokenResponse === null || tokenResponse === void 0 ? void 0 : tokenResponse.status) === tokenResponse_1.TokenRequestStatus.Success) {
78
- this.state.flowStarted = false;
79
- this.state.flowExpires = 0;
80
- await this.flowStateAccessor.set(context, this.state);
81
- logger.info('User token retrieved successfully from service');
82
- return tokenResponse;
91
+ const act = context.activity;
92
+ // Check cache first before starting OAuth flow
93
+ if (act.channelId && act.from && act.from.id) {
94
+ const cacheKey = this.getCacheKey(context);
95
+ const cachedEntry = this.tokenCache.get(cacheKey);
96
+ if (cachedEntry && Date.now() < cachedEntry.expiresAt) {
97
+ logger.info(`Returning cached token for user in beginFlow with cache key: ${cacheKey}`);
98
+ return cachedEntry.token;
99
+ }
100
+ }
101
+ const output = await this.userTokenClient.getTokenOrSignInResource((_a = act.from) === null || _a === void 0 ? void 0 : _a.id, this.absOauthConnectionName, act.channelId, act.getConversationReference(), act.relatesTo, undefined);
102
+ if (output && output.tokenResponse) {
103
+ // Cache the token if it's valid
104
+ if (act.channelId && act.from && act.from.id) {
105
+ const cacheKey = this.getCacheKey(context);
106
+ const cacheExpiry = Date.now() + (10 * 60 * 1000); // 10 minutes from now
107
+ this.tokenCache.set(cacheKey, {
108
+ token: output.tokenResponse,
109
+ expiresAt: cacheExpiry
110
+ });
111
+ logger.info('Token cached for 10 minutes in beginFlow');
112
+ this.state = { flowStarted: false, flowExpires: 0, absOauthConnectionName: this.absOauthConnectionName };
113
+ }
114
+ logger.info('Token retrieved successfully');
115
+ return output.tokenResponse;
83
116
  }
84
- const authConfig = context.adapter.authConfig;
85
- const signingResource = await this.userTokenClient.getSignInResource(authConfig.clientId, this.absOauthConnectionName, context.activity.getConversationReference(), context.activity.relatesTo);
86
- const oCard = __1.CardFactory.oauthCard(this.absOauthConnectionName, this.cardTitle, this.cardText, signingResource);
117
+ const oCard = __1.CardFactory.oauthCard(this.absOauthConnectionName, this.cardTitle, this.cardText, output.signInResource);
87
118
  await context.sendActivity(__1.MessageFactory.attachment(oCard));
88
- this.state.flowStarted = true;
89
- this.state.flowExpires = Date.now() + 30000;
90
- await this.flowStateAccessor.set(context, this.state);
91
- logger.info('OAuth begin flow completed, waiting for user to sign in');
92
- return {
93
- token: undefined,
94
- status: tokenResponse_1.TokenRequestStatus.InProgress
95
- };
119
+ this.state = { flowStarted: true, flowExpires: Date.now() + 60 * 5 * 1000, absOauthConnectionName: this.absOauthConnectionName };
120
+ await this.storage.write({ [this.getFlowStateKey(context)]: this.state });
121
+ logger.info('OAuth card sent, flow started');
122
+ return undefined;
96
123
  }
97
124
  /**
98
125
  * Continues the OAuth flow.
99
126
  * @param context The turn context.
100
- * @returns A promise that resolves to the user token.
127
+ * @returns A promise that resolves to the user token response.
101
128
  */
102
129
  async continueFlow(context) {
103
- var _a, _b, _c, _d, _e, _f, _g;
104
- this.state = await this.getUserState(context);
130
+ var _a, _b, _c, _d, _e, _f, _g, _h;
131
+ this.state = await this.getFlowState(context);
105
132
  await this.initializeTokenClient(context);
106
- if (((_a = this.state) === null || _a === void 0 ? void 0 : _a.flowExpires) !== 0 && Date.now() > this.state.flowExpires) {
133
+ if (((_a = this.state) === null || _a === void 0 ? void 0 : _a.flowExpires) !== 0 && Date.now() > ((_b = this.state) === null || _b === void 0 ? void 0 : _b.flowExpires)) {
107
134
  logger.warn('Flow expired');
108
- this.state.flowStarted = false;
109
135
  await context.sendActivity(__1.MessageFactory.text('Sign-in session expired. Please try again.'));
110
- return { status: tokenResponse_1.TokenRequestStatus.Expired, token: undefined };
136
+ this.state.flowStarted = false;
137
+ return { token: undefined };
111
138
  }
112
139
  const contFlowActivity = context.activity;
113
140
  if (contFlowActivity.type === agents_activity_1.ActivityTypes.Message) {
114
141
  const magicCode = contFlowActivity.text;
115
- const result = await ((_b = this.userTokenClient) === null || _b === void 0 ? void 0 : _b.getUserToken(this.absOauthConnectionName, contFlowActivity.channelId, (_c = contFlowActivity.from) === null || _c === void 0 ? void 0 : _c.id, magicCode));
116
- return result;
142
+ if (magicCode.match(/^\d{6}$/)) {
143
+ const result = await ((_c = this.userTokenClient) === null || _c === void 0 ? void 0 : _c.getUserToken(this.absOauthConnectionName, contFlowActivity.channelId, (_d = contFlowActivity.from) === null || _d === void 0 ? void 0 : _d.id, magicCode));
144
+ if (result && result.token) {
145
+ // Cache the token if it's valid
146
+ if (contFlowActivity.channelId && contFlowActivity.from && contFlowActivity.from.id) {
147
+ const cacheKey = this.getCacheKey(context);
148
+ const cacheExpiry = Date.now() + (10 * 60 * 1000); // 10 minutes from now
149
+ this.tokenCache.set(cacheKey, {
150
+ token: result,
151
+ expiresAt: cacheExpiry
152
+ });
153
+ logger.info('Token cached for 10 minutes in continueFlow (magic code)');
154
+ }
155
+ await this.storage.delete([this.getFlowStateKey(context)]);
156
+ logger.info('Token retrieved successfully');
157
+ return result;
158
+ }
159
+ else {
160
+ // await context.sendActivity(MessageFactory.text('Invalid code. Please try again.'))
161
+ logger.warn('Invalid magic code provided');
162
+ this.state = { flowStarted: true, flowExpires: Date.now() + 30000, absOauthConnectionName: this.absOauthConnectionName };
163
+ await this.storage.write({ [this.getFlowStateKey(context)]: this.state });
164
+ return { token: undefined };
165
+ }
166
+ }
167
+ else {
168
+ logger.warn('Invalid magic code format');
169
+ await context.sendActivity(__1.MessageFactory.text('Invalid code format. Please enter a 6-digit code.'));
170
+ return { token: undefined };
171
+ }
117
172
  }
118
173
  if (contFlowActivity.type === agents_activity_1.ActivityTypes.Invoke && contFlowActivity.name === 'signin/verifyState') {
119
174
  logger.info('Continuing OAuth flow with verifyState');
120
175
  const tokenVerifyState = contFlowActivity.value;
121
176
  const magicCode = tokenVerifyState.state;
122
- const result = await ((_d = this.userTokenClient) === null || _d === void 0 ? void 0 : _d.getUserToken(this.absOauthConnectionName, contFlowActivity.channelId, (_e = contFlowActivity.from) === null || _e === void 0 ? void 0 : _e.id, magicCode));
177
+ const result = await ((_e = this.userTokenClient) === null || _e === void 0 ? void 0 : _e.getUserToken(this.absOauthConnectionName, contFlowActivity.channelId, (_f = contFlowActivity.from) === null || _f === void 0 ? void 0 : _f.id, magicCode));
178
+ // Cache the token if it's valid
179
+ if (result && result.token && contFlowActivity.channelId && contFlowActivity.from && contFlowActivity.from.id) {
180
+ const cacheKey = this.getCacheKey(context);
181
+ const cacheExpiry = Date.now() + (10 * 60 * 1000); // 10 minutes from now
182
+ this.tokenCache.set(cacheKey, {
183
+ token: result,
184
+ expiresAt: cacheExpiry
185
+ });
186
+ logger.info('Token cached for 10 minutes in continueFlow (verifyState)');
187
+ }
123
188
  return result;
124
189
  }
125
190
  if (contFlowActivity.type === agents_activity_1.ActivityTypes.Invoke && contFlowActivity.name === 'signin/tokenExchange') {
126
191
  logger.info('Continuing OAuth flow with tokenExchange');
127
192
  const tokenExchangeRequest = contFlowActivity.value;
128
193
  if (this.tokenExchangeId === tokenExchangeRequest.id) { // dedupe
129
- return { status: tokenResponse_1.TokenRequestStatus.InProgress, token: undefined };
194
+ logger.debug('Token exchange request already processed, skipping');
195
+ return { token: undefined };
130
196
  }
131
197
  this.tokenExchangeId = tokenExchangeRequest.id;
132
- const userTokenResp = await ((_f = this.userTokenClient) === null || _f === void 0 ? void 0 : _f.exchangeTokenAsync((_g = contFlowActivity.from) === null || _g === void 0 ? void 0 : _g.id, this.absOauthConnectionName, contFlowActivity.channelId, tokenExchangeRequest));
133
- if ((userTokenResp === null || userTokenResp === void 0 ? void 0 : userTokenResp.status) === tokenResponse_1.TokenRequestStatus.Success) {
198
+ const userTokenResp = await ((_g = this.userTokenClient) === null || _g === void 0 ? void 0 : _g.exchangeTokenAsync((_h = contFlowActivity.from) === null || _h === void 0 ? void 0 : _h.id, this.absOauthConnectionName, contFlowActivity.channelId, tokenExchangeRequest));
199
+ if (userTokenResp && userTokenResp.token) {
200
+ // Cache the token if it's valid
201
+ if (contFlowActivity.channelId && contFlowActivity.from && contFlowActivity.from.id) {
202
+ const cacheKey = this.getCacheKey(context);
203
+ const cacheExpiry = Date.now() + (10 * 60 * 1000); // 10 minutes from now
204
+ this.tokenCache.set(cacheKey, {
205
+ token: userTokenResp,
206
+ expiresAt: cacheExpiry
207
+ });
208
+ logger.info('Token cached for 10 minutes in continueFlow (tokenExchange)');
209
+ }
134
210
  logger.info('Token exchanged');
135
211
  this.state.flowStarted = false;
136
- await this.flowStateAccessor.set(context, this.state);
212
+ await this.storage.write({ [this.getFlowStateKey(context)]: this.state });
137
213
  return userTokenResp;
138
214
  }
139
215
  else {
140
216
  logger.warn('Token exchange failed');
141
217
  this.state.flowStarted = true;
142
- return { status: tokenResponse_1.TokenRequestStatus.Failed, token: undefined };
218
+ return { token: undefined };
143
219
  }
144
220
  }
145
- return { status: tokenResponse_1.TokenRequestStatus.Failed, token: undefined };
221
+ return { token: undefined };
146
222
  }
147
223
  /**
148
224
  * Signs the user out.
@@ -151,31 +227,81 @@ class OAuthFlow {
151
227
  */
152
228
  async signOut(context) {
153
229
  var _a, _b;
154
- this.state = await this.getUserState(context);
155
230
  await this.initializeTokenClient(context);
231
+ // Clear cached token for this user
232
+ const activity = context.activity;
233
+ if (activity.channelId && activity.from && activity.from.id) {
234
+ const cacheKey = this.getCacheKey(context);
235
+ this.tokenCache.delete(cacheKey);
236
+ logger.info('Cached token cleared for user');
237
+ }
156
238
  await ((_a = this.userTokenClient) === null || _a === void 0 ? void 0 : _a.signOut((_b = context.activity.from) === null || _b === void 0 ? void 0 : _b.id, this.absOauthConnectionName, context.activity.channelId));
157
- this.state.flowExpires = 0;
158
- await this.flowStateAccessor.set(context, this.state);
159
- logger.info('User signed out successfully');
239
+ this.state = { flowStarted: false, flowExpires: 0, absOauthConnectionName: this.absOauthConnectionName };
240
+ await this.storage.delete([this.getFlowStateKey(context)]);
241
+ logger.info('User signed out successfully from connection:', this.absOauthConnectionName);
160
242
  }
161
243
  /**
162
- * Gets the user state.
244
+ * Gets the user state for the OAuth flow.
163
245
  * @param context The turn context.
164
- * @returns A promise that resolves to the user state.
246
+ * @returns A promise that resolves to the flow state.
165
247
  */
166
- async getUserState(context) {
167
- let userProfile = await this.flowStateAccessor.get(context, null);
168
- if (userProfile === null) {
169
- userProfile = new FlowState();
170
- }
171
- return userProfile;
248
+ async getFlowState(context) {
249
+ const key = this.getFlowStateKey(context);
250
+ const data = await this.storage.read([key]);
251
+ const flowState = data[key]; // ?? { flowStarted: false, flowExpires: 0 }
252
+ return flowState;
172
253
  }
254
+ /**
255
+ * Sets the flow state for the OAuth flow.
256
+ * @param context The turn context.
257
+ * @param flowState The flow state to set.
258
+ * @returns A promise that resolves when the flow state is set.
259
+ */
260
+ async setFlowState(context, flowState) {
261
+ const key = this.getFlowStateKey(context);
262
+ await this.storage.write({ [key]: flowState });
263
+ this.state = flowState;
264
+ logger.info('Flow state set:', flowState);
265
+ }
266
+ /**
267
+ * Initializes the user token client if not already initialized.
268
+ * @param context The turn context used to get authentication credentials.
269
+ */
173
270
  async initializeTokenClient(context) {
174
271
  if (this.userTokenClient === undefined || this.userTokenClient === null) {
175
272
  const scope = 'https://api.botframework.com';
176
273
  const accessToken = await context.adapter.authProvider.getAccessToken(context.adapter.authConfig, scope);
177
- this.userTokenClient = new __1.UserTokenClient(accessToken);
274
+ this.userTokenClient = new userTokenClient_1.UserTokenClient(accessToken, context.adapter.authConfig.clientId);
275
+ }
276
+ }
277
+ /**
278
+ * Generates a cache key for storing user tokens.
279
+ * @param context The turn context containing activity information.
280
+ * @returns The cache key string in format: channelId_userId_connectionName.
281
+ * @throws Will throw an error if required activity properties are missing.
282
+ */
283
+ getCacheKey(context) {
284
+ const activity = context.activity;
285
+ if (!activity.channelId || !activity.from || !activity.from.id) {
286
+ throw new Error('ChannelId and from.id must be set in the activity for cache key generation');
287
+ }
288
+ return `${activity.channelId}_${activity.from.id}_${this.absOauthConnectionName}`;
289
+ }
290
+ /**
291
+ * Generates a storage key for persisting OAuth flow state.
292
+ * @param context The turn context containing activity information.
293
+ * @returns The storage key string in format: oauth/channelId/conversationId/userId/flowState.
294
+ * @throws Will throw an error if required activity properties are missing.
295
+ */
296
+ getFlowStateKey(context) {
297
+ var _a, _b;
298
+ const channelId = context.activity.channelId;
299
+ const conversationId = (_a = context.activity.conversation) === null || _a === void 0 ? void 0 : _a.id;
300
+ const userId = (_b = context.activity.from) === null || _b === void 0 ? void 0 : _b.id;
301
+ if (!channelId || !conversationId || !userId) {
302
+ throw new Error('ChannelId, conversationId, and userId must be set in the activity');
178
303
  }
304
+ return `oauth/${channelId}/${userId}/${this.absOauthConnectionName}/flowState`;
179
305
  }
180
306
  }
181
307
  exports.OAuthFlow = OAuthFlow;
@@ -1 +1 @@
1
- {"version":3,"file":"oAuthFlow.js","sourceRoot":"","sources":["../../../src/oauth/oAuthFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oAuthFlow.js","sourceRoot":"","sources":["../../../src/oauth/oAuthFlow.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  import { AxiosInstance } from 'axios';
2
- import { SigningResource } from './signingResource';
3
2
  import { ConversationReference } from '@microsoft/agents-activity';
4
- import { TokenExchangeRequest } from './tokenExchangeRequest';
5
- import { TokenResponse } from './tokenResponse';
3
+ import { AadResourceUrls, SignInResource, TokenExchangeRequest, TokenOrSinginResourceResponse, TokenResponse, TokenStatus } from './userTokenClient.types';
6
4
  /**
7
5
  * Client for managing user tokens.
8
6
  */
9
7
  export declare class UserTokenClient {
10
8
  client: AxiosInstance;
9
+ msAppId: string;
11
10
  /**
12
11
  * Creates a new instance of UserTokenClient.
13
12
  * @param token The token to use for authentication.
13
+ * @param msAppId The Microsoft application ID.
14
14
  */
15
- constructor(token: string);
15
+ constructor(token: string, appId: string);
16
16
  /**
17
17
  * Gets the user token.
18
18
  * @param connectionName The connection name.
@@ -32,12 +32,12 @@ export declare class UserTokenClient {
32
32
  signOut(userId: string, connectionName: string, channelId: string): Promise<void>;
33
33
  /**
34
34
  * Gets the sign-in resource.
35
- * @param appId The application ID.
36
- * @param cnxName The connection name.
35
+ * @param msAppId The application ID.
36
+ * @param connectionName The connection name.
37
37
  * @param activity The activity.
38
38
  * @returns A promise that resolves to the signing resource.
39
39
  */
40
- getSignInResource(appId: string, cnxName: string, conversationReference: ConversationReference, relatesTo?: ConversationReference): Promise<SigningResource>;
40
+ getSignInResource(msAppId: string, connectionName: string, conversation: ConversationReference, relatesTo?: ConversationReference): Promise<SignInResource>;
41
41
  /**
42
42
  * Exchanges the token.
43
43
  * @param userId The user ID.
@@ -47,4 +47,34 @@ export declare class UserTokenClient {
47
47
  * @returns A promise that resolves to the exchanged token.
48
48
  */
49
49
  exchangeTokenAsync(userId: string, connectionName: string, channelId: string, tokenExchangeRequest: TokenExchangeRequest): Promise<TokenResponse>;
50
+ /**
51
+ * Gets the token or sign-in resource.
52
+ * @param userId The user ID.
53
+ * @param connectionName The connection name.
54
+ * @param channelId The channel ID.
55
+ * @param conversation The conversation reference.
56
+ * @param relatesTo The related conversation reference.
57
+ * @param code The code.
58
+ * @param finalRedirect The final redirect URL.
59
+ * @param fwdUrl The forward URL.
60
+ * @returns A promise that resolves to the token or sign-in resource response.
61
+ */
62
+ getTokenOrSignInResource(userId: string, connectionName: string, channelId: string, conversation: ConversationReference, relatesTo: ConversationReference, code: string, finalRedirect?: string, fwdUrl?: string): Promise<TokenOrSinginResourceResponse>;
63
+ /**
64
+ * Gets the token status.
65
+ * @param userId The user ID.
66
+ * @param channelId The channel ID.
67
+ * @param include The optional include parameter.
68
+ * @returns A promise that resolves to the token status.
69
+ */
70
+ getTokenStatus(userId: string, channelId: string, include?: string): Promise<TokenStatus[]>;
71
+ /**
72
+ * Gets the AAD tokens.
73
+ * @param userId The user ID.
74
+ * @param connectionName The connection name.
75
+ * @param channelId The channel ID.
76
+ * @param resourceUrls The resource URLs.
77
+ * @returns A promise that resolves to the AAD tokens.
78
+ */
79
+ getAadTokens(userId: string, connectionName: string, channelId: string, resourceUrls: AadResourceUrls): Promise<Record<string, TokenResponse>>;
50
80
  }