@microsoft/agents-hosting 1.7.2 → 1.8.0-beta.36.gb033f0abc1

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 (102) hide show
  1. package/README.md +64 -2
  2. package/dist/package.json +3 -3
  3. package/dist/src/agent-client/agentClient.d.ts +18 -6
  4. package/dist/src/agent-client/agentClient.js +34 -18
  5. package/dist/src/agent-client/agentClient.js.map +1 -1
  6. package/dist/src/agent-client/agentResponseHandler.d.ts +14 -9
  7. package/dist/src/agent-client/agentResponseHandler.js +10 -5
  8. package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
  9. package/dist/src/agent-client/createAgentResponseHandler.d.ts +7 -2
  10. package/dist/src/agent-client/createAgentResponseHandler.js +55 -8
  11. package/dist/src/agent-client/createAgentResponseHandler.js.map +1 -1
  12. package/dist/src/app/adaptiveCards/activityValueParsers.d.ts +1 -4
  13. package/dist/src/app/adaptiveCards/activityValueParsers.js +2 -5
  14. package/dist/src/app/adaptiveCards/activityValueParsers.js.map +1 -1
  15. package/dist/src/app/adaptiveCards/adaptiveCardsActions.d.ts +18 -0
  16. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js +53 -23
  17. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js.map +1 -1
  18. package/dist/src/app/agentApplication.d.ts +3 -0
  19. package/dist/src/app/agentApplication.js +140 -81
  20. package/dist/src/app/agentApplication.js.map +1 -1
  21. package/dist/src/app/attachmentDownloader.d.ts +4 -1
  22. package/dist/src/app/attachmentDownloader.js +27 -5
  23. package/dist/src/app/attachmentDownloader.js.map +1 -1
  24. package/dist/src/app/auth/handlers/agenticAuthorization.d.ts +1 -1
  25. package/dist/src/app/auth/handlers/azureBotAuthorization.d.ts +1 -1
  26. package/dist/src/app/auth/types.d.ts +3 -4
  27. package/dist/src/app/index.d.ts +2 -0
  28. package/dist/src/app/index.js.map +1 -1
  29. package/dist/src/app/streaming/streamingResponse.d.ts +56 -0
  30. package/dist/src/app/streaming/streamingResponse.js +250 -26
  31. package/dist/src/app/streaming/streamingResponse.js.map +1 -1
  32. package/dist/src/app/teamsAttachmentDownloader.d.ts +3 -1
  33. package/dist/src/app/teamsAttachmentDownloader.js +12 -1
  34. package/dist/src/app/teamsAttachmentDownloader.js.map +1 -1
  35. package/dist/src/auth/authConfiguration.js +12 -0
  36. package/dist/src/auth/authConfiguration.js.map +1 -1
  37. package/dist/src/auth/index.d.ts +2 -1
  38. package/dist/src/auth/index.js +2 -1
  39. package/dist/src/auth/index.js.map +1 -1
  40. package/dist/src/auth/jwt-middleware.d.ts +6 -0
  41. package/dist/src/auth/jwt-middleware.js +263 -13
  42. package/dist/src/auth/jwt-middleware.js.map +1 -1
  43. package/dist/src/auth/msal/msalConnectionSettings.d.ts +8 -0
  44. package/dist/src/auth/msal/msalHttpRetryHandlerHelper.d.ts +34 -0
  45. package/dist/src/auth/msal/msalHttpRetryHandlerHelper.js +126 -0
  46. package/dist/src/auth/msal/msalHttpRetryHandlerHelper.js.map +1 -0
  47. package/dist/src/auth/msal/msalTokenProvider.d.ts +1 -0
  48. package/dist/src/auth/msal/msalTokenProvider.js +23 -14
  49. package/dist/src/auth/msal/msalTokenProvider.js.map +1 -1
  50. package/dist/src/auth/settings.d.ts +18 -0
  51. package/dist/src/auth/settings.js +8 -2
  52. package/dist/src/auth/settings.js.map +1 -1
  53. package/dist/src/cloudAdapter.d.ts +29 -2
  54. package/dist/src/cloudAdapter.js +44 -2
  55. package/dist/src/cloudAdapter.js.map +1 -1
  56. package/dist/src/errorHelper.js +137 -101
  57. package/dist/src/errorHelper.js.map +1 -1
  58. package/dist/src/index.d.ts +1 -0
  59. package/dist/src/index.js +1 -0
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/invoke/adaptiveCardInvokeValue.d.ts +5 -0
  62. package/dist/src/oauth/userTokenClient.d.ts +0 -1
  63. package/dist/src/oauth/userTokenClient.js +0 -1
  64. package/dist/src/oauth/userTokenClient.js.map +1 -1
  65. package/dist/src/observability/traces.d.ts +6 -0
  66. package/dist/src/observability/traces.js +20 -2
  67. package/dist/src/observability/traces.js.map +1 -1
  68. package/dist/src/outboundHostValidator.d.ts +47 -0
  69. package/dist/src/outboundHostValidator.js +149 -0
  70. package/dist/src/outboundHostValidator.js.map +1 -0
  71. package/dist/src/state/agentState.d.ts +5 -0
  72. package/dist/src/state/agentState.js +16 -3
  73. package/dist/src/state/agentState.js.map +1 -1
  74. package/package.json +3 -3
  75. package/src/agent-client/agentClient.ts +46 -23
  76. package/src/agent-client/agentResponseHandler.ts +14 -9
  77. package/src/agent-client/createAgentResponseHandler.ts +70 -9
  78. package/src/app/adaptiveCards/activityValueParsers.ts +3 -9
  79. package/src/app/adaptiveCards/adaptiveCardsActions.ts +52 -24
  80. package/src/app/agentApplication.ts +149 -77
  81. package/src/app/attachmentDownloader.ts +25 -5
  82. package/src/app/auth/handlers/agenticAuthorization.ts +1 -1
  83. package/src/app/auth/handlers/azureBotAuthorization.ts +1 -1
  84. package/src/app/auth/types.ts +3 -3
  85. package/src/app/index.ts +8 -0
  86. package/src/app/streaming/streamingResponse.ts +276 -22
  87. package/src/app/teamsAttachmentDownloader.ts +11 -1
  88. package/src/auth/authConfiguration.ts +12 -0
  89. package/src/auth/index.ts +2 -1
  90. package/src/auth/jwt-middleware.ts +298 -14
  91. package/src/auth/msal/msalConnectionSettings.ts +10 -0
  92. package/src/auth/msal/msalHttpRetryHandlerHelper.ts +161 -0
  93. package/src/auth/msal/msalTokenProvider.ts +32 -14
  94. package/src/auth/settings.ts +18 -3
  95. package/src/cloudAdapter.ts +56 -3
  96. package/src/errorHelper.ts +155 -114
  97. package/src/index.ts +1 -0
  98. package/src/invoke/adaptiveCardInvokeValue.ts +5 -0
  99. package/src/oauth/userTokenClient.ts +0 -1
  100. package/src/observability/traces.ts +19 -1
  101. package/src/outboundHostValidator.ts +172 -0
  102. package/src/state/agentState.ts +24 -6
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # microsoft/agents-hosting
1
+ # @microsoft/agents-hosting
2
2
 
