@microsoft/agents-hosting 1.7.0-beta.1.g8bcd4f11a7 → 1.7.0-beta.11.gb5d3e8c751

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 (110) hide show
  1. package/README.md +25 -0
  2. package/dist/package.json +3 -3
  3. package/dist/src/agent-client/agentClient.d.ts +4 -0
  4. package/dist/src/agent-client/agentClient.js +32 -18
  5. package/dist/src/agent-client/agentClient.js.map +1 -1
  6. package/dist/src/agent-client/agentResponseHandler.d.ts +27 -6
  7. package/dist/src/agent-client/agentResponseHandler.js +18 -55
  8. package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
  9. package/dist/src/agent-client/createAgentResponseHandler.d.ts +48 -0
  10. package/dist/src/agent-client/createAgentResponseHandler.js +134 -0
  11. package/dist/src/agent-client/createAgentResponseHandler.js.map +1 -0
  12. package/dist/src/agent-client/index.d.ts +1 -0
  13. package/dist/src/agent-client/index.js +1 -0
  14. package/dist/src/agent-client/index.js.map +1 -1
  15. package/dist/src/app/adaptiveCards/activityValueParsers.js +2 -2
  16. package/dist/src/app/adaptiveCards/activityValueParsers.js.map +1 -1
  17. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js +13 -12
  18. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js.map +1 -1
  19. package/dist/src/app/agentApplication.d.ts +4 -0
  20. package/dist/src/app/agentApplication.js +20 -8
  21. package/dist/src/app/agentApplication.js.map +1 -1
  22. package/dist/src/app/streaming/streamingResponse.js +2 -2
  23. package/dist/src/app/streaming/streamingResponse.js.map +1 -1
  24. package/dist/src/app/turnState.d.ts +0 -1
  25. package/dist/src/app/turnState.js +15 -14
  26. package/dist/src/app/turnState.js.map +1 -1
  27. package/dist/src/app/turnStateProperty.js +4 -2
  28. package/dist/src/app/turnStateProperty.js.map +1 -1
  29. package/dist/src/auth/authConfiguration.js +5 -3
  30. package/dist/src/auth/authConfiguration.js.map +1 -1
  31. package/dist/src/auth/index.d.ts +1 -0
  32. package/dist/src/auth/index.js +1 -0
  33. package/dist/src/auth/index.js.map +1 -1
  34. package/dist/src/auth/jwt-middleware.d.ts +8 -2
  35. package/dist/src/auth/jwt-middleware.js +112 -14
  36. package/dist/src/auth/jwt-middleware.js.map +1 -1
  37. package/dist/src/auth/msal/msalTokenProvider.js +16 -16
  38. package/dist/src/auth/msal/msalTokenProvider.js.map +1 -1
  39. package/dist/src/baseAdapter.js +3 -1
  40. package/dist/src/baseAdapter.js.map +1 -1
  41. package/dist/src/cloudAdapter.d.ts +15 -2
  42. package/dist/src/cloudAdapter.js +28 -10
  43. package/dist/src/cloudAdapter.js.map +1 -1
  44. package/dist/src/createCloudAdapter.d.ts +40 -0
  45. package/dist/src/createCloudAdapter.js +44 -0
  46. package/dist/src/createCloudAdapter.js.map +1 -0
  47. package/dist/src/errorHelper.js +206 -79
  48. package/dist/src/errorHelper.js.map +1 -1
  49. package/dist/src/headerPropagation.js +3 -1
  50. package/dist/src/headerPropagation.js.map +1 -1
  51. package/dist/src/index.d.ts +2 -0
  52. package/dist/src/index.js +2 -0
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/interfaces/index.d.ts +5 -0
  55. package/dist/src/interfaces/index.js +22 -0
  56. package/dist/src/interfaces/index.js.map +1 -0
  57. package/dist/src/interfaces/webResponse.d.ts +41 -0
  58. package/dist/src/interfaces/webResponse.js +7 -0
  59. package/dist/src/interfaces/webResponse.js.map +1 -0
  60. package/dist/src/middlewareSet.d.ts +0 -1
  61. package/dist/src/middlewareSet.js +4 -1
  62. package/dist/src/middlewareSet.js.map +1 -1
  63. package/dist/src/oauth/userTokenClient.js +2 -1
  64. package/dist/src/oauth/userTokenClient.js.map +1 -1
  65. package/dist/src/state/conversationState.js +4 -2
  66. package/dist/src/state/conversationState.js.map +1 -1
  67. package/dist/src/state/userState.js +4 -2
  68. package/dist/src/state/userState.js.map +1 -1
  69. package/dist/src/storage/memoryStorage.js +5 -3
  70. package/dist/src/storage/memoryStorage.js.map +1 -1
  71. package/dist/src/transcript/consoleTranscriptLogger.js +3 -1
  72. package/dist/src/transcript/consoleTranscriptLogger.js.map +1 -1
  73. package/dist/src/transcript/fileTranscriptLogger.js +5 -4
  74. package/dist/src/transcript/fileTranscriptLogger.js.map +1 -1
  75. package/dist/src/transcript/transcriptLoggerMiddleware.js +2 -1
  76. package/dist/src/transcript/transcriptLoggerMiddleware.js.map +1 -1
  77. package/dist/src/turnContext.js +2 -1
  78. package/dist/src/turnContext.js.map +1 -1
  79. package/package.json +3 -3
  80. package/src/agent-client/agentClient.ts +37 -21
  81. package/src/agent-client/agentResponseHandler.ts +45 -67
  82. package/src/agent-client/createAgentResponseHandler.ts +189 -0
  83. package/src/agent-client/index.ts +1 -0
  84. package/src/app/adaptiveCards/activityValueParsers.ts +3 -3
  85. package/src/app/adaptiveCards/adaptiveCardsActions.ts +5 -5
  86. package/src/app/agentApplication.ts +23 -16
  87. package/src/app/streaming/streamingResponse.ts +2 -2
  88. package/src/app/turnState.ts +15 -14
  89. package/src/app/turnStateProperty.ts +4 -2
  90. package/src/auth/authConfiguration.ts +5 -3
  91. package/src/auth/index.ts +1 -0
  92. package/src/auth/jwt-middleware.ts +127 -17
  93. package/src/auth/msal/msalTokenProvider.ts +16 -16
  94. package/src/baseAdapter.ts +3 -2
  95. package/src/cloudAdapter.ts +33 -12
  96. package/src/createCloudAdapter.ts +56 -0
  97. package/src/errorHelper.ts +244 -89
  98. package/src/headerPropagation.ts +4 -1
  99. package/src/index.ts +2 -0
  100. package/src/interfaces/index.ts +6 -0
  101. package/src/interfaces/webResponse.ts +44 -0
  102. package/src/middlewareSet.ts +3 -1
  103. package/src/oauth/userTokenClient.ts +3 -2
  104. package/src/state/conversationState.ts +4 -3
  105. package/src/state/userState.ts +4 -3
  106. package/src/storage/memoryStorage.ts +5 -3
  107. package/src/transcript/consoleTranscriptLogger.ts +3 -2
  108. package/src/transcript/fileTranscriptLogger.ts +6 -5
  109. package/src/transcript/transcriptLoggerMiddleware.ts +3 -2
  110. package/src/turnContext.ts +3 -2
