@microsoft/teams.a2a 2.0.0-preview.9 → 2.0.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/dist/chat-prompt/plugin.d.ts +26 -14
- package/dist/chat-prompt/plugin.js +182 -115
- package/dist/chat-prompt/types.d.ts +43 -35
- package/dist/index.d.ts +0 -7
- package/dist/index.js +1 -31
- package/dist/server/plugin.d.ts +27 -24
- package/dist/server/plugin.js +70 -86
- package/package.json +8 -6
- package/dist/client/agent-client.d.ts +0 -58
- package/dist/client/agent-client.js +0 -177
- package/dist/client/agent-manager.d.ts +0 -57
- package/dist/client/agent-manager.js +0 -136
- package/dist/client/agent-task-store.d.ts +0 -25
- package/dist/client/agent-task-store.js +0 -47
- package/dist/common/schema.d.ts +0 -728
- package/dist/common/schema.js +0 -26
- package/dist/common/type-utils.d.ts +0 -11
- package/dist/common/type-utils.js +0 -3
- package/dist/common/uuid.d.ts +0 -1
- package/dist/common/uuid.js +0 -12
- package/dist/server/middleware/isTaskRequest.d.ts +0 -2
- package/dist/server/middleware/isTaskRequest.js +0 -32
- package/dist/server/plugin.on-get-request.d.ts +0 -3
- package/dist/server/plugin.on-get-request.js +0 -17
- package/dist/server/plugin.on-send-request.d.ts +0 -9
- package/dist/server/plugin.on-send-request.js +0 -107
- package/dist/server/serverUtils.d.ts +0 -13
- package/dist/server/serverUtils.js +0 -65
- package/dist/server/tasks/task-manager.d.ts +0 -22
- package/dist/server/tasks/task-manager.js +0 -205
- package/dist/server/tasks/task-store.d.ts +0 -8
- package/dist/server/tasks/task-store.js +0 -18
- package/dist/server/tasks/task-utilities.d.ts +0 -27
- package/dist/server/tasks/task-utilities.js +0 -139
- package/dist/server/tasks/task-utils.d.ts +0 -22
- package/dist/server/tasks/task-utils.js +0 -38
- package/dist/server/types/a2a-error.d.ts +0 -23
- package/dist/server/types/a2a-error.js +0 -95
- package/dist/server/types/a2a-types.d.ts +0 -56
- package/dist/server/types/a2a-types.js +0 -3
- package/dist/server/types/event-types.d.ts +0 -24
- package/dist/server/types/event-types.js +0 -3
package/dist/common/schema.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// From https://github.com/google/A2A/blob/main/samples/js/src/schema.ts
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ErrorCodeUnsupportedOperation = exports.ErrorCodePushNotificationNotSupported = exports.ErrorCodeTaskNotCancelable = exports.ErrorCodeTaskNotFound = exports.ErrorCodeInternalError = exports.ErrorCodeInvalidParams = exports.ErrorCodeMethodNotFound = exports.ErrorCodeInvalidRequest = exports.ErrorCodeParseError = void 0;
|
|
5
|
-
// === Error Types (Standard and A2A)
|
|
6
|
-
/** Error code for JSON Parse Error (-32700). Invalid JSON was received by the server. */
|
|
7
|
-
exports.ErrorCodeParseError = -32700;
|
|
8
|
-
/** Error code for Invalid Request (-32600). The JSON sent is not a valid Request object. */
|
|
9
|
-
exports.ErrorCodeInvalidRequest = -32600;
|
|
10
|
-
/** Error code for Method Not Found (-32601). The method does not exist / is not available. */
|
|
11
|
-
exports.ErrorCodeMethodNotFound = -32601;
|
|
12
|
-
/** Error code for Invalid Params (-32602). Invalid method parameter(s). */
|
|
13
|
-
exports.ErrorCodeInvalidParams = -32602;
|
|
14
|
-
/** Error code for Internal Error (-32603). Internal JSON-RPC error. */
|
|
15
|
-
exports.ErrorCodeInternalError = -32603;
|
|
16
|
-
/** Error code for Task Not Found (-32001). The specified task was not found. */
|
|
17
|
-
exports.ErrorCodeTaskNotFound = -32001;
|
|
18
|
-
/** Error code for Task Not Cancelable (-32002). The specified task cannot be canceled. */
|
|
19
|
-
exports.ErrorCodeTaskNotCancelable = -32002;
|
|
20
|
-
/** Error code for Push Notification Not Supported (-32003). Push Notifications are not supported for this operation or agent. */
|
|
21
|
-
exports.ErrorCodePushNotificationNotSupported = -32003;
|
|
22
|
-
/** Error code for Unsupported Operation (-32004). The requested operation is not supported by the agent. */
|
|
23
|
-
exports.ErrorCodeUnsupportedOperation = -32004;
|
|
24
|
-
// Subscription responses are typically event streams (TaskUpdateEvent) sent over the transport,
|
|
25
|
-
// not direct JSON-RPC responses to the subscribe request itself.
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdFQUF3RTs7O0FBa2pCeEUscUNBQXFDO0FBRXJDLHlGQUF5RjtBQUM1RSxRQUFBLG1CQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRTFDLDRGQUE0RjtBQUMvRSxRQUFBLHVCQUF1QixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRTlDLDhGQUE4RjtBQUNqRixRQUFBLHVCQUF1QixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRTlDLDJFQUEyRTtBQUM5RCxRQUFBLHNCQUFzQixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRTdDLHVFQUF1RTtBQUMxRCxRQUFBLHNCQUFzQixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRzdDLGdGQUFnRjtBQUNuRSxRQUFBLHFCQUFxQixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRTVDLDBGQUEwRjtBQUM3RSxRQUFBLDBCQUEwQixHQUFHLENBQUMsS0FBSyxDQUFDO0FBRWpELGlJQUFpSTtBQUNwSCxRQUFBLHFDQUFxQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBRzVELDRHQUE0RztBQUMvRixRQUFBLDZCQUE2QixHQUFHLENBQUMsS0FBSyxDQUFDO0FBaVVwRCxnR0FBZ0c7QUFDaEcsaUVBQWlFIn0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export type Success<T> = {
|
|
2
|
-
success: true;
|
|
3
|
-
data: T;
|
|
4
|
-
};
|
|
5
|
-
export type Failure = {
|
|
6
|
-
success: false;
|
|
7
|
-
error: Error;
|
|
8
|
-
};
|
|
9
|
-
export type Result<T> = Success<T> | Failure;
|
|
10
|
-
export type PromiseOrValue<T> = T | Promise<T>;
|
|
11
|
-
export type ValueOrFactory<T> = T | (() => PromiseOrValue<T>);
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vdHlwZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
package/dist/common/uuid.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function generateRequestId(): string | number;
|
package/dist/common/uuid.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateRequestId = generateRequestId;
|
|
4
|
-
function generateRequestId() {
|
|
5
|
-
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
6
|
-
return crypto.randomUUID();
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
return Date.now();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vdXVpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQU1DO0FBTkQsU0FBZ0IsaUJBQWlCO0lBQzdCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMzRSxPQUFPLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7QUFDTCxDQUFDIn0=
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTaskRequest = isTaskRequest;
|
|
4
|
-
const a2a_error_1 = require("../types/a2a-error");
|
|
5
|
-
function isTaskRequest() {
|
|
6
|
-
return (req, res, next) => {
|
|
7
|
-
const valid = typeof req.body === 'object' &&
|
|
8
|
-
req.body !== null &&
|
|
9
|
-
req.body.jsonrpc === '2.0' &&
|
|
10
|
-
typeof req.body.method === 'string' &&
|
|
11
|
-
(req.body.id === null ||
|
|
12
|
-
typeof req.body.id === 'string' ||
|
|
13
|
-
typeof req.body.id === 'number') && // ID is required for requests needing response
|
|
14
|
-
(req.body.params === undefined ||
|
|
15
|
-
typeof req.body.params === 'object' || // Allows null, array, or object
|
|
16
|
-
Array.isArray(req.body.params));
|
|
17
|
-
if (!valid) {
|
|
18
|
-
res
|
|
19
|
-
.status(400)
|
|
20
|
-
.send(a2a_error_1.A2AError.invalidRequest('Invalid JSON-RPC request structure').toJSONRPCError());
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const request = req.body;
|
|
24
|
-
if (request.method === 'tasks/send') {
|
|
25
|
-
if (!request.params?.id) {
|
|
26
|
-
res.status(400).send(a2a_error_1.A2AError.invalidParams('Invalid or missing task ID').toJSONRPCError());
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
next();
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNUYXNrUmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvbWlkZGxld2FyZS9pc1Rhc2tSZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esc0NBK0JDO0FBakNELGtEQUE4QztBQUU5QyxTQUFnQixhQUFhO0lBQzNCLE9BQU8sQ0FBQyxHQUFvQixFQUFFLEdBQXFCLEVBQUUsSUFBMEIsRUFBRSxFQUFFO1FBQ2pGLE1BQU0sS0FBSyxHQUNULE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQzVCLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSTtZQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLO1lBQzFCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUNuQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUk7Z0JBQ25CLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUTtnQkFDL0IsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsSUFBSSwrQ0FBK0M7WUFDckYsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO2dCQUM1QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxnQ0FBZ0M7Z0JBQ3ZFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLEdBQUc7aUJBQ0EsTUFBTSxDQUFDLEdBQUcsQ0FBQztpQkFDWCxJQUFJLENBQUMsb0JBQVEsQ0FBQyxjQUFjLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3hGLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQXNCLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFNUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBUSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.onGetTaskRequest = onGetTaskRequest;
|
|
4
|
-
const serverUtils_1 = require("./serverUtils");
|
|
5
|
-
const a2a_error_1 = require("./types/a2a-error");
|
|
6
|
-
async function onGetTaskRequest(req, cb) {
|
|
7
|
-
const { id: taskId } = req.params;
|
|
8
|
-
// Load both task and history
|
|
9
|
-
const data = await this._taskStore.load(taskId);
|
|
10
|
-
if (!data) {
|
|
11
|
-
cb((0, serverUtils_1.normalizeError)(a2a_error_1.A2AError.taskNotFound(taskId), taskId));
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
// Return only the task object as per spec
|
|
15
|
-
cb((0, serverUtils_1.createSuccessResponse)(taskId, data.task));
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLm9uLWdldC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9wbHVnaW4ub24tZ2V0LXJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSw0Q0FjQztBQWxCRCwrQ0FBc0U7QUFDdEUsaURBQTZDO0FBR3RDLEtBQUssVUFBVSxnQkFBZ0IsQ0FFbEMsR0FBMEIsRUFDMUIsRUFBNkM7SUFFN0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2xDLDZCQUE2QjtJQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLEVBQUUsQ0FBQyxJQUFBLDRCQUFjLEVBQUMsb0JBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRCxPQUFPO0lBQ1gsQ0FBQztJQUNELDBDQUEwQztJQUMxQyxFQUFFLENBQUMsSUFBQSxtQ0FBcUIsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as schema from '../common/schema';
|
|
2
|
-
import { A2APlugin } from './plugin';
|
|
3
|
-
/**
|
|
4
|
-
* Handles the tasks/send request by processing the user message and setting up event handlers
|
|
5
|
-
*
|
|
6
|
-
* @param req - The request containing the task parameters
|
|
7
|
-
* @param cb - The callback to call with the response
|
|
8
|
-
*/
|
|
9
|
-
export declare function onSendRequest(this: A2APlugin, req: schema.SendTaskRequest, cb: (result?: schema.SendTaskResponse) => void): Promise<void>;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.onSendRequest = onSendRequest;
|
|
4
|
-
const serverUtils_1 = require("./serverUtils");
|
|
5
|
-
/**
|
|
6
|
-
* Handles the tasks/send request by processing the user message and setting up event handlers
|
|
7
|
-
*
|
|
8
|
-
* @param req - The request containing the task parameters
|
|
9
|
-
* @param cb - The callback to call with the response
|
|
10
|
-
*/
|
|
11
|
-
async function onSendRequest(req, cb) {
|
|
12
|
-
const { id: taskId, message, sessionId, metadata } = req.params;
|
|
13
|
-
// Load or create task AND history
|
|
14
|
-
const currentData = await this._taskManager.loadOrCreateTaskAndHistory(taskId, message, sessionId, metadata);
|
|
15
|
-
const taskContext = this._taskManager.createTaskContext(currentData.task, message, currentData.history);
|
|
16
|
-
// Create operation context with references that can be updated
|
|
17
|
-
const operationContext = {
|
|
18
|
-
taskManager: this._taskManager,
|
|
19
|
-
taskStore: this._taskStore,
|
|
20
|
-
logger: this._logger,
|
|
21
|
-
taskId,
|
|
22
|
-
reqId: req.id || null,
|
|
23
|
-
contextRef: { current: taskContext },
|
|
24
|
-
dataRef: { current: currentData },
|
|
25
|
-
};
|
|
26
|
-
// Create the helper functions with operation context
|
|
27
|
-
const respond = createRespondFunction(operationContext, cb);
|
|
28
|
-
const accumulateArtifacts = createArtifactsFunction(operationContext, cb);
|
|
29
|
-
// Emit the event to process the task
|
|
30
|
-
this.emit('a2a:message', {
|
|
31
|
-
taskContext,
|
|
32
|
-
respond,
|
|
33
|
-
accumulateArtifacts,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async function updateTask(ctx, update) {
|
|
37
|
-
try {
|
|
38
|
-
// Apply the update to the task
|
|
39
|
-
const updatedData = await ctx.taskManager.applyUpdateToTaskAndHistory(ctx.dataRef.current, update);
|
|
40
|
-
// Save the updated task
|
|
41
|
-
await ctx.taskStore.save(updatedData);
|
|
42
|
-
// Update the task context reference
|
|
43
|
-
ctx.contextRef.current.task = updatedData.task;
|
|
44
|
-
// Return success result
|
|
45
|
-
return {
|
|
46
|
-
success: true,
|
|
47
|
-
data: updatedData,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
return handleUpdateError(ctx, error, ctx.dataRef.current);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async function handleUpdateError(ctx, error, currentData) {
|
|
55
|
-
// Convert error to failure state
|
|
56
|
-
const failedUpdate = ctx.taskManager.createFailedTaskState(`Handler failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
57
|
-
// Apply failure state to task
|
|
58
|
-
const failedData = await ctx.taskManager.applyUpdateToTaskAndHistory(currentData, failedUpdate);
|
|
59
|
-
// Try to save the failed state
|
|
60
|
-
try {
|
|
61
|
-
await ctx.taskStore.save(failedData);
|
|
62
|
-
}
|
|
63
|
-
catch (saveError) {
|
|
64
|
-
ctx.logger.error(`Failed to save task ${ctx.taskId} after handler error:`, saveError);
|
|
65
|
-
}
|
|
66
|
-
// Return failure result with original error
|
|
67
|
-
return {
|
|
68
|
-
success: false,
|
|
69
|
-
error: new Error(`Handler failed: ${error instanceof Error ? error.message : String(error)}`),
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
function createRespondFunction(ctx, callback) {
|
|
73
|
-
return async (update) => {
|
|
74
|
-
ctx.logger.debug(`Responding to task ${ctx.taskId}`);
|
|
75
|
-
let responseValue;
|
|
76
|
-
if (typeof update === 'string') {
|
|
77
|
-
responseValue = ctx.taskManager.createCompletedTaskState(update);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
responseValue = update;
|
|
81
|
-
}
|
|
82
|
-
const result = await updateTask(ctx, responseValue);
|
|
83
|
-
// Update the current data reference with the latest version
|
|
84
|
-
if (result.success) {
|
|
85
|
-
ctx.dataRef.current = result.data;
|
|
86
|
-
}
|
|
87
|
-
if (!result.success) {
|
|
88
|
-
ctx.logger.error(`Failed to save task during response: ${result.error}`);
|
|
89
|
-
callback((0, serverUtils_1.normalizeError)(result.error, ctx.reqId, ctx.taskId));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
callback((0, serverUtils_1.createSuccessResponse)(ctx.taskId, ctx.dataRef.current.task));
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
function createArtifactsFunction(ctx, callback) {
|
|
96
|
-
return async (artifact) => {
|
|
97
|
-
const result = await updateTask(ctx, artifact);
|
|
98
|
-
if (result.success) {
|
|
99
|
-
ctx.dataRef.current = result.data;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
ctx.logger.error(`Failed to accumulate artifacts: ${result.error}`);
|
|
103
|
-
callback((0, serverUtils_1.normalizeError)(result.error, ctx.reqId, ctx.taskId));
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLm9uLXNlbmQtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIvcGx1Z2luLm9uLXNlbmQtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlDQSxzQ0EwQ0M7QUFwRUQsK0NBQXNFO0FBb0J0RTs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxhQUFhLENBRWpDLEdBQTJCLEVBQzNCLEVBQThDO0lBRTlDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUVoRSxrQ0FBa0M7SUFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUNwRSxNQUFNLEVBQ04sT0FBTyxFQUNQLFNBQVMsRUFDVCxRQUFRLENBQ1QsQ0FBQztJQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQ3JELFdBQVcsQ0FBQyxJQUFJLEVBQ2hCLE9BQU8sRUFDUCxXQUFXLENBQUMsT0FBTyxDQUNwQixDQUFDO0lBRUYsK0RBQStEO0lBQy9ELE1BQU0sZ0JBQWdCLEdBQTBCO1FBQzlDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtRQUM5QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3BCLE1BQU07UUFDTixLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJO1FBQ3JCLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7UUFDcEMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtLQUNsQyxDQUFDO0lBRUYscURBQXFEO0lBQ3JELE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVE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
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Response } from 'express';
|
|
2
|
-
import * as schema from '../common/schema';
|
|
3
|
-
/**
|
|
4
|
-
* Validates if the reqest is of the expected type.
|
|
5
|
-
* If not, it sends a 400 response with an error message.
|
|
6
|
-
*/
|
|
7
|
-
export declare const validateRequest: <T extends schema.A2ARequest["method"]>(type: T, req: schema.A2ARequest, res: Response) => req is Extract<schema.A2ARequest, {
|
|
8
|
-
method: T;
|
|
9
|
-
}>;
|
|
10
|
-
export declare const createSuccessResponse: <T>(taskId: number | string | null, result: T) => schema.JSONRPCResponse<T, schema.A2AError>;
|
|
11
|
-
export declare const createErrorResponse: (id: number | string | null | undefined, error: schema.JSONRPCError<unknown>) => schema.JSONRPCResponse<null, schema.A2AError>;
|
|
12
|
-
/** Normalizes various error types into a JSONRPCResponse containing an error */
|
|
13
|
-
export declare const normalizeError: (error: any, reqId: number | string | null | undefined, taskId?: string) => schema.JSONRPCResponse<null, schema.A2AError>;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.normalizeError = exports.createErrorResponse = exports.createSuccessResponse = exports.validateRequest = void 0;
|
|
4
|
-
const a2a_error_1 = require("./types/a2a-error");
|
|
5
|
-
const isType = (type) => (req) => {
|
|
6
|
-
return req.method === type;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Validates if the reqest is of the expected type.
|
|
10
|
-
* If not, it sends a 400 response with an error message.
|
|
11
|
-
*/
|
|
12
|
-
const validateRequest = (type, req, res) => {
|
|
13
|
-
if (isType(type)(req)) {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
res
|
|
17
|
-
.status(400)
|
|
18
|
-
.send(a2a_error_1.A2AError.invalidRequest('Invalid JSON-RPC request structure').toJSONRPCError());
|
|
19
|
-
return false;
|
|
20
|
-
};
|
|
21
|
-
exports.validateRequest = validateRequest;
|
|
22
|
-
const createSuccessResponse = (taskId, result) => {
|
|
23
|
-
if (taskId === null) {
|
|
24
|
-
// This shouldn't happen for methods that expect a response, but safeguard
|
|
25
|
-
throw a2a_error_1.A2AError.internalError('Cannot create success response for null ID.');
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
jsonrpc: '2.0',
|
|
29
|
-
id: taskId,
|
|
30
|
-
result: result,
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
exports.createSuccessResponse = createSuccessResponse;
|
|
34
|
-
const createErrorResponse = (id, error) => {
|
|
35
|
-
// For errors, ID should be the same as request ID, or null if that couldn't be determined
|
|
36
|
-
return {
|
|
37
|
-
jsonrpc: '2.0',
|
|
38
|
-
id: id, // Can be null if request ID was invalid/missing
|
|
39
|
-
error: error,
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
exports.createErrorResponse = createErrorResponse;
|
|
43
|
-
/** Normalizes various error types into a JSONRPCResponse containing an error */
|
|
44
|
-
const normalizeError = (error, reqId, taskId) => {
|
|
45
|
-
let a2aError;
|
|
46
|
-
if (error instanceof a2a_error_1.A2AError) {
|
|
47
|
-
a2aError = error;
|
|
48
|
-
}
|
|
49
|
-
else if (error instanceof Error) {
|
|
50
|
-
// Generic JS error
|
|
51
|
-
a2aError = a2a_error_1.A2AError.internalError(error.message, { stack: error.stack });
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// Unknown error type
|
|
55
|
-
a2aError = a2a_error_1.A2AError.internalError('An unknown error occurred.', error);
|
|
56
|
-
}
|
|
57
|
-
// Ensure Task ID context is present if possible
|
|
58
|
-
if (taskId && !a2aError.taskId) {
|
|
59
|
-
a2aError.taskId = taskId;
|
|
60
|
-
}
|
|
61
|
-
console.error(`Error processing request (Task: ${a2aError.taskId ?? 'N/A'}, ReqID: ${reqId ?? 'N/A'}):`, a2aError);
|
|
62
|
-
return (0, exports.createErrorResponse)(reqId, a2aError.toJSONRPCError());
|
|
63
|
-
};
|
|
64
|
-
exports.normalizeError = normalizeError;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL3NlcnZlclV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlEQUE2QztBQUU3QyxNQUFNLE1BQU0sR0FDVixDQUF3QyxJQUFPLEVBQUUsRUFBRSxDQUNqRCxDQUNFLEdBQXNCLEVBQzRCLEVBQUU7SUFDcEQsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFTjs7O0dBR0c7QUFDSSxNQUFNLGVBQWUsR0FBRyxDQUM3QixJQUFPLEVBQ1AsR0FBc0IsRUFDdEIsR0FBYSxFQUNxQyxFQUFFO0lBQ3BELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsR0FBRztTQUNBLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDWCxJQUFJLENBQ0gsb0JBQVEsQ0FBQyxjQUFjLENBQ3JCLG9DQUFvQyxDQUNyQyxDQUFDLGNBQWMsRUFBRSxDQUNuQixDQUFDO0lBQ0osT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFqQlcsUUFBQSxlQUFlLG1CQWlCMUI7QUFFSyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLE1BQThCLEVBQzlCLE1BQVMsRUFDbUMsRUFBRTtJQUM5QyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwQiwwRUFBMEU7UUFDMUUsTUFBTSxvQkFBUSxDQUFDLGFBQWEsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxFQUFFLEVBQUUsTUFBTTtRQUNWLE1BQU0sRUFBRSxNQUFNO0tBQ2YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWJXLFFBQUEscUJBQXFCLHlCQWFoQztBQUVLLE1BQU0sbUJBQW1CLEdBQUcsQ0FDakMsRUFBc0MsRUFDdEMsS0FBbUMsRUFDWSxFQUFFO0lBQ2pELDBGQUEwRjtJQUMxRixPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxFQUFFLEVBQUUsRUFBRSxFQUFFLGdEQUFnRDtRQUN4RCxLQUFLLEVBQUUsS0FBSztLQUNiLENBQUM7QUFDSixDQUFDLENBQUM7QUFWVyxRQUFBLG1CQUFtQix1QkFVOUI7QUFFRixnRkFBZ0Y7QUFDekUsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsS0FBVSxFQUNWLEtBQXlDLEVBQ3pDLE1BQWUsRUFDZ0MsRUFBRTtJQUNqRCxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxLQUFLLFlBQVksb0JBQVEsRUFBRSxDQUFDO1FBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDbkIsQ0FBQztTQUFNLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQ2xDLG1CQUFtQjtRQUNuQixRQUFRLEdBQUcsb0JBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO1NBQU0sQ0FBQztRQUNOLHFCQUFxQjtRQUNyQixRQUFRLEdBQUcsb0JBQVEsQ0FBQyxhQUFhLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxJQUFJLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvQixRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FDWCxtQ0FBbUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQ2hGLElBQUksRUFDSixRQUFRLENBQ1QsQ0FBQztJQUVGLE9BQU8sSUFBQSwyQkFBbUIsRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBNUJXLFFBQUEsY0FBYyxrQkE0QnpCIn0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ILogger } from '@microsoft/teams.common';
|
|
2
|
-
import * as schema from '../../common/schema';
|
|
3
|
-
import { ITaskStore, TaskAndHistory, TaskContext, TaskUpdate } from '../types/a2a-types';
|
|
4
|
-
export declare const finalStates: schema.TaskState[];
|
|
5
|
-
export declare class TaskManager {
|
|
6
|
-
private taskStore;
|
|
7
|
-
private logger;
|
|
8
|
-
constructor(taskStore: ITaskStore, logger: ILogger);
|
|
9
|
-
applyUpdateToTaskAndHistory(current: TaskAndHistory, update: TaskUpdate): TaskAndHistory;
|
|
10
|
-
stateChangeOnNewRequest(currentState: schema.TaskState): schema.TaskState | null;
|
|
11
|
-
loadOrCreateTaskAndHistory(taskId: string, initialMessage: schema.Message, sessionId?: string | null, // Allow null
|
|
12
|
-
metadata?: Record<string, unknown> | null): Promise<TaskAndHistory>;
|
|
13
|
-
createTaskContext(task: schema.Task, userMessage: schema.Message, history: schema.Message[]): TaskContext;
|
|
14
|
-
isFinalState(current: TaskAndHistory): boolean;
|
|
15
|
-
createFailedTaskState(failureText: string): TaskUpdate;
|
|
16
|
-
createCompletedTaskState(text?: string): TaskUpdate;
|
|
17
|
-
createTaskStatusEvent(taskId: string, status: schema.TaskStatus, final: boolean): schema.TaskStatusUpdateEvent;
|
|
18
|
-
createTaskArtifactEvent(taskId: string, artifact: schema.Artifact, final: boolean): schema.TaskArtifactUpdateEvent;
|
|
19
|
-
private findArtifactIndex;
|
|
20
|
-
private appendToArtifact;
|
|
21
|
-
private sortArtifacts;
|
|
22
|
-
}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TaskManager = exports.finalStates = void 0;
|
|
4
|
-
const task_utils_1 = require("./task-utils");
|
|
5
|
-
// Handle state transitions for existing tasks
|
|
6
|
-
exports.finalStates = [
|
|
7
|
-
'completed',
|
|
8
|
-
'failed',
|
|
9
|
-
'canceled',
|
|
10
|
-
];
|
|
11
|
-
class TaskManager {
|
|
12
|
-
taskStore;
|
|
13
|
-
logger;
|
|
14
|
-
constructor(taskStore, logger) {
|
|
15
|
-
this.taskStore = taskStore;
|
|
16
|
-
this.logger = logger;
|
|
17
|
-
}
|
|
18
|
-
applyUpdateToTaskAndHistory(current, update) {
|
|
19
|
-
const newTask = { ...current.task }; // Shallow copy task
|
|
20
|
-
const newHistory = [...current.history]; // Shallow copy history
|
|
21
|
-
if ((0, task_utils_1.isTaskStatusUpdate)(update)) {
|
|
22
|
-
// Merge status update
|
|
23
|
-
newTask.status = {
|
|
24
|
-
...newTask.status, // Keep existing properties if not overwritten
|
|
25
|
-
...update, // Apply updates
|
|
26
|
-
timestamp: (0, task_utils_1.getCurrentTimestamp)(), // Always update timestamp
|
|
27
|
-
};
|
|
28
|
-
// If the update includes an agent message, add it to history
|
|
29
|
-
if (update.message?.role === 'agent') {
|
|
30
|
-
newHistory.push(update.message);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else if ((0, task_utils_1.isArtifactUpdate)(update) ||
|
|
34
|
-
(Array.isArray(update) && update.every(task_utils_1.isArtifactUpdate))) {
|
|
35
|
-
// Handle artifact update
|
|
36
|
-
if (!newTask.artifacts) {
|
|
37
|
-
newTask.artifacts = [];
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// Ensure we're working with a copy of the artifacts array
|
|
41
|
-
newTask.artifacts = [...newTask.artifacts];
|
|
42
|
-
}
|
|
43
|
-
const updates = Array.isArray(update) ? update : [update];
|
|
44
|
-
for (const artifact of updates) {
|
|
45
|
-
const existingIndex = this.findArtifactIndex(newTask.artifacts, artifact);
|
|
46
|
-
if (existingIndex >= 0) {
|
|
47
|
-
newTask.artifacts[existingIndex] = artifact.append
|
|
48
|
-
? this.appendToArtifact(newTask.artifacts[existingIndex], artifact)
|
|
49
|
-
: { ...artifact };
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
newTask.artifacts.push({ ...artifact });
|
|
53
|
-
this.sortArtifacts(newTask.artifacts);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return { task: newTask, history: newHistory };
|
|
58
|
-
}
|
|
59
|
-
stateChangeOnNewRequest(currentState) {
|
|
60
|
-
switch (currentState) {
|
|
61
|
-
case 'completed':
|
|
62
|
-
case 'failed':
|
|
63
|
-
case 'canceled':
|
|
64
|
-
// Reset to submitted when receiving message in final state
|
|
65
|
-
return 'submitted';
|
|
66
|
-
case 'input-required':
|
|
67
|
-
// If the previous state was "input-required", transition to working
|
|
68
|
-
return 'working';
|
|
69
|
-
case 'working':
|
|
70
|
-
case 'submitted':
|
|
71
|
-
case 'unknown':
|
|
72
|
-
// No state change needed
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async loadOrCreateTaskAndHistory(taskId, initialMessage, sessionId, // Allow null
|
|
77
|
-
metadata // Allow null
|
|
78
|
-
) {
|
|
79
|
-
let data = await this.taskStore.load(taskId);
|
|
80
|
-
let needsSave = false;
|
|
81
|
-
if (!data) {
|
|
82
|
-
// Create new task and history
|
|
83
|
-
const initialTask = {
|
|
84
|
-
id: taskId,
|
|
85
|
-
sessionId: sessionId ?? undefined, // Store undefined if null
|
|
86
|
-
status: {
|
|
87
|
-
state: 'submitted', // Start as submitted
|
|
88
|
-
timestamp: (0, task_utils_1.getCurrentTimestamp)(),
|
|
89
|
-
message: null, // Initial user message goes only to history for now
|
|
90
|
-
},
|
|
91
|
-
artifacts: [],
|
|
92
|
-
metadata: metadata ?? undefined, // Store undefined if null
|
|
93
|
-
};
|
|
94
|
-
const initialHistory = [initialMessage]; // History starts with user message
|
|
95
|
-
data = { task: initialTask, history: initialHistory };
|
|
96
|
-
needsSave = true; // Mark for saving
|
|
97
|
-
this.logger.debug(`[Task ${taskId}] Created new task and history.`);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this.logger.debug(`[Task ${taskId}] Loaded existing task and history.`);
|
|
101
|
-
// Add current user message to history
|
|
102
|
-
// Make a copy before potentially modifying
|
|
103
|
-
data = { task: data.task, history: [...data.history, initialMessage] };
|
|
104
|
-
needsSave = true; // History updated, mark for saving
|
|
105
|
-
// Use the state transition helper
|
|
106
|
-
const newState = this.stateChangeOnNewRequest(data.task.status.state);
|
|
107
|
-
if (newState) {
|
|
108
|
-
const stateUpdate = {
|
|
109
|
-
state: newState,
|
|
110
|
-
message: newState === 'submitted' ? null : data.task.status.message,
|
|
111
|
-
};
|
|
112
|
-
data = this.applyUpdateToTaskAndHistory(data, stateUpdate);
|
|
113
|
-
this.logger.debug(`[Task ${taskId}] Transitioned state to ${newState}.`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
// Save if created or modified before returning
|
|
117
|
-
if (needsSave) {
|
|
118
|
-
await this.taskStore.save(data);
|
|
119
|
-
}
|
|
120
|
-
// Return copies to prevent mutation by caller before handler runs
|
|
121
|
-
return { task: { ...data.task }, history: [...data.history] };
|
|
122
|
-
}
|
|
123
|
-
createTaskContext(task, userMessage, history) {
|
|
124
|
-
return {
|
|
125
|
-
task: { ...task }, // Pass a copy
|
|
126
|
-
userMessage: userMessage,
|
|
127
|
-
history: [...history], // Pass a copy of the history
|
|
128
|
-
isCancelled: () => false, // TODO: support this when cancellations are implemented
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
isFinalState(current) {
|
|
132
|
-
return exports.finalStates.includes(current.task.status.state);
|
|
133
|
-
}
|
|
134
|
-
createFailedTaskState(failureText) {
|
|
135
|
-
return {
|
|
136
|
-
state: 'failed',
|
|
137
|
-
message: {
|
|
138
|
-
role: 'agent',
|
|
139
|
-
parts: [
|
|
140
|
-
{
|
|
141
|
-
type: 'text',
|
|
142
|
-
text: failureText,
|
|
143
|
-
},
|
|
144
|
-
],
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
createCompletedTaskState(text) {
|
|
149
|
-
return {
|
|
150
|
-
state: 'completed',
|
|
151
|
-
message: {
|
|
152
|
-
role: 'agent',
|
|
153
|
-
parts: [
|
|
154
|
-
{
|
|
155
|
-
type: 'text',
|
|
156
|
-
text: text ?? 'task completed',
|
|
157
|
-
},
|
|
158
|
-
],
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
createTaskStatusEvent(taskId, status, final) {
|
|
163
|
-
return {
|
|
164
|
-
id: taskId,
|
|
165
|
-
status: status,
|
|
166
|
-
final: final,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
createTaskArtifactEvent(taskId, artifact, final) {
|
|
170
|
-
return {
|
|
171
|
-
id: taskId,
|
|
172
|
-
artifact: artifact,
|
|
173
|
-
final: final,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
// Private helper methods
|
|
177
|
-
findArtifactIndex(artifacts, update) {
|
|
178
|
-
if (update.index !== undefined) {
|
|
179
|
-
return update.index < artifacts.length ? update.index : -1;
|
|
180
|
-
}
|
|
181
|
-
return update.name
|
|
182
|
-
? artifacts.findIndex((a) => a.name === update.name)
|
|
183
|
-
: -1;
|
|
184
|
-
}
|
|
185
|
-
appendToArtifact(existing, update) {
|
|
186
|
-
// Create a deep copy for modification to avoid mutating original
|
|
187
|
-
const artifact = JSON.parse(JSON.stringify(existing));
|
|
188
|
-
artifact.parts.push(...update.parts);
|
|
189
|
-
if (update.metadata) {
|
|
190
|
-
artifact.metadata = { ...(artifact.metadata || {}), ...update.metadata };
|
|
191
|
-
}
|
|
192
|
-
if (update.lastChunk !== undefined)
|
|
193
|
-
artifact.lastChunk = update.lastChunk;
|
|
194
|
-
if (update.description)
|
|
195
|
-
artifact.description = update.description;
|
|
196
|
-
return artifact;
|
|
197
|
-
}
|
|
198
|
-
sortArtifacts(artifacts) {
|
|
199
|
-
if (artifacts.some((a) => a.index !== undefined)) {
|
|
200
|
-
artifacts.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
exports.TaskManager = TaskManager;
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90YXNrcy90YXNrLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBVUEsNkNBSXNCO0FBRXRCLDhDQUE4QztBQUNqQyxRQUFBLFdBQVcsR0FBdUI7SUFDN0MsV0FBVztJQUNYLFFBQVE7SUFDUixVQUFVO0NBQ1gsQ0FBQztBQUVGLE1BQWEsV0FBVztJQUNGO0lBQStCO0lBQW5ELFlBQW9CLFNBQXFCLEVBQVUsTUFBZTtRQUE5QyxjQUFTLEdBQVQsU0FBUyxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUFJLENBQUM7SUFFdkUsMkJBQTJCLENBQ3pCLE9BQXVCLEVBQ3ZCLE1BQWtCO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7UUFDekQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUVoRSxJQUFJLElBQUEsK0JBQWtCLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLE1BQU0sR0FBRztnQkFDZixHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsOENBQThDO2dCQUNqRSxHQUFHLE1BQU0sRUFBRSxnQkFBZ0I7Z0JBQzNCLFNBQVMsRUFBRSxJQUFBLGdDQUFtQixHQUFFLEVBQUUsMEJBQTBCO2FBQzdELENBQUM7WUFDRiw2REFBNkQ7WUFDN0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDckMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7YUFBTSxJQUNMLElBQUEsNkJBQWdCLEVBQUMsTUFBTSxDQUFD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
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IStorage } from '@microsoft/teams.common';
|
|
2
|
-
import { ITaskStore, TaskAndHistory } from '../types/a2a-types';
|
|
3
|
-
export declare class TaskStore implements ITaskStore {
|
|
4
|
-
private storage;
|
|
5
|
-
constructor(storage: IStorage<string, TaskAndHistory>);
|
|
6
|
-
save(data: TaskAndHistory): Promise<void>;
|
|
7
|
-
load(taskId: string): Promise<TaskAndHistory | null>;
|
|
8
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TaskStore = void 0;
|
|
4
|
-
class TaskStore {
|
|
5
|
-
storage;
|
|
6
|
-
constructor(storage) {
|
|
7
|
-
this.storage = storage;
|
|
8
|
-
}
|
|
9
|
-
async save(data) {
|
|
10
|
-
return this.storage.set(data.task.id, data);
|
|
11
|
-
}
|
|
12
|
-
async load(taskId) {
|
|
13
|
-
const result = await this.storage.get(taskId);
|
|
14
|
-
return result ?? null;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.TaskStore = TaskStore;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvdGFza3MvdGFzay1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFhLFNBQVM7SUFDRTtJQUFwQixZQUFvQixPQUF5QztRQUF6QyxZQUFPLEdBQVAsT0FBTyxDQUFrQztJQUFJLENBQUM7SUFFbEUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFvQjtRQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQWM7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBWEQsOEJBV0MifQ==
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as schema from '../../common/schema';
|
|
2
|
-
import { TaskAndHistory, TaskContext, TaskUpdate } from '../types/a2a-types';
|
|
3
|
-
/**
|
|
4
|
-
* Handles task-specific operations like state transitions and updates
|
|
5
|
-
*/
|
|
6
|
-
export declare class TaskUtilities {
|
|
7
|
-
private activeCancellations;
|
|
8
|
-
constructor(activeCancellations: Set<string>);
|
|
9
|
-
createContext(task: schema.Task, userMessage: schema.Message, history: schema.Message[]): TaskContext;
|
|
10
|
-
withAppliedUpdate(current: TaskAndHistory, update: TaskUpdate): TaskAndHistory;
|
|
11
|
-
stateChangeOnNewRequest(currentState: schema.TaskState): schema.TaskState | null;
|
|
12
|
-
createStateUpdate(state: schema.TaskState): TaskUpdate;
|
|
13
|
-
/**
|
|
14
|
-
* Creates a status update event object
|
|
15
|
-
*/
|
|
16
|
-
createTaskStatusEvent(taskId: string, status: schema.TaskStatus, final: boolean): schema.TaskStatusUpdateEvent;
|
|
17
|
-
/**
|
|
18
|
-
* Creates an artifact update event object
|
|
19
|
-
*/
|
|
20
|
-
createTaskArtifactEvent(taskId: string, artifact: schema.Artifact, final: boolean): schema.TaskArtifactUpdateEvent;
|
|
21
|
-
private applyStatusUpdate;
|
|
22
|
-
private applyArtifactUpdate;
|
|
23
|
-
private findArtifactIndex;
|
|
24
|
-
private appendToArtifact;
|
|
25
|
-
private sortArtifacts;
|
|
26
|
-
private isTaskStatusUpdate;
|
|
27
|
-
}
|