3
3
  ## Overview
4
4
 
@@ -21,13 +21,28 @@ exposes framework-agnostic primitives that the
21
21
 
22
22
  - `createCloudAdapter(agent, authConfig)` — returns `{ adapter, headerPropagation }` for processing incoming activities. Use this from any web framework.
23
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.
24
+ - `createAgentResponseHandler(adapter, agent, conversationState)` — framework-agnostic handler `(req, res, params) => Promise<void>` for the authenticated SDK-specific Activity callback route.
25
25
  - `AgentResponseHandler`, `AgentResponseHandlerParams`, `AGENT_RESPONSE_ROUTE_PATH` — supporting types and the canonical route path.
26
26
  - `WebResponse`, `NextFunction`, `WebRequestParamsCarrier` — minimal structural interfaces (no Express/Fastify imports) used by the cross-framework helpers above.
27
27
 
28
28
  Most consumers should keep using `startServer`/`createAgentRequestHandler` from the
29
29
  Express or Fastify packages; reach for these APIs when adapting another framework.
30
30
 
31
+ This Activity callback flow is used for SDK-specific Activity-protocol
32
+ delegation.
33
+
34
+ The Activity callback handler authenticates requests once through the supplied
35
+ `CloudAdapter`. That boundary validates the token for any configured host connection;
36
+ the handler then verifies that the caller application matches the delegated agent
37
+ recorded for that conversation. Existing route-level `authorizeJWT` middleware is
38
+ redundant but remains compatible. On configured or production hosts, missing,
39
+ invalid, expired, or wrong-audience tokens return `401`. An authenticated caller
40
+ that does not match the delegated agent, or missing, malformed, or pre-upgrade
41
+ delegated state, returns `403`.
42
+ Anonymous callbacks are supported only for unconfigured development hosts
43
+ outside production and emit a registration warning because peer ownership cannot
44
+ be verified. Pre-upgrade conversations must be restarted.
45
+
31
46
  ## Example Usage based on the AgentApplication object