package/README.md CHANGED
@@ -12,6 +12,31 @@ To install the package:
12
12
  npm install @microsoft/agents-hosting
13
13
  ```
14
14
 
15
+ ## Hosting integration APIs
16
+
17
+ To make hosting an agent independent of any single web framework, this package
18
+ exposes framework-agnostic primitives that the
19
+ [`@microsoft/agents-hosting-express`](../agents-hosting-express) and
20
+ [`@microsoft/agents-hosting-fastify`](../agents-hosting-fastify) packages build on:
21
+
22
+ - `createCloudAdapter(agent, authConfig)` — returns `{ adapter, headerPropagation }` for processing incoming activities. Use this from any web framework.
23
+ - `CloudAdapterResult` — return type of `createCloudAdapter`.
24
+ - `createAgentResponseHandler(adapter, agent, conversationState)` — framework-agnostic handler `(req, res, params) => Promise<void>` for the agent-to-agent response route.
25
+ - `AgentResponseHandler`, `AgentResponseHandlerParams`, `AGENT_RESPONSE_ROUTE_PATH` — supporting types and the canonical route path.
26
+ - `WebResponse`, `NextFunction`, `WebRequestParamsCarrier` — minimal structural interfaces (no Express/Fastify imports) used by the cross-framework helpers above.
27
+
28
+ Most consumers should keep using `startServer`/`createAgentRequestHandler` from the
29
+ Express or Fastify packages; reach for these APIs when adapting another framework.
30
+
31
+ The agent-response handler authenticates requests once through the supplied
32
+ `CloudAdapter`. That boundary validates the token for any configured host connection;
33
+ the handler then verifies that the caller application matches the delegated agent
34
+ recorded for that conversation. Existing route-level `authorizeJWT` middleware is
35
+ redundant but remains compatible. Anonymous callbacks are supported only outside
36
+ production and emit a registration warning because peer ownership cannot be verified.
37
+ Missing, malformed, or pre-upgrade delegated state fails closed. Pre-upgrade
38
+ conversations must be restarted.
39
+
15
40
  ## Example Usage based on the AgentApplication object
16
41
 
17
42
  ```ts
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@microsoft/agents-hosting",
4
- "version": "1.7.0-beta.1.g8bcd4f11a7",
4
+ "version": "1.7.0-beta.11.gb5d3e8c751",
5
5
  "homepage": "https://github.com/microsoft/Agents-for-js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -21,8 +21,8 @@
