@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.
Files changed (42) hide show
  1. package/dist/chat-prompt/plugin.d.ts +26 -14
  2. package/dist/chat-prompt/plugin.js +182 -115
  3. package/dist/chat-prompt/types.d.ts +43 -35
  4. package/dist/index.d.ts +0 -7
  5. package/dist/index.js +1 -31
  6. package/dist/server/plugin.d.ts +27 -24
  7. package/dist/server/plugin.js +70 -86
  8. package/package.json +8 -6
  9. package/dist/client/agent-client.d.ts +0 -58
  10. package/dist/client/agent-client.js +0 -177
  11. package/dist/client/agent-manager.d.ts +0 -57
  12. package/dist/client/agent-manager.js +0 -136
  13. package/dist/client/agent-task-store.d.ts +0 -25
  14. package/dist/client/agent-task-store.js +0 -47
  15. package/dist/common/schema.d.ts +0 -728
  16. package/dist/common/schema.js +0 -26
  17. package/dist/common/type-utils.d.ts +0 -11
  18. package/dist/common/type-utils.js +0 -3
  19. package/dist/common/uuid.d.ts +0 -1
  20. package/dist/common/uuid.js +0 -12
  21. package/dist/server/middleware/isTaskRequest.d.ts +0 -2
  22. package/dist/server/middleware/isTaskRequest.js +0 -32
  23. package/dist/server/plugin.on-get-request.d.ts +0 -3
  24. package/dist/server/plugin.on-get-request.js +0 -17
  25. package/dist/server/plugin.on-send-request.d.ts +0 -9
  26. package/dist/server/plugin.on-send-request.js +0 -107
  27. package/dist/server/serverUtils.d.ts +0 -13
  28. package/dist/server/serverUtils.js +0 -65
  29. package/dist/server/tasks/task-manager.d.ts +0 -22
  30. package/dist/server/tasks/task-manager.js +0 -205
  31. package/dist/server/tasks/task-store.d.ts +0 -8
  32. package/dist/server/tasks/task-store.js +0 -18
  33. package/dist/server/tasks/task-utilities.d.ts +0 -27
  34. package/dist/server/tasks/task-utilities.js +0 -139
  35. package/dist/server/tasks/task-utils.d.ts +0 -22
  36. package/dist/server/tasks/task-utils.js +0 -38
  37. package/dist/server/types/a2a-error.d.ts +0 -23
  38. package/dist/server/types/a2a-error.js +0 -95
  39. package/dist/server/types/a2a-types.d.ts +0 -56
  40. package/dist/server/types/a2a-types.js +0 -3
  41. package/dist/server/types/event-types.d.ts +0 -24
  42. package/dist/server/types/event-types.js +0 -3
@@ -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=
@@ -1 +0,0 @@
1
- export declare function generateRequestId(): string | number;
@@ -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,2 +0,0 @@
1
- import express from 'express';
2
- export declare function isTaskRequest(): (req: express.Request, res: express.Response, next: express.NextFunction) => void;
@@ -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,3 +0,0 @@
1
- import * as schema from '../common/schema';
2
- import { A2APlugin } from './plugin';
3
- export declare function onGetTaskRequest(this: A2APlugin, req: schema.GetTaskRequest, cb: (result?: schema.GetTaskResponse) => void): Promise<void>;
@@ -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
- }