32
47
 
33
48
  ```ts
@@ -87,3 +102,50 @@ app.post('/api/messages', async (req: Request, res: Response) => {
87
102
  })
88
103
 
89
104
  ```
105
+
106
+ ## Outbound request host validation
107
+
108
+ `OutboundHostValidator` provides an opt-in allowlist for server-side requests made
109
+ to activity service URLs and attachment URLs. Enforcement is disabled by default.
110
+ It can be configured with environment variables:
111
+
112
+ ```dotenv
113
+ OutboundHostValidator__Enabled=true
114
+ OutboundHostValidator__IncludeDefaultMicrosoftHosts=true
115
+ OutboundHostValidator__Hosts=contoso.com,fabrikam.com
116
+ ```
117
+
118
+ Indexed host variables such as `OutboundHostValidator__Hosts__0=contoso.com` are
119
+ also supported. A host entry matches both the exact host and its subdomains, and
120
+ is normalized (scheme/port/path stripped; a leading `*.` is accepted and ignored).
121
+
122
+ When enforcement is enabled, `CloudAdapter` rejects inbound activities whose
123
+ `serviceUrl` host is not allowlisted, and it also rejects `serviceurl` claim
124
+ mismatches (equivalent to `CloudAdapterOptions.validateServiceUrl=true`).
125
+
126
+ For explicit configuration, reuse the same immutable policy in the adapter and
127
+ attachment downloaders:
128
+
129
+ ```ts
130
+ import {
131
+ AgentApplication,
132
+ AttachmentDownloader,
133
+ CloudAdapter,
134
+ OutboundHostValidator
135
+ } from '@microsoft/agents-hosting'
136
+
137
+ const outboundHostValidator = new OutboundHostValidator({
138
+ enabled: true,
139
+ hosts: ['contoso.com']
140
+ })
141
+
142
+ const adapter = new CloudAdapter(undefined, undefined, undefined, undefined, outboundHostValidator)
143
+
144
+ const agent = new AgentApplication({
145
+ adapter,
146
+ fileDownloaders: [new AttachmentDownloader('inputFiles', outboundHostValidator)]
147
+ })
148
+ ```
149
+
150
+ The validator checks the URL supplied to the downloader. Redirects retain native
151
+ `fetch` behavior.
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.2",
4
+ "version": "1.8.0-beta.36.gb033f0abc1",
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.2",
25
- "@microsoft/agents-telemetry": "1.7.2",
24
+ "@microsoft/agents-activity": "1.8.0-beta.36.gb033f0abc1",
25
+ "@microsoft/agents-telemetry": "1.8.0-beta.36.gb033f0abc1",
26
26
  "jsonwebtoken": "9.0.3",
27
27
  "jwks-rsa": "4.0.1",
28
28
  "zod": "3.25.75"
@@ -3,7 +3,11 @@ import { Activity, ConversationReference } from '@microsoft/agents-activity';
3
3
  import { ConversationState } from '../state';
4
4
  import { TurnContext } from '../turnContext';
5
5
  /**
6
- * Configuration settings required to connect to an agent endpoint.
6
+ * Configuration for SDK-specific Activity-protocol delegation.
7
+ *
8
+ * @remarks
9
+ * This configuration is used by the authenticated Activity callback flow and
10
+ * does not describe an open A2A protocol endpoint.
7
11
  */
8
12
  export interface AgentClientConfig {
9
13
  /**
@@ -15,12 +19,12 @@ export interface AgentClientConfig {
15
19
  */
16
20
  clientId: string;
17
21
  /**
18
- * The service URL used for communication with the agent
22
+ * The delegating host's callback base URL.
19
23
  */
20
24
  serviceUrl: string;
21
25
  }