21
21
  "dependencies": {
22
22
  "@azure/core-auth": "1.10.1",
23
23
  "@azure/msal-node": "5.1.5",
24
- "@microsoft/agents-activity": "1.7.0-beta.1.g8bcd4f11a7",
25
- "@microsoft/agents-telemetry": "1.7.0-beta.1.g8bcd4f11a7",
24
+ "@microsoft/agents-activity": "1.7.0-beta.11.gb5d3e8c751",
25
+ "@microsoft/agents-telemetry": "1.7.0-beta.11.gb5d3e8c751",
26
26
  "jsonwebtoken": "9.0.3",
27
27
  "jwks-rsa": "4.0.1",
28
28
  "zod": "3.25.75"
@@ -31,6 +31,10 @@ export interface ConversationData {
31
31
  * Reference to the conversation for maintaining context across interactions
32
32
  */
33
33
  conversationReference: ConversationReference;
34
+ /**
35
+ * Client ID of the delegated agent allowed to send responses for this conversation.
36
+ */
37
+ expectedAgentClientId?: string;
34
38
  }
35
39
  /**
36
40
  * Client for communicating with other agents through HTTP requests.
@@ -5,8 +5,10 @@ const auth_1 = require("../auth");
5
5
  const agents_activity_1 = require("@microsoft/agents-activity");
6
6
  const crypto_1 = require("crypto");
7
7
  const agents_telemetry_1 = require("@microsoft/agents-telemetry");
8
+ const turnContext_1 = require("../turnContext");
8
9
  const agents_telemetry_2 = require("@microsoft/agents-telemetry");
9
10
  const observability_1 = require("../observability");
11
+ const errorHelper_1 = require("../errorHelper");
10
12
  const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
11
13
  /**
12
14
  * Client for communicating with other agents through HTTP requests.
@@ -52,31 +54,43 @@ class AgentClient {
52
54
  }
53
55
  };
54
56
  activityCopy.conversation.id = (0, crypto_1.randomUUID)();
57
+ const delegatedContext = new turnContext_1.TurnContext(context.adapter, activityCopy, context.identity);
58
+ const delegatedStateKey = { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id };
55
59
  const conversationDataAccessor = conversationState.createProperty(activityCopy.conversation.id);
56
- const convRef = await conversationDataAccessor.set(context, { conversationReference: activity.getConversationReference(), nameRequested: false }, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
57
- const stateChanges = JSON.stringify(convRef);
58
- logger.debug('stateChanges: ', stateChanges);
60
+ await conversationDataAccessor.set(delegatedContext, {
61
+ conversationReference: activity.getConversationReference(),
62
+ nameRequested: false,
63
+ expectedAgentClientId: this.agentClientConfig.clientId
64
+ }, delegatedStateKey);
65
+ logger.debug('stored delegated conversation state');
59
66
  const authProvider = new auth_1.MsalTokenProvider(authConfig);
60
67
  const token = await authProvider.getAccessToken(this.agentClientConfig.clientId);
61
- logger.debug('agent request: ', activityCopy);
68
+ logger.debug('sending activity to delegated agent');
62
69
  let authHeader = ''; // Allow anonymous auth.
63
70
  if (token.trim().length > 0) {
64
71
  authHeader = `Bearer ${token}`;
65
72
  }
66
- await conversationState.saveChanges(context, false, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
67
- const response = await fetch(this.agentClientConfig.endPoint, {
68
- method: 'POST',
69
- headers: {
70
- 'Content-Type': 'application/json',
71
- Authorization: authHeader,
72
- 'x-ms-conversation-id': activityCopy.conversation.id
73
- },
74
- body: JSON.stringify(activityCopy)
75
- });
73
+ await conversationState.saveChanges(delegatedContext, false, delegatedStateKey);
74
+ let response;
75
+ try {
76
+ response = await fetch(this.agentClientConfig.endPoint, {
77
+ method: 'POST',
78
+ headers: {
79
+ 'Content-Type': 'application/json',
80
+ Authorization: authHeader,
81
+ 'x-ms-conversation-id': activityCopy.conversation.id
82
+ },
83
+ body: JSON.stringify(activityCopy)
84
+ });
85
+ }
86
+ catch (error) {
87
+ await conversationState.delete(delegatedContext, delegatedStateKey);
88
+ throw error;
89
+ }
76
90
  record({ httpStatusCode: response.status.toString() });
77
91
  if (!response.ok) {
78
- await conversationDataAccessor.delete(context, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
79
- throw new Error(`Failed to post activity to agent: ${response.statusText}`);
92
+ await conversationState.delete(delegatedContext, delegatedStateKey);
93
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.FailedToPostActivityToAgent, undefined, { statusText: response.statusText });
80
94
  }
81
95
  return response.statusText;
82
96
  });
@@ -101,11 +115,11 @@ class AgentClient {
101
115
  };
102
116
  }
103
117
  else {
104
- throw new Error(`Missing agent client config for agent ${agentName}`);
118
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.MissingAgentClientConfig, undefined, { agentName });
105
119
  }
106
120
  }
107
121
  else {
108
- throw new Error('Agent name is required');
122
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.AgentNameRequired);
109
123
  }
110
124
  }
111
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentClient.js","sourceRoot":"","sources":["../../../src/agent-client/agentClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentClient.js","sourceRoot":"","sources":["../../../src/agent-client/agentClient.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,26 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
1
5
  import { ActivityHandler } from '../activityHandler';
2
6
  import { CloudAdapter } from '../cloudAdapter';
3
- import { Application } from 'express';
4
7
  import { ConversationState } from '../state';
8
+ /**
9
+ * Minimal application surface needed by {@link configureResponseController} to
10
+ * register the agent-to-agent response POST route. Express's `Application`
11
+ * structurally satisfies this; frameworks that do not (e.g., Fastify) should
12
+ * call {@link createAgentResponseHandler} directly and register the route
13
+ * themselves rather than passing a synthetic `WebApp`.
14
+ *
15
+ * `WebApp` is a minimal structural shape rather than a richer, named
16
+ * route-registrar contract. It is exported so it has a stable name in the
17
+ * generated type declarations and API report (it appears in the exported
18
+ * {@link configureResponseController} signature). Any framework `app` whose
19
+ * `post(path, handler)` method structurally matches satisfies it.
20
+ */
21
+ export interface WebApp {
22
+ post(path: string, handler: (req: any, res: any) => unknown | Promise<unknown>): unknown;
23
+ }
5
24
  /**
6
25
  * To enable Agent to Agent communication, configures the agent response controller endpoint for handling incoming activities from external services.
7
26
  *
@@ -15,16 +34,18 @@ import { ConversationState } from '../state';
15
34
  * `POST /api/agentresponse/v3/conversations/{conversationId}/activities/{activityId}`
16
35
  *
17
36
  * The function handles:
37
+ * - Authenticating callers with JWT validation
38
+ * - Verifying that the authenticated caller owns the delegated conversation
18
39
  * - Normalizing incoming activity data from the request body
19
40
  * - Retrieving conversation references from conversation state
20
41
  * - Continuing conversations using the stored conversation reference
21
42
  * - Processing EndOfConversation activities by cleaning up conversation state
22
43
  * - Sending activities through the turn context and returning responses
23
44
  *
24
- * @param app - The Express application instance to configure the route on
25
- * @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations
26
- * @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities
27
- * @param conversationState - The ConversationState instance used for managing conversation-specific state and conversation references
45
+ * @param app - The application instance (Express `Application` or any framework that satisfies {@link WebApp}) to configure the route on.
46
+ * @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations.
47
+ * @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities.
48
+ * @param conversationState - The ConversationState instance used for managing conversation-specific state and conversation references.
28
49
  *
29
50
  * @example
30
51
  * ```typescript
@@ -36,4 +57,4 @@ import { ConversationState } from '../state';
36
57
  * configureResponseController(app, adapter, agent, conversationState);
37
58
  * ```
38
59
  */
39
- export declare const configureResponseController: (app: Application, adapter: CloudAdapter, agent: ActivityHandler, conversationState: ConversationState) => void;
60
+ export declare const configureResponseController: (app: WebApp, adapter: CloudAdapter, agent: ActivityHandler, conversationState: ConversationState) => void;
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
2
6
  Object.defineProperty(exports, "__esModule", { value: true });
3
7
  exports.configureResponseController = void 0;
4
- const agents_activity_1 = require("@microsoft/agents-activity");
5
- const cloudAdapter_1 = require("../cloudAdapter");
6
- const turnContext_1 = require("../turnContext");
7
- const crypto_1 = require("crypto");
8
- const activityWireCompat_1 = require("../activityWireCompat");
9
- const agents_telemetry_1 = require("@microsoft/agents-telemetry");
10
- const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
8
+ const createAgentResponseHandler_1 = require("./createAgentResponseHandler");
11
9
  /**
12
10
  * To enable Agent to Agent communication, configures the agent response controller endpoint for handling incoming activities from external services.
13
11
  *
@@ -21,16 +19,18 @@ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
21
19
  * `POST /api/agentresponse/v3/conversations/{conversationId}/activities/{activityId}`
22
20
  *
23
21
  * The function handles:
22
+ * - Authenticating callers with JWT validation
23
+ * - Verifying that the authenticated caller owns the delegated conversation
24
24
  * - Normalizing incoming activity data from the request body
25
25
  * - Retrieving conversation references from conversation state
26
26
  * - Continuing conversations using the stored conversation reference
27
27
  * - Processing EndOfConversation activities by cleaning up conversation state
28
28
  * - Sending activities through the turn context and returning responses
29
29
  *
30
- * @param app - The Express application instance to configure the route on
31
- * @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations
32
- * @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities
33
- * @param conversationState - The ConversationState instance used for managing conversation-specific state and conversation references
30
+ * @param app - The application instance (Express `Application` or any framework that satisfies {@link WebApp}) to configure the route on.
31
+ * @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations.
32
+ * @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities.
33
+ * @param conversationState - The ConversationState instance used for managing conversation-specific state and conversation references.
34
34
  *
35
35
  * @example
36
36
  * ```typescript
@@ -43,50 +43,13 @@ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
43
43
  * ```
44
44
  */
45
45
  const configureResponseController = (app, adapter, agent, conversationState) => {
46
- app.post('/api/agentresponse/v3/conversations/:conversationId/activities/:activityId', handleResponse(adapter, agent, conversationState));
46
+ const handler = (0, createAgentResponseHandler_1.createAgentResponseHandler)(adapter, agent, conversationState);
47
+ app.post(createAgentResponseHandler_1.AGENT_RESPONSE_ROUTE_PATH, async (req, res) => {
48
+ await handler(req, res, {
49
+ conversationId: req.params.conversationId,
50
+ activityId: req.params.activityId
51
+ });
52
+ });
47
53
  };
48
54
  exports.configureResponseController = configureResponseController;
49
- const handleResponse = (adapter, handler, conversationState) => async (req, res) => {
50
- var _a, _b;
51
- const incoming = (0, activityWireCompat_1.normalizeIncomingActivity)(req.body);
52
- const activity = agents_activity_1.Activity.fromObject(incoming);
53
- logger.debug('received response: ', activity);
54
- const connection = adapter.connectionManager.getDefaultConnection();
55
- const appId = (_b = (_a = connection === null || connection === void 0 ? void 0 : connection.connectionSettings) === null || _a === void 0 ? void 0 : _a.clientId) !== null && _b !== void 0 ? _b : '';
56
- const myTurnContext = new turnContext_1.TurnContext(adapter, activity, cloudAdapter_1.CloudAdapter.createIdentity(appId));
57
- const conversationDataAccessor = conversationState.createProperty(req.params.conversationId);
58
- const conversationRefState = await conversationDataAccessor.get(myTurnContext, undefined, { channelId: activity.channelId, conversationId: req.params.conversationId });
59
- const conversationRef = JSON.stringify(conversationRefState.conversationReference);
60
- console.log('conversationRef', conversationRef);
61
- const callback = async (turnContext) => {
62
- activity.applyConversationReference(conversationRefState.conversationReference);
63
- turnContext.activity.id = req.params.activityId;
64
- let response;
65
- if (activity.type === agents_activity_1.ActivityTypes.EndOfConversation) {
66
- await conversationDataAccessor.delete(turnContext, { channelId: activity.channelId, conversationId: activity.conversation.id });
67
- applyActivityToTurnContext(turnContext, activity);
68
- await handler.run(turnContext);
69
- response = (0, crypto_1.randomUUID)().replace(/-/g, '');
70
- }
71
- else {
72
- response = await turnContext.sendActivity(activity);
73
- }
74
- res.status(200).send(response);
75
- };
76
- await adapter.continueConversation(myTurnContext.identity, conversationRefState.conversationReference, callback);
77
- };
78
- const applyActivityToTurnContext = (turnContext, activity) => {
79
- turnContext.activity.channelData = activity.channelData;
80
- turnContext.activity.code = activity.code;
81
- turnContext.activity.entities = activity.entities;
82
- turnContext.activity.locale = activity.locale;
83
- turnContext.activity.localTimestamp = activity.localTimestamp;
84
- turnContext.activity.name = activity.name;
85
- turnContext.activity.relatesTo = activity.relatesTo;
86
- turnContext.activity.replyToId = activity.replyToId;
87
- turnContext.activity.timestamp = activity.timestamp;
88
- turnContext.activity.text = activity.text;
89
- turnContext.activity.type = activity.type;
90
- turnContext.activity.value = activity.value;
91
- };
92
55
  //# sourceMappingURL=agentResponseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/agentResponseHandler.ts"],"names":[],"mappings":";;;AAAA,gEAA2F;AAE3F,kDAA8C;AAE9C,gDAA4C;AAC5C,mCAAmC;AACnC,8DAAiE;AACjE,kEAAmD;AAGnD,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,qBAAqB,CAAC,CAAA;AAM3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACI,MAAM,2BAA2B,GAAG,CAAC,GAAgB,EAAE,OAAqB,EAAE,KAAsB,EAAE,iBAAoC,EAAE,EAAE;IACnJ,GAAG,CAAC,IAAI,CAAC,4EAA4E,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAC3I,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC;AAED,MAAM,cAAc,GAAG,CAAC,OAAqB,EAAE,OAAwB,EAAE,iBAAoC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;;IACtJ,MAAM,QAAQ,GAAG,IAAA,8CAAyB,EAAC,GAAG,CAAC,IAAK,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,0BAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAE9C,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;IAE7C,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAA;IACnE,MAAM,KAAK,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,kBAAkB,0CAAE,QAAQ,mCAAI,EAAE,CAAA;IAE5D,MAAM,aAAa,GAAG,IAAI,yBAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5F,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,cAAc,CAA6B,GAAG,CAAC,MAAO,CAAC,cAAwB,CAAC,CAAA;IACnI,MAAM,oBAAoB,GAAG,MAAM,wBAAwB,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAU,EAAE,cAAc,EAAE,GAAG,CAAC,MAAO,CAAC,cAAwB,EAAE,CAAC,CAAA;IAEnL,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;IAClF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,KAAK,EAAE,WAAwB,EAAE,EAAE;QAClD,QAAQ,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;QAC/E,WAAW,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC,MAAO,CAAC,UAAoB,CAAA;QAE1D,IAAI,QAAQ,CAAA;QACZ,IAAI,QAAQ,CAAC,IAAI,KAAK,+BAAa,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,YAAa,CAAC,EAAE,EAAE,CAAC,CAAA;YAEjI,0BAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YACjD,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAE9B,QAAQ,GAAG,IAAA,mBAAU,GAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QACrD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,MAAM,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,EAAE,oBAAoB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;AAClH,CAAC,CAAA;AAED,MAAM,0BAA0B,GAAG,CAAC,WAAyB,EAAE,QAAmB,EAAE,EAAE;IACpF,WAAW,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;IACvD,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IACzC,WAAW,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IACjD,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC7C,WAAW,CAAC,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAC7D,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IACzC,WAAW,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;IACnD,WAAW,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;IACnD,WAAW,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;IACnD,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IACzC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IACzC,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;AAC7C,CAAC,CAAA"}
1
+ {"version":3,"file":"agentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/agentResponseHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,6EAAoG;AAsBpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACI,MAAM,2BAA2B,GAAG,CACzC,GAAW,EACX,OAAqB,EACrB,KAAsB,EACtB,iBAAoC,EACpC,EAAE;IACF,MAAM,OAAO,GAAG,IAAA,uDAA0B,EAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAC7E,GAAG,CAAC,IAAI,CAAC,sDAAyB,EAAE,KAAK,EAAE,GAAsC,EAAE,GAAgB,EAAE,EAAE;QACrG,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;YACtB,cAAc,EAAE,GAAG,CAAC,MAAO,CAAC,cAAwB;YACpD,UAAU,EAAE,GAAG,CAAC,MAAO,CAAC,UAAoB;SAC7C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAbY,QAAA,2BAA2B,+BAavC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { ActivityHandler } from '../activityHandler';
6
+ import { CloudAdapter } from '../cloudAdapter';
7
+ import { Request } from '../auth/request';
8
+ import { WebResponse } from '../interfaces/webResponse';
9
+ import { ConversationState } from '../state';
10
+ /**
11
+ * Route parameters supplied to {@link AgentResponseHandler} — typically pulled from
12
+ * the framework's URL path parser.
13
+ */
14
+ export interface AgentResponseHandlerParams {
15
+ conversationId: string;
16
+ activityId: string;
17
+ }
18
+ /**
19
+ * Framework-agnostic handler signature for the agent response controller endpoint.
20
+ *
21
+ * @remarks
22
+ * The handler is intended to be invoked by a thin framework-specific wrapper (such
23
+ * as Express's `configureResponseController(app, ...)`) that extracts the path
24
+ * parameters and forwards a parsed `req.body` plus an {@link WebResponse}.
25
+ */
26
+ export type AgentResponseHandler = (req: Request, res: WebResponse, params: AgentResponseHandlerParams) => Promise<void>;
27
+ /**
28
+ * Creates a framework-agnostic handler for the agent response controller endpoint.
29
+ *
30
+ * This is the core, Express-free implementation used by:
31
+ * - `configureResponseController` in `@microsoft/agents-hosting-express`
32
+ * - `configureResponseController` in `@microsoft/agents-hosting-fastify`
33
+ *
34
+ * Both wrappers register the canonical route
35
+ * `POST /api/agentresponse/v3/conversations/:conversationId/activities/:activityId`
36
+ * and forward the parsed body + path parameters to the handler returned here.
37
+ *
38
+ * @param adapter - The CloudAdapter used for processing activities and managing conversations.
39
+ * @param agent - The ActivityHandler containing the agent logic.
40
+ * @param conversationState - The ConversationState used to look up the stored conversation reference.
41
+ * @returns A handler `(req, res, params) => Promise<void>`.
42
+ */
43
+ export declare const createAgentResponseHandler: (adapter: CloudAdapter, agent: ActivityHandler, conversationState: ConversationState) => AgentResponseHandler;
44
+ /**
45
+ * Canonical route path for the agent response controller endpoint.
46
+ * Both Express and Fastify wrappers should register on this path.
47
+ */
48
+ export declare const AGENT_RESPONSE_ROUTE_PATH = "/api/agentresponse/v3/conversations/:conversationId/activities/:activityId";
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AGENT_RESPONSE_ROUTE_PATH = exports.createAgentResponseHandler = void 0;
8
+ const agents_activity_1 = require("@microsoft/agents-activity");
9
+ const cloudAdapter_1 = require("../cloudAdapter");
10
+ const turnContext_1 = require("../turnContext");
11
+ const crypto_1 = require("crypto");
12
+ const activityWireCompat_1 = require("../activityWireCompat");
13
+ const errorHelper_1 = require("../errorHelper");
14
+ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
15
+ const jwt_middleware_1 = require("../auth/jwt-middleware");
16
+ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
17
+ /**
18
+ * Creates a framework-agnostic handler for the agent response controller endpoint.
19
+ *
20
+ * This is the core, Express-free implementation used by:
21
+ * - `configureResponseController` in `@microsoft/agents-hosting-express`
22
+ * - `configureResponseController` in `@microsoft/agents-hosting-fastify`
23
+ *
24
+ * Both wrappers register the canonical route
25
+ * `POST /api/agentresponse/v3/conversations/:conversationId/activities/:activityId`
26
+ * and forward the parsed body + path parameters to the handler returned here.
27
+ *
28
+ * @param adapter - The CloudAdapter used for processing activities and managing conversations.
29
+ * @param agent - The ActivityHandler containing the agent logic.
30
+ * @param conversationState - The ConversationState used to look up the stored conversation reference.
31
+ * @returns A handler `(req, res, params) => Promise<void>`.
32
+ */
33
+ const createAgentResponseHandler = (adapter, agent, conversationState) => {
34
+ var _a;
35
+ const appId = (_a = adapter.getClientId()) !== null && _a !== void 0 ? _a : '';
36
+ const anonymousDevelopment = appId.length === 0 && process.env.NODE_ENV !== 'production';
37
+ if (anonymousDevelopment) {
38
+ emitAgentResponseWarning('The agent-response endpoint is using anonymous authentication outside production. Callback ownership cannot be cryptographically verified; configure a client ID before deployment.');
39
+ }
40
+ return async (req, res, params) => {
41
+ var _a, _b, _c, _d, _e;
42
+ let middlewareError;
43
+ let nextCalled = false;
44
+ await adapter.authorizeRequest(req, res, (err) => {
45
+ nextCalled = true;
46
+ middlewareError = err;
47
+ });
48
+ if (middlewareError) {
49
+ throw middlewareError;
50
+ }
51
+ if (!nextCalled || res.headersSent) {
52
+ return;
53
+ }
54
+ if (!req.body) {
55
+ throw agents_activity_1.ExceptionHelper.generateException(TypeError, errorHelper_1.Errors.MissingRequestBody);
56
+ }
57
+ const incoming = (0, activityWireCompat_1.normalizeIncomingActivity)(req.body);
58
+ const activity = agents_activity_1.Activity.fromObject(incoming);
59
+ logger.debug('received delegated agent response');
60
+ const continuationAudience = (_a = (0, jwt_middleware_1.getAuthorizedAudience)(req)) !== null && _a !== void 0 ? _a : appId;
61
+ const myTurnContext = new turnContext_1.TurnContext(adapter, activity, cloudAdapter_1.CloudAdapter.createIdentity(continuationAudience));
62
+ const conversationDataAccessor = conversationState.createProperty(params.conversationId);
63
+ const incomingChannelId = activity.channelId;
64
+ const conversationRefState = await conversationDataAccessor.get(myTurnContext, undefined, { channelId: incomingChannelId, conversationId: params.conversationId });
65
+ if (!isDelegatedConversationState(conversationRefState)) {
66
+ res.status(403).send({ 'agent-response-auth-error': 'caller is not authorized for this conversation' });
67
+ return;
68
+ }
69
+ const callerClientId = (_c = (_b = req.user) === null || _b === void 0 ? void 0 : _b.azp) !== null && _c !== void 0 ? _c : (_d = req.user) === null || _d === void 0 ? void 0 : _d.appid;
70
+ const anonymousCaller = anonymousDevelopment && ((_e = req.user) === null || _e === void 0 ? void 0 : _e.name) === 'anonymous';
71
+ const delegatedAgentMatches = anonymousCaller || (typeof callerClientId === 'string' &&
72
+ callerClientId.length > 0 &&
73
+ callerClientId.toLowerCase() === conversationRefState.expectedAgentClientId.toLowerCase());
74
+ if (!delegatedAgentMatches) {
75
+ res.status(403).send({ 'agent-response-auth-error': 'caller is not authorized for this conversation' });
76
+ return;
77
+ }
78
+ const callback = async (turnContext) => {
79
+ activity.applyConversationReference(conversationRefState.conversationReference);
80
+ turnContext.activity.id = params.activityId;
81
+ let response;
82
+ let responseContentType;
83
+ if (activity.type === agents_activity_1.ActivityTypes.EndOfConversation) {
84
+ await conversationState.delete(myTurnContext, { channelId: incomingChannelId, conversationId: params.conversationId });
85
+ applyActivityToTurnContext(turnContext, activity);
86
+ await agent.run(turnContext);
87
+ response = (0, crypto_1.randomUUID)().replace(/-/g, '');
88
+ // Explicitly set the content-type so Express and Fastify both emit the same
89
+ // value for this raw-string body (Express defaults to text/html, Fastify to
90
+ // text/plain when the framework auto-detects).
91
+ responseContentType = 'text/plain; charset=utf-8';
92
+ }
93
+ else {
94
+ response = await turnContext.sendActivity(activity);
95
+ }
96
+ if (responseContentType !== undefined) {
97
+ res.setHeader('content-type', responseContentType);
98
+ }
99
+ res.status(200).send(response);
100
+ };
101
+ await adapter.continueConversation(myTurnContext.identity, conversationRefState.conversationReference, callback);
102
+ };
103
+ };
104
+ exports.createAgentResponseHandler = createAgentResponseHandler;
105
+ function isDelegatedConversationState(state) {
106
+ return typeof (state === null || state === void 0 ? void 0 : state.conversationReference) === 'object' &&
107
+ state.conversationReference !== null &&
108
+ typeof state.expectedAgentClientId === 'string' &&
109
+ state.expectedAgentClientId.trim().length > 0;
110
+ }
111
+ function emitAgentResponseWarning(message) {
112
+ console.warn(`[agents:agent-client] ${message}`);
113
+ logger.warn(message);
114
+ }
115
+ const applyActivityToTurnContext = (turnContext, activity) => {
116
+ turnContext.activity.channelData = activity.channelData;
117
+ turnContext.activity.code = activity.code;
118
+ turnContext.activity.entities = activity.entities;
119
+ turnContext.activity.locale = activity.locale;
120
+ turnContext.activity.localTimestamp = activity.localTimestamp;
121
+ turnContext.activity.name = activity.name;
122
+ turnContext.activity.relatesTo = activity.relatesTo;
123
+ turnContext.activity.replyToId = activity.replyToId;
124
+ turnContext.activity.timestamp = activity.timestamp;
125
+ turnContext.activity.text = activity.text;
126
+ turnContext.activity.type = activity.type;
127
+ turnContext.activity.value = activity.value;
128
+ };
129
+ /**
130
+ * Canonical route path for the agent response controller endpoint.
131
+ * Both Express and Fastify wrappers should register on this path.
132
+ */
133
+ exports.AGENT_RESPONSE_ROUTE_PATH = '/api/agentresponse/v3/conversations/:conversationId/activities/:activityId';
134
+ //# sourceMappingURL=createAgentResponseHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAgentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/createAgentResponseHandler.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './agentClient';
2
2
  export * from './agentResponseHandler';
3
+ export * from './createAgentResponseHandler';
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./agentClient"), exports);
18
18
  __exportStar(require("./agentResponseHandler"), exports);
19
+ __exportStar(require("./createAgentResponseHandler"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,yDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,yDAAsC;AACtC,+DAA4C"}
@@ -18,8 +18,8 @@ exports.parseValueAgentActivityPreview = parseValueAgentActivityPreview;
18
18
  exports.parseValueCommandId = parseValueCommandId;
19
19
  const zod_1 = require("zod");
20
20
  const agents_activity_1 = require("@microsoft/agents-activity");
21
- // import { MessagingExtensionQuery, messagingExtensionQueryZodSchema } from '../messageExtension/messagingExtensionQuery'
22
21
  const adaptiveCardsSearchParams_1 = require("./adaptiveCardsSearchParams");
22
+ const errorHelper_1 = require("../../errorHelper");
23
23
  /**
24
24
  * Parses the given value as a value action.
25
25
  *
@@ -78,7 +78,7 @@ function parseValueActionExecuteSelector(value) {
78
78
  });
79
79
  const safeParsedValue = actionValueExecuteSelector.passthrough().safeParse(value);
80
80
  if (!safeParsedValue.success) {
81
- throw new Error(`Invalid action value: ${safeParsedValue.error}`);
81
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.InvalidActionValue, undefined, { error: String(safeParsedValue.error) });
82
82
  }
83
83
  const parsedValue = safeParsedValue.data;
84
84
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"activityValueParsers.js","sourceRoot":"","sources":["../../../../src/app/adaptiveCards/activityValueParsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activityValueParsers.js","sourceRoot":"","sources":["../../../../src/app/adaptiveCards/activityValueParsers.ts"],"names":[],"mappings":"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"}