@microsoft/agents-hosting 1.7.0-beta.1.g8bcd4f11a7 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/package.json +3 -3
- package/dist/src/agent-client/agentClient.js +4 -3
- package/dist/src/agent-client/agentClient.js.map +1 -1
- package/dist/src/agent-client/agentResponseHandler.d.ts +25 -6
- package/dist/src/agent-client/agentResponseHandler.js +16 -55
- package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
- package/dist/src/agent-client/createAgentResponseHandler.d.ts +48 -0
- package/dist/src/agent-client/createAgentResponseHandler.js +92 -0
- package/dist/src/agent-client/createAgentResponseHandler.js.map +1 -0
- package/dist/src/agent-client/index.d.ts +1 -0
- package/dist/src/agent-client/index.js +1 -0
- package/dist/src/agent-client/index.js.map +1 -1
- package/dist/src/app/adaptiveCards/activityValueParsers.js +2 -1
- package/dist/src/app/adaptiveCards/activityValueParsers.js.map +1 -1
- package/dist/src/app/adaptiveCards/adaptiveCardsActions.js +13 -12
- package/dist/src/app/adaptiveCards/adaptiveCardsActions.js.map +1 -1
- package/dist/src/app/agentApplication.js +8 -8
- package/dist/src/app/agentApplication.js.map +1 -1
- package/dist/src/app/streaming/streamingResponse.js +2 -2
- package/dist/src/app/streaming/streamingResponse.js.map +1 -1
- package/dist/src/app/turnState.d.ts +0 -1
- package/dist/src/app/turnState.js +15 -14
- package/dist/src/app/turnState.js.map +1 -1
- package/dist/src/app/turnStateProperty.js +4 -2
- package/dist/src/app/turnStateProperty.js.map +1 -1
- package/dist/src/auth/authConfiguration.js +5 -3
- package/dist/src/auth/authConfiguration.js.map +1 -1
- package/dist/src/auth/jwt-middleware.d.ts +2 -2
- package/dist/src/auth/jwt-middleware.js +84 -6
- package/dist/src/auth/jwt-middleware.js.map +1 -1
- package/dist/src/auth/msal/msalTokenProvider.js +16 -16
- package/dist/src/auth/msal/msalTokenProvider.js.map +1 -1
- package/dist/src/baseAdapter.js +3 -1
- package/dist/src/baseAdapter.js.map +1 -1
- package/dist/src/cloudAdapter.d.ts +2 -2
- package/dist/src/cloudAdapter.js +10 -10
- package/dist/src/cloudAdapter.js.map +1 -1
- package/dist/src/createCloudAdapter.d.ts +40 -0
- package/dist/src/createCloudAdapter.js +44 -0
- package/dist/src/createCloudAdapter.js.map +1 -0
- package/dist/src/errorHelper.js +206 -79
- package/dist/src/errorHelper.js.map +1 -1
- package/dist/src/headerPropagation.js +3 -1
- package/dist/src/headerPropagation.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces/index.d.ts +5 -0
- package/dist/src/interfaces/index.js +22 -0
- package/dist/src/interfaces/index.js.map +1 -0
- package/dist/src/interfaces/webResponse.d.ts +41 -0
- package/dist/src/interfaces/webResponse.js +7 -0
- package/dist/src/interfaces/webResponse.js.map +1 -0
- package/dist/src/middlewareSet.d.ts +0 -1
- package/dist/src/middlewareSet.js +4 -1
- package/dist/src/middlewareSet.js.map +1 -1
- package/dist/src/oauth/userTokenClient.js +2 -1
- package/dist/src/oauth/userTokenClient.js.map +1 -1
- package/dist/src/state/conversationState.js +4 -2
- package/dist/src/state/conversationState.js.map +1 -1
- package/dist/src/state/userState.js +4 -2
- package/dist/src/state/userState.js.map +1 -1
- package/dist/src/storage/memoryStorage.js +5 -3
- package/dist/src/storage/memoryStorage.js.map +1 -1
- package/dist/src/transcript/consoleTranscriptLogger.js +3 -1
- package/dist/src/transcript/consoleTranscriptLogger.js.map +1 -1
- package/dist/src/transcript/fileTranscriptLogger.js +5 -4
- package/dist/src/transcript/fileTranscriptLogger.js.map +1 -1
- package/dist/src/transcript/transcriptLoggerMiddleware.js +2 -1
- package/dist/src/transcript/transcriptLoggerMiddleware.js.map +1 -1
- package/dist/src/turnContext.js +2 -1
- package/dist/src/turnContext.js.map +1 -1
- package/package.json +3 -3
- package/src/agent-client/agentClient.ts +5 -4
- package/src/agent-client/agentResponseHandler.ts +43 -67
- package/src/agent-client/createAgentResponseHandler.ts +133 -0
- package/src/agent-client/index.ts +1 -0
- package/src/app/adaptiveCards/activityValueParsers.ts +3 -2
- package/src/app/adaptiveCards/adaptiveCardsActions.ts +5 -5
- package/src/app/agentApplication.ts +8 -16
- package/src/app/streaming/streamingResponse.ts +2 -2
- package/src/app/turnState.ts +15 -14
- package/src/app/turnStateProperty.ts +4 -2
- package/src/auth/authConfiguration.ts +5 -3
- package/src/auth/jwt-middleware.ts +87 -8
- package/src/auth/msal/msalTokenProvider.ts +16 -16
- package/src/baseAdapter.ts +3 -2
- package/src/cloudAdapter.ts +12 -12
- package/src/createCloudAdapter.ts +56 -0
- package/src/errorHelper.ts +244 -89
- package/src/headerPropagation.ts +4 -1
- package/src/index.ts +2 -0
- package/src/interfaces/index.ts +6 -0
- package/src/interfaces/webResponse.ts +44 -0
- package/src/middlewareSet.ts +3 -1
- package/src/oauth/userTokenClient.ts +3 -2
- package/src/state/conversationState.ts +4 -3
- package/src/state/userState.ts +4 -3
- package/src/storage/memoryStorage.ts +5 -3
- package/src/transcript/consoleTranscriptLogger.ts +3 -2
- package/src/transcript/fileTranscriptLogger.ts +6 -5
- package/src/transcript/transcriptLoggerMiddleware.ts +3 -2
- package/src/turnContext.ts +3 -2
package/README.md
CHANGED
|
@@ -12,6 +12,22 @@ 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
|
+
|
|
15
31
|
## Example Usage based on the AgentApplication object
|
|
16
32
|
|
|
17
33
|
```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.
|
|
4
|
+
"version": "1.7.1",
|
|
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.
|
|
25
|
-
"@microsoft/agents-telemetry": "1.7.
|
|
24
|
+
"@microsoft/agents-activity": "1.7.1",
|
|
25
|
+
"@microsoft/agents-telemetry": "1.7.1",
|
|
26
26
|
"jsonwebtoken": "9.0.3",
|
|
27
27
|
"jwks-rsa": "4.0.1",
|
|
28
28
|
"zod": "3.25.75"
|
|
@@ -7,6 +7,7 @@ const crypto_1 = require("crypto");
|
|
|
7
7
|
const agents_telemetry_1 = require("@microsoft/agents-telemetry");
|
|
8
8
|
const agents_telemetry_2 = require("@microsoft/agents-telemetry");
|
|
9
9
|
const observability_1 = require("../observability");
|
|
10
|
+
const errorHelper_1 = require("../errorHelper");
|
|
10
11
|
const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
|
|
11
12
|
/**
|
|
12
13
|
* Client for communicating with other agents through HTTP requests.
|
|
@@ -76,7 +77,7 @@ class AgentClient {
|
|
|
76
77
|
record({ httpStatusCode: response.status.toString() });
|
|
77
78
|
if (!response.ok) {
|
|
78
79
|
await conversationDataAccessor.delete(context, { channelId: activityCopy.channelId, conversationId: activityCopy.conversation.id });
|
|
79
|
-
throw
|
|
80
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.FailedToPostActivityToAgent, undefined, { statusText: response.statusText });
|
|
80
81
|
}
|
|
81
82
|
return response.statusText;
|
|
82
83
|
});
|
|
@@ -101,11 +102,11 @@ class AgentClient {
|
|
|
101
102
|
};
|
|
102
103
|
}
|
|
103
104
|
else {
|
|
104
|
-
throw
|
|
105
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.MissingAgentClientConfig, undefined, { agentName });
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
108
|
else {
|
|
108
|
-
throw
|
|
109
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.AgentNameRequired);
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentClient.js","sourceRoot":"","sources":["../../../src/agent-client/agentClient.ts"],"names":[],"mappings":";;;AAAA,kCAA8D;AAC9D,
|
|
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
|
*
|
|
@@ -21,10 +40,10 @@ import { ConversationState } from '../state';
|
|
|
21
40
|
* - Processing EndOfConversation activities by cleaning up conversation state
|
|
22
41
|
* - Sending activities through the turn context and returning responses
|
|
23
42
|
*
|
|
24
|
-
* @param app - The
|
|
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
|
|
43
|
+
* @param app - The application instance (Express `Application` or any framework that satisfies {@link WebApp}) to configure the route on.
|
|
44
|
+
* @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations.
|
|
45
|
+
* @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities.
|
|
46
|
+
* @param conversationState - The ConversationState instance used for managing conversation-specific state and conversation references.
|
|
28
47
|
*
|
|
29
48
|
* @example
|
|
30
49
|
* ```typescript
|
|
@@ -36,4 +55,4 @@ import { ConversationState } from '../state';
|
|
|
36
55
|
* configureResponseController(app, adapter, agent, conversationState);
|
|
37
56
|
* ```
|
|
38
57
|
*/
|
|
39
|
-
export declare const configureResponseController: (app:
|
|
58
|
+
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
|
|
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
|
*
|
|
@@ -27,10 +25,10 @@ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
|
|
|
27
25
|
* - Processing EndOfConversation activities by cleaning up conversation state
|
|
28
26
|
* - Sending activities through the turn context and returning responses
|
|
29
27
|
*
|
|
30
|
-
* @param app - The
|
|
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
|
|
28
|
+
* @param app - The application instance (Express `Application` or any framework that satisfies {@link WebApp}) to configure the route on.
|
|
29
|
+
* @param adapter - The CloudAdapter instance used for processing bot framework activities and managing conversations.
|
|
30
|
+
* @param agent - The ActivityHandler instance that contains the bot's logic for processing different types of activities.
|
|
31
|
+
* @param conversationState - The ConversationState instance used for managing conversation-specific state and conversation references.
|
|
34
32
|
*
|
|
35
33
|
* @example
|
|
36
34
|
* ```typescript
|
|
@@ -43,50 +41,13 @@ const logger = (0, agents_telemetry_1.debug)('agents:agent-client');
|
|
|
43
41
|
* ```
|
|
44
42
|
*/
|
|
45
43
|
const configureResponseController = (app, adapter, agent, conversationState) => {
|
|
46
|
-
|
|
44
|
+
const handler = (0, createAgentResponseHandler_1.createAgentResponseHandler)(adapter, agent, conversationState);
|
|
45
|
+
app.post(createAgentResponseHandler_1.AGENT_RESPONSE_ROUTE_PATH, async (req, res) => {
|
|
46
|
+
await handler(req, res, {
|
|
47
|
+
conversationId: req.params.conversationId,
|
|
48
|
+
activityId: req.params.activityId
|
|
49
|
+
});
|
|
50
|
+
});
|
|
47
51
|
};
|
|
48
52
|
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
53
|
//# sourceMappingURL=agentResponseHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/agentResponseHandler.ts"],"names":[],"mappings":";;;
|
|
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"}
|
|
@@ -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,92 @@
|
|
|
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 logger = (0, agents_telemetry_1.debug)('agents:agent-client');
|
|
16
|
+
/**
|
|
17
|
+
* Creates a framework-agnostic handler for the agent response controller endpoint.
|
|
18
|
+
*
|
|
19
|
+
* This is the core, Express-free implementation used by:
|
|
20
|
+
* - `configureResponseController` in `@microsoft/agents-hosting-express`
|
|
21
|
+
* - `configureResponseController` in `@microsoft/agents-hosting-fastify`
|
|
22
|
+
*
|
|
23
|
+
* Both wrappers register the canonical route
|
|
24
|
+
* `POST /api/agentresponse/v3/conversations/:conversationId/activities/:activityId`
|
|
25
|
+
* and forward the parsed body + path parameters to the handler returned here.
|
|
26
|
+
*
|
|
27
|
+
* @param adapter - The CloudAdapter used for processing activities and managing conversations.
|
|
28
|
+
* @param agent - The ActivityHandler containing the agent logic.
|
|
29
|
+
* @param conversationState - The ConversationState used to look up the stored conversation reference.
|
|
30
|
+
* @returns A handler `(req, res, params) => Promise<void>`.
|
|
31
|
+
*/
|
|
32
|
+
const createAgentResponseHandler = (adapter, agent, conversationState) => {
|
|
33
|
+
return async (req, res, params) => {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
if (!req.body) {
|
|
36
|
+
throw agents_activity_1.ExceptionHelper.generateException(TypeError, errorHelper_1.Errors.MissingRequestBody);
|
|
37
|
+
}
|
|
38
|
+
const incoming = (0, activityWireCompat_1.normalizeIncomingActivity)(req.body);
|
|
39
|
+
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));
|
|
44
|
+
const conversationDataAccessor = conversationState.createProperty(params.conversationId);
|
|
45
|
+
const conversationRefState = await conversationDataAccessor.get(myTurnContext, undefined, { channelId: activity.channelId, conversationId: params.conversationId });
|
|
46
|
+
const callback = async (turnContext) => {
|
|
47
|
+
activity.applyConversationReference(conversationRefState.conversationReference);
|
|
48
|
+
turnContext.activity.id = params.activityId;
|
|
49
|
+
let response;
|
|
50
|
+
let responseContentType;
|
|
51
|
+
if (activity.type === agents_activity_1.ActivityTypes.EndOfConversation) {
|
|
52
|
+
await conversationDataAccessor.delete(turnContext, { channelId: activity.channelId, conversationId: activity.conversation.id });
|
|
53
|
+
applyActivityToTurnContext(turnContext, activity);
|
|
54
|
+
await agent.run(turnContext);
|
|
55
|
+
response = (0, crypto_1.randomUUID)().replace(/-/g, '');
|
|
56
|
+
// Explicitly set the content-type so Express and Fastify both emit the same
|
|
57
|
+
// value for this raw-string body (Express defaults to text/html, Fastify to
|
|
58
|
+
// text/plain when the framework auto-detects).
|
|
59
|
+
responseContentType = 'text/plain; charset=utf-8';
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
response = await turnContext.sendActivity(activity);
|
|
63
|
+
}
|
|
64
|
+
if (responseContentType !== undefined) {
|
|
65
|
+
res.setHeader('content-type', responseContentType);
|
|
66
|
+
}
|
|
67
|
+
res.status(200).send(response);
|
|
68
|
+
};
|
|
69
|
+
await adapter.continueConversation(myTurnContext.identity, conversationRefState.conversationReference, callback);
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
exports.createAgentResponseHandler = createAgentResponseHandler;
|
|
73
|
+
const applyActivityToTurnContext = (turnContext, activity) => {
|
|
74
|
+
turnContext.activity.channelData = activity.channelData;
|
|
75
|
+
turnContext.activity.code = activity.code;
|
|
76
|
+
turnContext.activity.entities = activity.entities;
|
|
77
|
+
turnContext.activity.locale = activity.locale;
|
|
78
|
+
turnContext.activity.localTimestamp = activity.localTimestamp;
|
|
79
|
+
turnContext.activity.name = activity.name;
|
|
80
|
+
turnContext.activity.relatesTo = activity.relatesTo;
|
|
81
|
+
turnContext.activity.replyToId = activity.replyToId;
|
|
82
|
+
turnContext.activity.timestamp = activity.timestamp;
|
|
83
|
+
turnContext.activity.text = activity.text;
|
|
84
|
+
turnContext.activity.type = activity.type;
|
|
85
|
+
turnContext.activity.value = activity.value;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Canonical route path for the agent response controller endpoint.
|
|
89
|
+
* Both Express and Fastify wrappers should register on this path.
|
|
90
|
+
*/
|
|
91
|
+
exports.AGENT_RESPONSE_ROUTE_PATH = '/api/agentresponse/v3/conversations/:conversationId/activities/:activityId';
|
|
92
|
+
//# sourceMappingURL=createAgentResponseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAgentResponseHandler.js","sourceRoot":"","sources":["../../../src/agent-client/createAgentResponseHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gEAA4G;AAE5G,kDAA8C;AAG9C,gDAA4C;AAC5C,mCAAmC;AACnC,8DAAiE;AACjE,gDAAuC;AACvC,kEAAmD;AAGnD,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,qBAAqB,CAAC,CAAA;AA6B3C;;;;;;;;;;;;;;;GAeG;AACI,MAAM,0BAA0B,GAAG,CACxC,OAAqB,EACrB,KAAsB,EACtB,iBAAoC,EACd,EAAE;IACxB,OAAO,KAAK,EAAE,GAAY,EAAE,GAAgB,EAAE,MAAkC,EAAE,EAAE;;QAClF,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,iCAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,oBAAM,CAAC,kBAAkB,CAAC,CAAA;QAC/E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAA,8CAAyB,EAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,0BAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAE9C,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;QAE7C,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAA;QACnE,MAAM,KAAK,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,kBAAkB,0CAAE,QAAQ,mCAAI,EAAE,CAAA;QAE5D,MAAM,aAAa,GAAG,IAAI,yBAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5F,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,cAAc,CAA6B,MAAM,CAAC,cAAc,CAAC,CAAA;QACpH,MAAM,oBAAoB,GAAG,MAAM,wBAAwB,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAU,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;QAEpK,MAAM,QAAQ,GAAG,KAAK,EAAE,WAAwB,EAAE,EAAE;YAClD,QAAQ,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;YAC/E,WAAW,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAA;YAE3C,IAAI,QAAiB,CAAA;YACrB,IAAI,mBAAuC,CAAA;YAC3C,IAAI,QAAQ,CAAC,IAAI,KAAK,+BAAa,CAAC,iBAAiB,EAAE,CAAC;gBACtD,MAAM,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,YAAa,CAAC,EAAE,EAAE,CAAC,CAAA;gBAEjI,0BAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;gBACjD,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;gBAE5B,QAAQ,GAAG,IAAA,mBAAU,GAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBACzC,4EAA4E;gBAC5E,4EAA4E;gBAC5E,+CAA+C;gBAC/C,mBAAmB,GAAG,2BAA2B,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YACrD,CAAC;YACD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBACtC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAA;YACpD,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAA;QAED,MAAM,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,EAAE,oBAAoB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;IAClH,CAAC,CAAA;AACH,CAAC,CAAA;AAjDY,QAAA,0BAA0B,8BAiDtC;AAED,MAAM,0BAA0B,GAAG,CAAC,WAAwB,EAAE,QAAkB,EAAE,EAAE;IAClF,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;AAED;;;GAGG;AACU,QAAA,yBAAyB,GAAG,4EAA4E,CAAA"}
|
|
@@ -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"}
|
|
@@ -20,6 +20,7 @@ const zod_1 = require("zod");
|
|
|
20
20
|
const agents_activity_1 = require("@microsoft/agents-activity");
|
|
21
21
|
// import { MessagingExtensionQuery, messagingExtensionQueryZodSchema } from '../messageExtension/messagingExtensionQuery'
|
|
22
22
|
const adaptiveCardsSearchParams_1 = require("./adaptiveCardsSearchParams");
|
|
23
|
+
const errorHelper_1 = require("../../errorHelper");
|
|
23
24
|
/**
|
|
24
25
|
* Parses the given value as a value action.
|
|
25
26
|
*
|
|
@@ -78,7 +79,7 @@ function parseValueActionExecuteSelector(value) {
|
|
|
78
79
|
});
|
|
79
80
|
const safeParsedValue = actionValueExecuteSelector.passthrough().safeParse(value);
|
|
80
81
|
if (!safeParsedValue.success) {
|
|
81
|
-
throw
|
|
82
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.InvalidActionValue, undefined, { error: String(safeParsedValue.error) });
|
|
82
83
|
}
|
|
83
84
|
const parsedValue = safeParsedValue.data;
|
|
84
85
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityValueParsers.js","sourceRoot":"","sources":["../../../../src/app/adaptiveCards/activityValueParsers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"activityValueParsers.js","sourceRoot":"","sources":["../../../../src/app/adaptiveCards/activityValueParsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ const agents_activity_1 = require("@microsoft/agents-activity");
|
|
|
9
9
|
const __1 = require("../../");
|
|
10
10
|
const adaptiveCardActionExecuteResponseType_1 = require("./adaptiveCardActionExecuteResponseType");
|
|
11
11
|
const activityValueParsers_1 = require("./activityValueParsers");
|
|
12
|
+
const errorHelper_1 = require("../../errorHelper");
|
|
12
13
|
exports.ACTION_INVOKE_NAME = 'adaptiveCard/action';
|
|
13
14
|
const ACTION_EXECUTE_TYPE = 'Action.Execute';
|
|
14
15
|
const DEFAULT_ACTION_SUBMIT_FILTER = 'verb';
|
|
@@ -55,20 +56,20 @@ class AdaptiveCardsActions {
|
|
|
55
56
|
(Array.isArray(verb) ? verb : [verb]).forEach((v) => {
|
|
56
57
|
const selector = createActionExecuteSelector(v);
|
|
57
58
|
this._app.addRoute(selector, async (context, state) => {
|
|
58
|
-
var _a;
|
|
59
|
+
var _a, _b;
|
|
59
60
|
const a = context === null || context === void 0 ? void 0 : context.activity;
|
|
60
61
|
const invokeAction = (0, activityValueParsers_1.parseValueActionExecuteSelector)(a.value);
|
|
61
62
|
if ((a === null || a === void 0 ? void 0 : a.type) !== agents_activity_1.ActivityTypes.Invoke ||
|
|
62
63
|
(a === null || a === void 0 ? void 0 : a.name) !== exports.ACTION_INVOKE_NAME ||
|
|
63
64
|
((invokeAction === null || invokeAction === void 0 ? void 0 : invokeAction.action.type) !== ACTION_EXECUTE_TYPE)) {
|
|
64
|
-
throw
|
|
65
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.UnexpectedActionExecute, undefined, { activityType: (_a = invokeAction === null || invokeAction === void 0 ? void 0 : invokeAction.action.type) !== null && _a !== void 0 ? _a : 'undefined' });
|
|
65
66
|
}
|
|
66
67
|
if (invokeAction.action.verb !== v) {
|
|
67
68
|
// TODO: add logger to this class
|
|
68
69
|
console.log(`AdaptiveCards.actionExecute() triggered for verb: ${invokeAction.action.verb} does not match expected verb: ${v}`);
|
|
69
70
|
}
|
|
70
71
|
// TODO: review any, and check verb
|
|
71
|
-
const result = await handler(context, state, (
|
|
72
|
+
const result = await handler(context, state, (_b = a.value.action) !== null && _b !== void 0 ? _b : {});
|
|
72
73
|
if (!context.turnState.get(__1.INVOKE_RESPONSE_KEY)) {
|
|
73
74
|
let response;
|
|
74
75
|
if (typeof result === 'string') {
|
|
@@ -126,12 +127,12 @@ class AdaptiveCardsActions {
|
|
|
126
127
|
(Array.isArray(verb) ? verb : [verb]).forEach((v) => {
|
|
127
128
|
const selector = createActionSubmitSelector(v, filter);
|
|
128
129
|
this._app.addRoute(selector, async (context, state) => {
|
|
129
|
-
var _a;
|
|
130
|
+
var _a, _b;
|
|
130
131
|
const a = context === null || context === void 0 ? void 0 : context.activity;
|
|
131
132
|
if ((a === null || a === void 0 ? void 0 : a.type) !== agents_activity_1.ActivityTypes.Message || (a === null || a === void 0 ? void 0 : a.text) || typeof (a === null || a === void 0 ? void 0 : a.value) !== 'object') {
|
|
132
|
-
throw
|
|
133
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.UnexpectedActionSubmit, undefined, { activityType: (_a = a === null || a === void 0 ? void 0 : a.type) !== null && _a !== void 0 ? _a : 'undefined' });
|
|
133
134
|
}
|
|
134
|
-
await handler(context, state, (
|
|
135
|
+
await handler(context, state, (_b = ((0, activityValueParsers_1.parseAdaptiveCardInvokeAction)(a.value))) !== null && _b !== void 0 ? _b : {});
|
|
135
136
|
});
|
|
136
137
|
});
|
|
137
138
|
return this._app;
|
|
@@ -147,18 +148,18 @@ class AdaptiveCardsActions {
|
|
|
147
148
|
(Array.isArray(dataset) ? dataset : [dataset]).forEach((ds) => {
|
|
148
149
|
const selector = createSearchSelector(ds);
|
|
149
150
|
this._app.addRoute(selector, async (context, state) => {
|
|
150
|
-
var _a, _b, _c, _d, _e, _f;
|
|
151
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
151
152
|
const a = context === null || context === void 0 ? void 0 : context.activity;
|
|
152
153
|
if ((a === null || a === void 0 ? void 0 : a.type) !== 'invoke' || (a === null || a === void 0 ? void 0 : a.name) !== SEARCH_INVOKE_NAME) {
|
|
153
|
-
throw
|
|
154
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.UnexpectedSearchAction, undefined, { activityType: (_a = a === null || a === void 0 ? void 0 : a.type) !== null && _a !== void 0 ? _a : 'undefined' });
|
|
154
155
|
}
|
|
155
156
|
const parsedQuery = (0, activityValueParsers_1.parseValueSearchQuery)(a.value);
|
|
156
157
|
const query = {
|
|
157
|
-
count: (
|
|
158
|
-
skip: (
|
|
158
|
+
count: (_c = (_b = parsedQuery.queryOptions) === null || _b === void 0 ? void 0 : _b.top) !== null && _c !== void 0 ? _c : 25,
|
|
159
|
+
skip: (_e = (_d = parsedQuery.queryOptions) === null || _d === void 0 ? void 0 : _d.skip) !== null && _e !== void 0 ? _e : 0,
|
|
159
160
|
parameters: {
|
|
160
|
-
queryText: (
|
|
161
|
-
dataset: (
|
|
161
|
+
queryText: (_f = parsedQuery.queryText) !== null && _f !== void 0 ? _f : '',
|
|
162
|
+
dataset: (_g = parsedQuery.dataset) !== null && _g !== void 0 ? _g : ''
|
|
162
163
|
}
|
|
163
164
|
};
|
|
164
165
|
const results = await handler(context, state, query);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptiveCardsActions.js","sourceRoot":"","sources":["../../../../src/app/adaptiveCards/adaptiveCardsActions.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"adaptiveCardsActions.js","sourceRoot":"","sources":["../../../../src/app/adaptiveCards/adaptiveCardsActions.ts"],"names":[],"mappings":"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"}
|