@microsoft/teams.a2a 2.0.1 → 2.0.3
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 +3 -3
- package/dist/server/plugin.d.ts +9 -3
- package/dist/server/plugin.js +22 -7
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -23,11 +23,11 @@ This is a plugin that enables your Teams agent to be used as an A2A agent.
|
|
|
23
23
|
> [!NOTE]
|
|
24
24
|
> The A2A protocol is still early in development and hence this package is fairly experimental.
|
|
25
25
|
|
|
26
|
-
-
|
|
26
|
+
- [What is A2A?](https://google.github.io/A2A)
|
|
27
27
|
|
|
28
28
|
## Server
|
|
29
29
|
|
|
30
|
-
Teams
|
|
30
|
+
Teams SDK allows your applications to easily be accessible via Teams. However, using this plugin, you can also enable your agent to be used as an A2A agent so that it can be used by other A2A clients.
|
|
31
31
|
|
|
32
32
|
### Configuration
|
|
33
33
|
|
|
@@ -91,7 +91,7 @@ app.event(
|
|
|
91
91
|
// The taskContext contains details about the task request
|
|
92
92
|
const result = await myEventHandler(taskContext, accumulateArtifacts);
|
|
93
93
|
await respond(result);
|
|
94
|
-
}
|
|
94
|
+
},
|
|
95
95
|
);
|
|
96
96
|
```
|
|
97
97
|
|
package/dist/server/plugin.d.ts
CHANGED
|
@@ -13,15 +13,20 @@ interface IA2APluginOptions {
|
|
|
13
13
|
* @default '/a2a'
|
|
14
14
|
*/
|
|
15
15
|
path?: `/${string}`;
|
|
16
|
+
/**
|
|
17
|
+
* Path to the agent card
|
|
18
|
+
* @default '/a2a/.well-known/agent-card.json'
|
|
19
|
+
*/
|
|
20
|
+
agentCardPath?: string;
|
|
16
21
|
/**
|
|
17
22
|
* taskStore which stores the tasks that are sent to the agent
|
|
18
23
|
* or that the agent sends. If not provided, the App's storage will be used.
|
|
19
24
|
*/
|
|
20
25
|
taskStore?: TaskStore;
|
|
21
26
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
* For a completely custom executor, you may provide your own executor that will
|
|
28
|
+
* get executed whenever the a2a agent is InMemoryTaskStore
|
|
29
|
+
*/
|
|
25
30
|
agentExecutor?: AgentExecutor;
|
|
26
31
|
}
|
|
27
32
|
export type Respond = (message: string | Message | Task) => Promise<void>;
|
|
@@ -39,6 +44,7 @@ export declare class A2APlugin implements IPlugin {
|
|
|
39
44
|
__eventType: A2AEvents;
|
|
40
45
|
readonly card: AgentCard;
|
|
41
46
|
readonly path: string;
|
|
47
|
+
readonly agentCardPath: string;
|
|
42
48
|
readonly taskStore: TaskStore;
|
|
43
49
|
readonly customExecutor?: AgentExecutor;
|
|
44
50
|
private readonly middlewares;
|
package/dist/server/plugin.js
CHANGED
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.A2APlugin = void 0;
|
|
16
16
|
const node_crypto_1 = require("node:crypto");
|
|
17
|
+
const sdk_1 = require("@a2a-js/sdk");
|
|
17
18
|
const server_1 = require("@a2a-js/sdk/server");
|
|
18
19
|
const express_1 = require("@a2a-js/sdk/server/express");
|
|
19
20
|
const express_2 = __importDefault(require("express"));
|
|
@@ -25,12 +26,21 @@ let A2APlugin = class A2APlugin {
|
|
|
25
26
|
__eventType;
|
|
26
27
|
card;
|
|
27
28
|
path;
|
|
29
|
+
agentCardPath;
|
|
28
30
|
taskStore;
|
|
29
31
|
customExecutor;
|
|
30
32
|
middlewares = [];
|
|
31
33
|
constructor(options) {
|
|
32
34
|
this.card = options.agentCard;
|
|
33
|
-
|
|
35
|
+
if (options.path) {
|
|
36
|
+
this.path = options.path.startsWith('/')
|
|
37
|
+
? options.path
|
|
38
|
+
: `/${options.path}`;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.path = '/a2a';
|
|
42
|
+
}
|
|
43
|
+
this.agentCardPath = options.agentCardPath ?? sdk_1.AGENT_CARD_PATH;
|
|
34
44
|
this.taskStore = options.taskStore ?? new server_1.InMemoryTaskStore();
|
|
35
45
|
this.customExecutor = options.agentExecutor;
|
|
36
46
|
}
|
|
@@ -41,8 +51,13 @@ let A2APlugin = class A2APlugin {
|
|
|
41
51
|
const a2aExpressApp = new express_1.A2AExpressApp(this._setupRequestHandler());
|
|
42
52
|
const expressApp = (0, express_2.default)();
|
|
43
53
|
// Combine logging middleware with custom middlewares
|
|
44
|
-
const allMiddlewares = [
|
|
45
|
-
|
|
54
|
+
const allMiddlewares = [
|
|
55
|
+
this._createLoggingMiddleware(),
|
|
56
|
+
...this.middlewares,
|
|
57
|
+
];
|
|
58
|
+
a2aExpressApp.setupRoutes(expressApp, this.path, allMiddlewares, this.agentCardPath);
|
|
59
|
+
this.log.info(`A2A agent set up at ${this.path}/${this.agentCardPath}`);
|
|
60
|
+
this.log.info(`A2A agent listening at ${this.path}`);
|
|
46
61
|
this._httpPlugin.use(expressApp);
|
|
47
62
|
}
|
|
48
63
|
_createLoggingMiddleware() {
|
|
@@ -78,11 +93,11 @@ let A2APlugin = class A2APlugin {
|
|
|
78
93
|
eventBus.publish(responseMessage);
|
|
79
94
|
eventBus.finished();
|
|
80
95
|
},
|
|
81
|
-
publishUpdate: eventBus.publish.bind(eventBus)
|
|
96
|
+
publishUpdate: eventBus.publish.bind(eventBus),
|
|
82
97
|
};
|
|
83
98
|
this.emit('a2a:message', ctx);
|
|
84
99
|
},
|
|
85
|
-
cancelTask: async () => { }
|
|
100
|
+
cancelTask: async () => { },
|
|
86
101
|
};
|
|
87
102
|
return executor;
|
|
88
103
|
}
|
|
@@ -107,8 +122,8 @@ exports.A2APlugin = A2APlugin = __decorate([
|
|
|
107
122
|
(0, teams_apps_1.Plugin)({
|
|
108
123
|
name: 'a2a',
|
|
109
124
|
description: 'A2A Server Plugin',
|
|
110
|
-
version: '0.3.0'
|
|
125
|
+
version: '0.3.0',
|
|
111
126
|
}),
|
|
112
127
|
__metadata("design:paramtypes", [Object])
|
|
113
128
|
], A2APlugin);
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBRXpDLHFDQUF3RTtBQUN4RSwrQ0FRNEI7QUFDNUIsd0RBQTJEO0FBQzNELHNEQUFrRDtBQUVsRCxzREFRK0I7QUFnRHhCLElBQU0sU0FBUyxHQUFmLE1BQU0sU0FBUztJQUVKLEdBQUcsQ0FBVztJQUdYLElBQUksQ0FBOEI7SUFHbEMsV0FBVyxDQUFjO0lBQzVDLFdBQVcsQ0FBYTtJQUVSLElBQUksQ0FBWTtJQUNoQixJQUFJLENBQVM7SUFDYixhQUFhLENBQVM7SUFDdEIsU0FBUyxDQUFZO0lBQ3JCLGNBQWMsQ0FBaUI7SUFDOUIsV0FBVyxHQUFxQixFQUFFLENBQUM7SUFFcEQsWUFBWSxPQUEwQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDZCxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLHFCQUFlLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksMEJBQWlCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVE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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/teams.a2a",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@a2a-js/sdk": "^0.3.4",
|
|
33
|
-
"@microsoft/teams.ai": "2.0.
|
|
34
|
-
"@microsoft/teams.apps": "2.0.
|
|
35
|
-
"@microsoft/teams.common": "2.0.
|
|
33
|
+
"@microsoft/teams.ai": "2.0.3",
|
|
34
|
+
"@microsoft/teams.apps": "2.0.3",
|
|
35
|
+
"@microsoft/teams.common": "2.0.3"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@microsoft/teams.config": "2.0.
|
|
38
|
+
"@microsoft/teams.config": "2.0.3",
|
|
39
39
|
"@types/jest": "^29.5.12",
|
|
40
40
|
"@types/lodash.camelcase": "^4.3.9",
|
|
41
41
|
"@types/node": "^22.0.2",
|