@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 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
- - [What is A2A?](https://google.github.io/A2A)
26
+ - [What is A2A?](https://google.github.io/A2A)
27
27
 
28
28
  ## Server
29
29
 
30
- Teams AI Library 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.
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
 
@@ -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
- * For a completely custom executor, you may provide your own executor that will
23
- * get executed whenever the a2a agent is InMemoryTaskStore
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;
@@ -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
- this.path = options.path ?? '/a2a';
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 = [this._createLoggingMiddleware(), ...this.middlewares];
45
- a2aExpressApp.setupRoutes(expressApp, this.path, allMiddlewares);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBR3pDLCtDQUE4SjtBQUM5Six3REFBMkQ7QUFDM0Qsc0RBQWtEO0FBRWxELHNEQUFnSDtBQTJDekcsSUFBTSxTQUFTLEdBQWYsTUFBTSxTQUFTO0lBRUosR0FBRyxDQUFXO0lBR1gsSUFBSSxDQUE4QjtJQUdsQyxXQUFXLENBQWM7SUFDNUMsV0FBVyxDQUFhO0lBRVIsSUFBSSxDQUFZO0lBQ2hCLElBQUksQ0FBUztJQUNiLFNBQVMsQ0FBWTtJQUNyQixjQUFjLENBQWlCO0lBQzlCLFdBQVcsR0FBcUIsRUFBRSxDQUFDO0lBRXBELFlBQVksT0FBMEI7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksMEJBQWlCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUEwQjtRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLE1BQU0sYUFBYSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFDO1FBRTdCLHFEQUFxRDtRQUNyRCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEdBQUcsSUFBSSxD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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBRXpDLHFDQUF3RTtBQUN4RSwrQ0FRNEI7QUFDNUIsd0RBQTJEO0FBQzNELHNEQUFrRDtBQUVsRCxzREFRK0I7QUFnRHhCLElBQU0sU0FBUyxHQUFmLE1BQU0sU0FBUztJQUVKLEdBQUcsQ0FBVztJQUdYLElBQUksQ0FBOEI7SUFHbEMsV0FBVyxDQUFjO0lBQzVDLFdBQVcsQ0FBYTtJQUVSLElBQUksQ0FBWTtJQUNoQixJQUFJLENBQVM7SUFDYixhQUFhLENBQVM7SUFDdEIsU0FBUyxDQUFZO0lBQ3JCLGNBQWMsQ0FBaUI7SUFDOUIsV0FBVyxHQUFxQixFQUFFLENBQUM7SUFFcEQsWUFBWSxPQUEwQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDZCxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLHFCQUFlLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksMEJBQWlCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUEwQjtRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLE1BQU0sYUFBYSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLElBQUEsaUJBQU8sR0FBRSxDQUFDO1FBRTdCLHFEQUFxRDtRQUNyRCxNQUFNLGNBQWMsR0FBRztZQUNyQixJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDL0IsR0FBRyxJQUFJLENBQUMsV0FBVztTQUNwQixDQUFDO1FBRUYsYUFBYSxDQUFDLFdBQVcsQ0FDdkIsVUFBVSxFQUNWLElBQUksQ0FBQyxJQUFJLEVBQ1QsY0FBYyxFQUNkLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFekQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLFVBQVUsSUFBSSxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkQsQ0FBQztZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFFBQVEsR0FBa0I7WUFDOUIsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQzFDLE1BQU0sR0FBRyxHQUE2QjtvQkFDcEMsY0FBYztvQkFDZCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO3dCQUN6QixJQUFJLGVBQStCLENBQUM7d0JBQ3BDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7NEJBQ2hDLGVBQWUsR0FBRztnQ0FDaEIsSUFBSSxFQUFFLFNBQVM7Z0NBQ2YsU0FBUyxFQUFFLElBQUEsd0JBQVUsR0FBRTtnQ0FDdkIsSUFBSSxFQUFFLE9BQU87Z0NBQ2IsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztnQ0FDeEMsOERBQThEO2dDQUM5RCxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVM7NkJBQ3BDLENBQUM7d0JBQ0osQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLGVBQWUsR0FBRyxPQUFPLENBQUM7d0JBQzVCLENBQUM7d0JBQ0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDbEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN0QixDQUFDO29CQUNELGFBQWEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7aUJBQy9DLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELFVBQVUsRUFBRSxLQUFLLElBQUksRUFBRSxHQUFFLENBQUM7U0FDM0IsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLDhCQUFxQixDQUM5QixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQzdDLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQTtBQTNHWSw4QkFBUztBQUVKO0lBRGYsSUFBQSxtQkFBTSxHQUFFOztzQ0FDcUI7QUFHWDtJQURsQixJQUFBLGtCQUFLLEVBQUMsUUFBUSxDQUFDOzt1Q0FDcUM7QUFHbEM7SUFEbEIsSUFBQSx1QkFBVSxHQUFFOzhCQUNvQix1QkFBVTs4Q0FBQztvQkFSakMsU0FBUztJQUxyQixJQUFBLG1CQUFNLEVBQUM7UUFDTixJQUFJLEVBQUUsS0FBSztRQUNYLFdBQVcsRUFBRSxtQkFBbUI7UUFDaEMsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FBQzs7R0FDVyxTQUFTLENBMkdyQiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/teams.a2a",
3
- "version": "2.0.1",
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.1",
34
- "@microsoft/teams.apps": "2.0.1",
35
- "@microsoft/teams.common": "2.0.1"
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.1",
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",