22
26
  /**
23
- * Data structure to store conversation state for agent interactions
27
+ * Conversation state for an SDK-specific delegated Activity exchange.
24
28
  */
25
29
  export interface ConversationData {
26
30
  /**
@@ -31,10 +35,18 @@ export interface ConversationData {
31
35
  * Reference to the conversation for maintaining context across interactions
32
36
  */
33
37
  conversationReference: ConversationReference;
38
+ /**
39
+ * Client ID of the delegated agent allowed to send authenticated Activity
40
+ * callbacks for this conversation.
41
+ */
42
+ expectedAgentClientId?: string;
34
43
  }
35
44
  /**
36
- * Client for communicating with other agents through HTTP requests.
37
- * Manages configuration, authentication, and activity exchange with target agents.
45
+ * Client for SDK-specific Activity-protocol delegation over HTTP.
46
+ *
47
+ * @remarks
48
+ * Manages configuration, authentication, delegated conversation state, and
49
+ * Activity exchange with a target agent.
38
50
  */
39
51
  export declare class AgentClient {
40
52
  /** Configuration settings for the agent client */
@@ -47,7 +59,7 @@ export declare class AgentClient {
47
59
  */
48
60
  constructor(agentConfigKey: string);
49
61
  /**
50
- * Sends an activity to another agent and handles the conversation state.
62
+ * Sends an activity to a delegated agent and stores the callback state.
51
63
  *
52
64
  * @param activity The activity to send to the target agent
53
65
  * @param authConfig Authentication configuration used to obtain access tokens
@@ -5,13 +5,17 @@ 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");
10
11
  const errorHelper_1 = require("../errorHelper");
11
12
  const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
12
13
  /**
13
- * Client for communicating with other agents through HTTP requests.
14
- * Manages configuration, authentication, and activity exchange with target agents.
14
+ * Client for SDK-specific Activity-protocol delegation over HTTP.
15
+ *
16
+ * @remarks
17
+ * Manages configuration, authentication, delegated conversation state, and
18
+ * Activity exchange with a target agent.
15
19
  */
16
20
  class AgentClient {
17
21
  /**
@@ -24,7 +28,7 @@ class AgentClient {
24
28
  this.agentClientConfig = this.loadAgentClientConfig(agentConfigKey);
25
29
  }
26
30
  /**
27
- * Sends an activity to another agent and handles the conversation state.
31
+ * Sends an activity to a delegated agent and stores the callback state.
28
32
  *
29
33
  * @param activity The activity to send to the target agent
30
34
  * @param authConfig Authentication configuration used to obtain access tokens
@@ -53,30 +57,42 @@ class AgentClient {
53
57
  }
54
58
  };
55
59
  activityCopy.conversation.id = (0, crypto_1.randomUUID)();
60
+ const delegatedContext = new turnContext_1.TurnContext(context.adapter, activityCopy, context.identity);
61
+ const delegatedStateKey = { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id };
56
62
  const conversationDataAccessor = conversationState.createProperty(activityCopy.conversation.id);
57
- const convRef = await conversationDataAccessor.set(context, { conversationReference: activity.getConversationReference(), nameRequested: false }, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
58
- const stateChanges = JSON.stringify(convRef);
59
- logger.debug('stateChanges: ', stateChanges);
63
+ await conversationDataAccessor.set(delegatedContext, {
64
+ conversationReference: activity.getConversationReference(),
65
+ nameRequested: false,
66
+ expectedAgentClientId: this.agentClientConfig.clientId
67
+ }, delegatedStateKey);
68
+ logger.debug('stored delegated conversation state');
60
69
  const authProvider = new auth_1.MsalTokenProvider(authConfig);
61
70
  const token = await authProvider.getAccessToken(this.agentClientConfig.clientId);
62
- logger.debug('agent request: ', activityCopy);
71
+ logger.debug('sending activity to delegated agent');
63
72
  let authHeader = ''; // Allow anonymous auth.
64
73
  if (token.trim().length > 0) {
65
74
  authHeader = `Bearer ${token}`;
66
75
  }
67
- await conversationState.saveChanges(context, false, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
68
- const response = await fetch(this.agentClientConfig.endPoint, {
69
- method: 'POST',
70
- headers: {
71
- 'Content-Type': 'application/json',
72
- Authorization: authHeader,
73
- 'x-ms-conversation-id': activityCopy.conversation.id
74
- },
75
- body: JSON.stringify(activityCopy)
76
- });
76
+ await conversationState.saveChanges(delegatedContext, false, delegatedStateKey);
77
+ let response;
78
+ try {
79
+ response = await fetch(this.agentClientConfig.endPoint, {
80
+ method: 'POST',
81
+ headers: {
82
+ 'Content-Type': 'application/json',
83
+ Authorization: authHeader,
84
+ 'x-ms-conversation-id': activityCopy.conversation.id
85
+ },
86
+ body: JSON.stringify(activityCopy)
87
+ });
88
+ }
89
+ catch (error) {
90
+ await conversationState.delete(delegatedContext, delegatedStateKey);
91
+ throw error;
92
+ }
77
93
  record({ httpStatusCode: response.status.toString() });
78
94
  if (!response.ok) {
79
- await conversationDataAccessor.delete(context, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
95
+ await conversationState.delete(delegatedContext, delegatedStateKey);
80
96
  throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.FailedToPostActivityToAgent, undefined, { statusText: response.statusText });
81
97
  }
82
98
  return response.statusText;
@@ -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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"}
@@ -7,10 +7,10 @@ import { CloudAdapter } from '../cloudAdapter';
7
7
  import { ConversationState } from '../state';
8
8
  /**
9
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`.
10
+ * register the SDK-specific Activity callback POST route. Express's `Application`
11
+ * structurally satisfies this. Framework integrations that do not satisfy it
12
+ * should wrap {@link createAgentResponseHandler}; Fastify users should use
13
+ * `configureResponseController` from `@microsoft/agents-hosting-fastify`.
14
14
  *
15
15
  * `WebApp` is a minimal structural shape rather than a richer, named
16
16
  * route-registrar contract. It is exported so it has a stable name in the
@@ -22,24 +22,29 @@ export interface WebApp {
22
22
  post(path: string, handler: (req: any, res: any) => unknown | Promise<unknown>): unknown;
23
23
  }
24
24
  /**
25
- * To enable Agent to Agent communication, configures the agent response controller endpoint for handling incoming activities from external services.
25
+ * Registers the authenticated Activity callback endpoint used by SDK-specific
26
+ * Activity-protocol delegation.
26
27
  *
27
28
  * @remarks
28
- * This function sets up a POST endpoint that receives activities (messages, events, etc.) from external
29
- * services and processes them through the bot framework's activity handling pipeline. It's typically used
30
- * when the agent needs to receive and respond to activities from channels or services that send activities
31
- * to a specific webhook endpoint.
29
+ * This endpoint is part of the Microsoft Agents SDK delegated-agent callback
30
+ * flow
32
31
  *
33
32
  * The endpoint expects activities to be sent to:
34
33
  * `POST /api/agentresponse/v3/conversations/{conversationId}/activities/{activityId}`
35
34
  *
36
35
  * The function handles:
36
+ * - Returning `401` when JWT authentication fails
37
+ * - Returning `403` when delegated state is invalid or the authenticated caller
38
+ * does not own the delegated conversation
37
39
  * - Normalizing incoming activity data from the request body
38
40
  * - Retrieving conversation references from conversation state
39
41
  * - Continuing conversations using the stored conversation reference
40
42
  * - Processing EndOfConversation activities by cleaning up conversation state
41
43
  * - Sending activities through the turn context and returning responses
42
44
  *
45
+ * Anonymous callbacks are supported only for unconfigured development hosts
46
+ * outside production and cannot cryptographically prove callback ownership.
47
+ *
43
48
  * @param app - The application instance (Express `Application` or any framework that satisfies {@link WebApp}) to configure the route on.
44
49
  * @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations.
45
50
  * @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities.
@@ -7,24 +7,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.configureResponseController = void 0;
8
8
  const createAgentResponseHandler_1 = require("./createAgentResponseHandler");
9
9
  /**
10
- * To enable Agent to Agent communication, configures the agent response controller endpoint for handling incoming activities from external services.
10
+ * Registers the authenticated Activity callback endpoint used by SDK-specific
11
+ * Activity-protocol delegation.
11
12
  *
12
13
  * @remarks
13
- * This function sets up a POST endpoint that receives activities (messages, events, etc.) from external
14
- * services and processes them through the bot framework's activity handling pipeline. It's typically used
15
- * when the agent needs to receive and respond to activities from channels or services that send activities
16
- * to a specific webhook endpoint.
14
+ * This endpoint is part of the Microsoft Agents SDK delegated-agent callback
15
+ * flow
17
16
  *
18
17
  * The endpoint expects activities to be sent to:
19
18
  * `POST /api/agentresponse/v3/conversations/{conversationId}/activities/{activityId}`
20
19
  *
21
20
  * The function handles:
21
+ * - Returning `401` when JWT authentication fails
22
+ * - Returning `403` when delegated state is invalid or the authenticated caller
23
+ * does not own the delegated conversation
22
24
  * - Normalizing incoming activity data from the request body
23
25
  * - Retrieving conversation references from conversation state
24
26
  * - Continuing conversations using the stored conversation reference
25
27
  * - Processing EndOfConversation activities by cleaning up conversation state
26
28
  * - Sending activities through the turn context and returning responses
27
29
  *
30
+ * Anonymous callbacks are supported only for unconfigured development hosts
31
+ * outside production and cannot cryptographically prove callback ownership.
32
+ *
28
33
  * @param app - The application instance (Express `Application` or any framework that satisfies {@link WebApp}) to configure the route on.
29
34
  * @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations.
30
35
  * @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities.
@@ -1 +1 @@
1
- {"version":3,"file":"agentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/agentResponseHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,6EAAoG;AAsBpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;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"}
1
+ {"version":3,"file":"agentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/agentResponseHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,6EAAoG;AAsBpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;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"}
@@ -16,7 +16,7 @@ export interface AgentResponseHandlerParams {
16
16
  activityId: string;
17
17
  }
18
18
  /**
19
- * Framework-agnostic handler signature for the agent response controller endpoint.
19
+ * Framework-agnostic handler signature for the SDK-specific Activity callback endpoint.
20
20
  *
21
21
  * @remarks
22
22
  * The handler is intended to be invoked by a thin framework-specific wrapper (such
@@ -25,7 +25,7 @@ export interface AgentResponseHandlerParams {
25
25
  */
26
26
  export type AgentResponseHandler = (req: Request, res: WebResponse, params: AgentResponseHandlerParams) => Promise<void>;
27
27
  /**
28
- * Creates a framework-agnostic handler for the agent response controller endpoint.
28
+ * Creates a framework-agnostic handler for the authenticated Activity callback endpoint.
29
29
  *
30
30
  * This is the core, Express-free implementation used by:
31
31
  * - `configureResponseController` in `@microsoft/agents-hosting-express`
@@ -34,6 +34,11 @@ export type AgentResponseHandler = (req: Request, res: WebResponse, params: Agen
34
34
  * Both wrappers register the canonical route
35
35
  * `POST /api/agentresponse/v3/conversations/:conversationId/activities/:activityId`
36
36
  * and forward the parsed body + path parameters to the handler returned here.
37
+ * The handler returns `401` for failed JWT authentication and `403` when the
38
+ * authenticated caller does not match the delegated agent stored for the
39
+ * conversation, or when that delegated state is missing or malformed.
40
+ *
41
+ * This callback contract is SDK-specific and is not the open A2A protocol.
37
42
  *
38
43
  * @param adapter - The CloudAdapter used for processing activities and managing conversations.
39
44
  * @param agent - The ActivityHandler containing the agent logic.
@@ -12,9 +12,10 @@ const crypto_1 = require("crypto");
12
12
  const activityWireCompat_1 = require("../activityWireCompat");
13
13
  const errorHelper_1 = require("../errorHelper");
14
14
  const agents_telemetry_1 = require("@microsoft/agents-telemetry");
15
+ const jwt_middleware_1 = require("../auth/jwt-middleware");
15
16
  const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
16
17
  /**
17
- * Creates a framework-agnostic handler for the agent response controller endpoint.
18
+ * Creates a framework-agnostic handler for the authenticated Activity callback endpoint.
18
19
  *
19
20
  * This is the core, Express-free implementation used by:
20
21
  * - `configureResponseController` in `@microsoft/agents-hosting-express`
@@ -23,6 +24,11 @@ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
23
24
  * Both wrappers register the canonical route
24
25
  * `POST /api/agentresponse/v3/conversations/:conversationId/activities/:activityId`
25
26
  * and forward the parsed body + path parameters to the handler returned here.
27
+ * The handler returns `401` for failed JWT authentication and `403` when the
28
+ * authenticated caller does not match the delegated agent stored for the
29
+ * conversation, or when that delegated state is missing or malformed.
30
+ *
31
+ * This callback contract is SDK-specific and is not the open A2A protocol.
26
32
  *
27
33
  * @param adapter - The CloudAdapter used for processing activities and managing conversations.
28
34
  * @param agent - The ActivityHandler containing the agent logic.
@@ -30,26 +36,57 @@ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
30
36
  * @returns A handler `(req, res, params) => Promise<void>`.
31
37
  */
32
38
  const createAgentResponseHandler = (adapter, agent, conversationState) => {
39
+ var _a;
40
+ const appId = (_a = adapter.getClientId()) !== null && _a !== void 0 ? _a : '';
41
+ const anonymousDevelopment = appId.length === 0 && process.env.NODE_ENV !== 'production';
42
+ if (anonymousDevelopment) {
43
+ emitAgentResponseWarning('The agent-response endpoint is using anonymous authentication outside production. Callback ownership cannot be cryptographically verified; configure a client ID before deployment.');
44
+ }
33
45
  return async (req, res, params) => {
34
- var _a, _b;
46
+ var _a, _b, _c, _d, _e;
47
+ let middlewareError;
48
+ let nextCalled = false;
49
+ await adapter.authorizeRequest(req, res, (err) => {
50
+ nextCalled = true;
51
+ middlewareError = err;
52
+ });
53
+ if (middlewareError) {
54
+ throw middlewareError;
55
+ }
56
+ if (!nextCalled || res.headersSent) {
57
+ return;
58
+ }
35
59
  if (!req.body) {
36
60
  throw agents_activity_1.ExceptionHelper.generateException(TypeError, errorHelper_1.Errors.MissingRequestBody);
37
61
  }
38
62
  const incoming = (0, activityWireCompat_1.normalizeIncomingActivity)(req.body);
39
63
  const activity = agents_activity_1.Activity.fromObject(incoming);
40
- logger.debug('received response: ', activity);
41
- const connection = adapter.connectionManager.getDefaultConnection();
42
- 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 : '';
43
- const myTurnContext = new turnContext_1.TurnContext(adapter, activity, cloudAdapter_1.CloudAdapter.createIdentity(appId));
64
+ logger.debug('received delegated agent response');
65
+ const continuationAudience = (_a = (0, jwt_middleware_1.getAuthorizedAudience)(req)) !== null && _a !== void 0 ? _a : appId;
66
+ const myTurnContext = new turnContext_1.TurnContext(adapter, activity, cloudAdapter_1.CloudAdapter.createIdentity(continuationAudience));
44
67
  const conversationDataAccessor = conversationState.createProperty(params.conversationId);
45
- const conversationRefState = await conversationDataAccessor.get(myTurnContext, undefined, { channelId: activity.channelId, conversationId: params.conversationId });
68
+ const incomingChannelId = activity.channelId;
69
+ const conversationRefState = await conversationDataAccessor.get(myTurnContext, undefined, { channelId: incomingChannelId, conversationId: params.conversationId });
70
+ if (!isDelegatedConversationState(conversationRefState)) {
71
+ res.status(403).send({ 'agent-response-auth-error': 'caller is not authorized for this conversation' });
72
+ return;
73
+ }
74
+ 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;
75
+ const anonymousCaller = anonymousDevelopment && ((_e = req.user) === null || _e === void 0 ? void 0 : _e.name) === 'anonymous';
76
+ const delegatedAgentMatches = anonymousCaller || (typeof callerClientId === 'string' &&
77
+ callerClientId.length > 0 &&
78
+ callerClientId.toLowerCase() === conversationRefState.expectedAgentClientId.toLowerCase());
79
+ if (!delegatedAgentMatches) {
80
+ res.status(403).send({ 'agent-response-auth-error': 'caller is not authorized for this conversation' });
81
+ return;
82
+ }
46
83
  const callback = async (turnContext) => {
47
84
  activity.applyConversationReference(conversationRefState.conversationReference);
48
85
  turnContext.activity.id = params.activityId;
49
86
  let response;
50
87
  let responseContentType;
51
88
  if (activity.type === agents_activity_1.ActivityTypes.EndOfConversation) {
52
- await conversationDataAccessor.delete(turnContext, { channelId: activity.channelId, conversationId: activity.conversation.id });
89
+ await conversationState.delete(myTurnContext, { channelId: incomingChannelId, conversationId: params.conversationId });
53
90
  applyActivityToTurnContext(turnContext, activity);
54
91
  await agent.run(turnContext);
55
92
  response = (0, crypto_1.randomUUID)().replace(/-/g, '');
@@ -70,6 +107,16 @@ const createAgentResponseHandler = (adapter, agent, conversationState) => {
70
107
  };
71
108
  };
72
109
  exports.createAgentResponseHandler = createAgentResponseHandler;
110
+ function isDelegatedConversationState(state) {
111
+ return typeof (state === null || state === void 0 ? void 0 : state.conversationReference) === 'object' &&
112
+ state.conversationReference !== null &&
113
+ typeof state.expectedAgentClientId === 'string' &&
114
+ state.expectedAgentClientId.trim().length > 0;
115
+ }
116
+ function emitAgentResponseWarning(message) {
117
+ console.warn(`[agents:agent-client] ${message}`);
118
+ logger.warn(message);
119
+ }
73
120
  const applyActivityToTurnContext = (turnContext, activity) => {
74
121
  turnContext.activity.channelData = activity.channelData;
75
122
  turnContext.activity.code = activity.code;
@@ -1 +1 @@
1
- {"version":3,"file":"createAgentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/createAgentResponseHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createAgentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/createAgentResponseHandler.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,7 @@ export declare function parseValueActionName(value: unknown): string;
25
25
  */
26
26
  export declare function parseValueContinuation(value: unknown): string;
27
27
  interface ValueAction {
28
- action: {
29
- type: string;
30
- verb: string;
31
- };
28
+ action: AdaptiveCardInvokeAction;
32
29
  }
33
30
  /**
34
31
  * Parses the given value as a value action execute selector.
@@ -72,7 +72,7 @@ function parseValueActionExecuteSelector(value) {
72
72
  const actionZodSchema = zod_1.z.object({
73
73
  type: zod_1.z.string().min(1),
74
74
  verb: zod_1.z.string().min(1)
75
- });
75
+ }).passthrough();
76
76
  const actionValueExecuteSelector = zod_1.z.object({
77
77
  action: actionZodSchema
78
78
  });
@@ -82,10 +82,7 @@ function parseValueActionExecuteSelector(value) {
82
82
  }
83
83
  const parsedValue = safeParsedValue.data;
84
84
  return {
85
- action: {
86
- type: parsedValue.action.type,
87
- verb: parsedValue.action.verb
88
- }
85
+ action: parsedValue.action
89
86
  };
90
87
  }
91
88
  /**
@@ -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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"}
@@ -67,6 +67,24 @@ export declare class AdaptiveCardsActions<TState extends TurnState> {
67
67
  * @param verb - A string, RegExp, RouteSelector, or an array of these to match the action verb.
68
68
  * @param handler - A function to handle the action execution.
69
69
  * @returns The Teams application instance.
70
+ *
71
+ * @remarks
72
+ * The delivery behavior depends on the action trigger and
73
+ * `adaptiveCardsOptions.actionExecuteResponseType`:
74
+ *
75
+ * | Response type | Automatic trigger | Manual trigger |
76
+ * | --- | --- | --- |
77
+ * | `REPLACE_FOR_INTERACTOR` | User response | User response |
78
+ * | `REPLACE_FOR_ALL` | User response | Shared update |
79
+ * | `NEW_MESSAGE_FOR_ALL` | User response | New message |
80
+ *
81
+ * - **User response** — Return an Adaptive Card invoke response only to the requesting or interacting user.
82
+ * - **Shared update** — Update the shared activity for all users and return an Adaptive Card invoke response to the interacting user.
83
+ * - **New message** — Send a new activity for all users and return a message acknowledgement to the interacting user.
84
+ *
85
+ * Automatic refresh actions always return only an Adaptive Card invoke response.
86
+ * Updating or sending a refreshable card while processing an automatic refresh
87
+ * would cause Teams to invoke the refresh action again.
70
88
  */
71
89
  actionExecute<TData = Record<string, any>>(verb: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[], handler: (context: TurnContext, state: TState, data: TData) => Promise<AdaptiveCard | string>): AgentApplication<TState>;
72
90
  /**