@artinet/sdk 0.5.3 → 0.5.4
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/CHANGELOG.md +20 -1
- package/README.md +57 -88
- package/dist/client/a2a-client.js +25 -7
- package/dist/client/a2a-client.js.map +1 -1
- package/dist/server/a2a-server.js +51 -241
- package/dist/server/a2a-server.js.map +1 -1
- package/dist/server/interfaces/params.js.map +1 -1
- package/dist/server/interfaces/store.js +16 -0
- package/dist/server/interfaces/store.js.map +1 -1
- package/dist/server/lib/express-server.js +211 -2
- package/dist/server/lib/express-server.js.map +1 -1
- package/dist/server/lib/middleware/a2a-methods.js +61 -24
- package/dist/server/lib/middleware/a2a-methods.js.map +1 -1
- package/dist/server/lib/middleware/factory.js +6 -6
- package/dist/server/lib/middleware/factory.js.map +1 -1
- package/dist/server/lib/state.js +44 -72
- package/dist/server/lib/state.js.map +1 -1
- package/dist/server/lib/storage/memory.js.map +1 -1
- package/dist/server/lib/update/base.js +109 -0
- package/dist/server/lib/update/base.js.map +1 -0
- package/dist/services/a2a/index.js +3 -0
- package/dist/services/a2a/index.js.map +1 -0
- package/dist/services/a2a/repository.js +160 -0
- package/dist/services/a2a/repository.js.map +1 -0
- package/dist/services/a2a/service.js +247 -0
- package/dist/services/a2a/service.js.map +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/manager.js +61 -0
- package/dist/services/manager.js.map +1 -0
- package/dist/services/mcp/index.js +2 -0
- package/dist/services/mcp/index.js.map +1 -0
- package/dist/services/mcp/service.js +75 -0
- package/dist/services/mcp/service.js.map +1 -0
- package/dist/transport/rpc/parser.js +2 -1
- package/dist/transport/rpc/parser.js.map +1 -1
- package/dist/transport/rpc/rpc-client.js.map +1 -1
- package/dist/transport/streaming/stream.js +19 -36
- package/dist/transport/streaming/stream.js.map +1 -1
- package/dist/types/client/a2a-client.d.ts +21 -7
- package/dist/types/client/a2a-client.d.ts.map +1 -1
- package/dist/types/express.js +2 -0
- package/dist/types/express.js.map +1 -0
- package/dist/types/extended-schema.js +1 -1
- package/dist/types/extended-schema.js.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/schemas/a2a/auth/auth.js +2 -0
- package/dist/types/schemas/a2a/auth/auth.js.map +1 -0
- package/dist/types/schemas/a2a/auth/base.js +2 -0
- package/dist/types/schemas/a2a/auth/base.js.map +1 -0
- package/dist/types/schemas/a2a/auth/index.js +4 -0
- package/dist/types/schemas/a2a/auth/index.js.map +1 -0
- package/dist/types/schemas/a2a/auth/oauth.js +2 -0
- package/dist/types/schemas/a2a/auth/oauth.js.map +1 -0
- package/dist/types/schemas/a2a/error.js +45 -0
- package/dist/types/schemas/a2a/error.js.map +1 -0
- package/dist/types/schemas/a2a/index.js +8 -0
- package/dist/types/schemas/a2a/index.js.map +1 -0
- package/dist/types/schemas/a2a/message.js +2 -0
- package/dist/types/schemas/a2a/message.js.map +1 -0
- package/dist/types/schemas/a2a/notification.js +2 -0
- package/dist/types/schemas/a2a/notification.js.map +1 -0
- package/dist/types/schemas/a2a/parameters.js +2 -0
- package/dist/types/schemas/a2a/parameters.js.map +1 -0
- package/dist/types/schemas/a2a/ref.js +25 -0
- package/dist/types/schemas/a2a/ref.js.map +1 -0
- package/dist/types/schemas/a2a/rpc.js +2 -0
- package/dist/types/schemas/a2a/rpc.js.map +1 -0
- package/dist/types/schemas/a2a/task.js +16 -0
- package/dist/types/schemas/a2a/task.js.map +1 -0
- package/dist/types/schemas/index.js +2 -0
- package/dist/types/schemas/index.js.map +1 -0
- package/dist/types/server/a2a-server.d.ts +9 -20
- package/dist/types/server/a2a-server.d.ts.map +1 -1
- package/dist/types/server/interfaces/params.d.ts +11 -11
- package/dist/types/server/interfaces/params.d.ts.map +1 -1
- package/dist/types/server/interfaces/server.d.ts +4 -4
- package/dist/types/server/interfaces/server.d.ts.map +1 -1
- package/dist/types/server/interfaces/store.d.ts +6 -1
- package/dist/types/server/interfaces/store.d.ts.map +1 -1
- package/dist/types/server/lib/express-server.d.ts +49 -1
- package/dist/types/server/lib/express-server.d.ts.map +1 -1
- package/dist/types/server/lib/middleware/a2a-methods.d.ts.map +1 -1
- package/dist/types/server/lib/middleware/factory.d.ts +2 -2
- package/dist/types/server/lib/middleware/factory.d.ts.map +1 -1
- package/dist/types/server/lib/state.d.ts +7 -15
- package/dist/types/server/lib/state.d.ts.map +1 -1
- package/dist/types/server/lib/storage/memory.d.ts.map +1 -1
- package/dist/types/server/lib/update/base.d.ts +21 -0
- package/dist/types/server/lib/update/base.d.ts.map +1 -0
- package/dist/types/services/a2a/index.d.ts +3 -0
- package/dist/types/services/a2a/index.d.ts.map +1 -0
- package/dist/types/services/a2a/repository.d.ts +77 -0
- package/dist/types/services/a2a/repository.d.ts.map +1 -0
- package/dist/types/services/a2a/repository.js +2 -0
- package/dist/types/services/a2a/repository.js.map +1 -0
- package/dist/types/services/a2a/service.d.ts +45 -0
- package/dist/types/services/a2a/service.d.ts.map +1 -0
- package/dist/types/services/a2a/service.js +2 -0
- package/dist/types/services/a2a/service.js.map +1 -0
- package/dist/types/services/context.js +29 -0
- package/dist/types/services/context.js.map +1 -0
- package/dist/types/services/dispatcher.js +33 -0
- package/dist/types/services/dispatcher.js.map +1 -0
- package/dist/types/services/index.d.ts +2 -0
- package/dist/types/services/index.d.ts.map +1 -0
- package/dist/types/services/index.js +9 -0
- package/dist/types/services/index.js.map +1 -0
- package/dist/types/services/manager.d.ts +44 -0
- package/dist/types/services/manager.d.ts.map +1 -0
- package/dist/types/services/manager.js +2 -0
- package/dist/types/services/manager.js.map +1 -0
- package/dist/types/services/mcp/index.d.ts +2 -0
- package/dist/types/services/mcp/index.d.ts.map +1 -0
- package/dist/types/services/mcp/service.d.ts +30 -0
- package/dist/types/services/mcp/service.d.ts.map +1 -0
- package/dist/types/services/mcp/service.js +8 -0
- package/dist/types/services/mcp/service.js.map +1 -0
- package/dist/types/services/protocol.js +31 -0
- package/dist/types/services/protocol.js.map +1 -0
- package/dist/types/services/service.js +2 -0
- package/dist/types/services/service.js.map +1 -0
- package/dist/types/transform.js +35 -0
- package/dist/types/transform.js.map +1 -0
- package/dist/types/transport/rpc/parser.d.ts.map +1 -1
- package/dist/types/transport/rpc/rpc-client.d.ts.map +1 -1
- package/dist/types/transport/streaming/stream.d.ts +6 -5
- package/dist/types/transport/streaming/stream.d.ts.map +1 -1
- package/dist/types/types/client.d.ts +26 -9
- package/dist/types/types/client.d.ts.map +1 -1
- package/dist/types/types/express.d.ts +66 -0
- package/dist/types/types/express.d.ts.map +1 -0
- package/dist/types/types/extended-schema.d.ts +88 -33
- package/dist/types/types/extended-schema.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +2 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/proxy.d.ts +4 -5
- package/dist/types/types/proxy.d.ts.map +1 -1
- package/dist/types/types/schemas/a2a/auth/auth.d.ts +80 -0
- package/dist/types/types/schemas/a2a/auth/auth.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/auth/base.d.ts +16 -0
- package/dist/types/types/schemas/a2a/auth/base.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/auth/index.d.ts +4 -0
- package/dist/types/types/schemas/a2a/auth/index.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/auth/oauth.d.ts +124 -0
- package/dist/types/types/schemas/a2a/auth/oauth.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/error.d.ts +75 -0
- package/dist/types/types/schemas/a2a/error.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/index.d.ts +220 -0
- package/dist/types/types/schemas/a2a/index.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/message.d.ts +90 -0
- package/dist/types/types/schemas/a2a/message.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/notification.d.ts +87 -0
- package/dist/types/types/schemas/a2a/notification.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/parameters.d.ts +188 -0
- package/dist/types/types/schemas/a2a/parameters.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/ref.d.ts +2057 -0
- package/dist/types/types/schemas/a2a/ref.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/rpc.d.ts +104 -0
- package/dist/types/types/schemas/a2a/rpc.d.ts.map +1 -0
- package/dist/types/types/schemas/a2a/task.d.ts +252 -0
- package/dist/types/types/schemas/a2a/task.d.ts.map +1 -0
- package/dist/types/types/schemas/index.d.ts +2 -0
- package/dist/types/types/schemas/index.d.ts.map +1 -0
- package/dist/types/types/services/a2a/repository.d.ts +85 -0
- package/dist/types/types/services/a2a/repository.d.ts.map +1 -0
- package/dist/types/types/services/a2a/service.d.ts +29 -0
- package/dist/types/types/services/a2a/service.d.ts.map +1 -0
- package/dist/types/types/services/context.d.ts +167 -0
- package/dist/types/types/services/context.d.ts.map +1 -0
- package/dist/types/types/services/dispatcher.d.ts +20 -0
- package/dist/types/types/services/dispatcher.d.ts.map +1 -0
- package/dist/types/types/services/index.d.ts +9 -0
- package/dist/types/types/services/index.d.ts.map +1 -0
- package/dist/types/types/services/manager.d.ts +42 -0
- package/dist/types/types/services/manager.d.ts.map +1 -0
- package/dist/types/types/services/mcp/service.d.ts +57 -0
- package/dist/types/types/services/mcp/service.d.ts.map +1 -0
- package/dist/types/types/services/protocol.d.ts +30 -0
- package/dist/types/types/services/protocol.d.ts.map +1 -0
- package/dist/types/types/services/service.d.ts +35 -0
- package/dist/types/types/services/service.d.ts.map +1 -0
- package/dist/types/types/transform.d.ts +61 -0
- package/dist/types/types/transform.d.ts.map +1 -0
- package/dist/types/utils/api/register.d.ts.map +1 -1
- package/dist/types/utils/common/constants.d.ts +4 -4
- package/dist/types/utils/common/constants.d.ts.map +1 -1
- package/dist/types/utils/common/errors.d.ts +19 -15
- package/dist/types/utils/common/errors.d.ts.map +1 -1
- package/dist/types/utils/common/utils.d.ts +2 -13
- package/dist/types/utils/common/utils.d.ts.map +1 -1
- package/dist/types/utils/deployment/task-wrapper.d.ts +5 -6
- package/dist/types/utils/deployment/task-wrapper.d.ts.map +1 -1
- package/dist/types/utils/deployment/test-deployment.d.ts +2 -2
- package/dist/types/utils/deployment/test-deployment.d.ts.map +1 -1
- package/dist/types/utils/logging/log.d.ts.map +1 -1
- package/dist/utils/api/register.js +1 -3
- package/dist/utils/api/register.js.map +1 -1
- package/dist/utils/common/constants.js +37 -24
- package/dist/utils/common/constants.js.map +1 -1
- package/dist/utils/common/errors.js +20 -9
- package/dist/utils/common/errors.js.map +1 -1
- package/dist/utils/common/utils.js +5 -27
- package/dist/utils/common/utils.js.map +1 -1
- package/dist/utils/deployment/agents.js.map +1 -1
- package/dist/utils/deployment/task-wrapper.js +3 -3
- package/dist/utils/deployment/task-wrapper.js.map +1 -1
- package/dist/utils/deployment/test-deployment.js +3 -4
- package/dist/utils/deployment/test-deployment.js.map +1 -1
- package/dist/utils/logging/log.js.map +1 -1
- package/package.json +9 -5
- package/dist/types/context.js +0 -2
- package/dist/types/context.js.map +0 -1
- package/dist/types/schema.js +0 -23
- package/dist/types/schema.js.map +0 -1
- package/dist/types/types/context.d.ts +0 -41
- package/dist/types/types/context.d.ts.map +0 -1
- package/dist/types/types/schema.d.ts +0 -694
- package/dist/types/types/schema.d.ts.map +0 -1
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import cors from "cors";
|
|
2
2
|
import express from "express";
|
|
3
|
+
import { ServiceManager } from "../../services/manager.js";
|
|
4
|
+
import { errorHandler } from "../../utils/common/errors.js";
|
|
5
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
6
|
+
import { Protocol } from "../../types/services/protocol.js";
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
|
+
import util from "util";
|
|
9
|
+
import { logError, logInfo } from "../../utils/logging/log.js";
|
|
10
|
+
import { INVALID_REQUEST } from "../../utils/common/errors.js";
|
|
11
|
+
import { A2AService } from "../../services/a2a/service.js";
|
|
3
12
|
/**
|
|
4
|
-
*
|
|
13
|
+
* @deprecated Use ExpressServer instead.
|
|
14
|
+
* @description Creates an Express server for the A2A protocol.
|
|
5
15
|
* Handles task creation, streaming, cancellation and more.
|
|
6
16
|
* Uses Jayson for JSON-RPC handling.
|
|
7
17
|
*/
|
|
@@ -21,7 +31,7 @@ export function createExpressServer(params) {
|
|
|
21
31
|
try {
|
|
22
32
|
const body = req.body;
|
|
23
33
|
if (body && body.method) {
|
|
24
|
-
if (body.method === "
|
|
34
|
+
if (body.method === "message/stream") {
|
|
25
35
|
return await onTaskSendSubscribe(body, res);
|
|
26
36
|
}
|
|
27
37
|
else if (body.method === "tasks/resubscribe") {
|
|
@@ -40,4 +50,203 @@ export function createExpressServer(params) {
|
|
|
40
50
|
app.use(errorHandler);
|
|
41
51
|
return { app };
|
|
42
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* @description The express server class.
|
|
55
|
+
*/
|
|
56
|
+
export class ExpressServer extends ServiceManager {
|
|
57
|
+
basePath;
|
|
58
|
+
fallbackPath;
|
|
59
|
+
_serverInstance;
|
|
60
|
+
port;
|
|
61
|
+
app;
|
|
62
|
+
register;
|
|
63
|
+
corsOptions;
|
|
64
|
+
initialized = false;
|
|
65
|
+
/**
|
|
66
|
+
* @description Gets the server instance.
|
|
67
|
+
* @returns {http.Server | undefined} The server instance.
|
|
68
|
+
*/
|
|
69
|
+
get serverInstance() {
|
|
70
|
+
return this._serverInstance;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @description The constructor.
|
|
74
|
+
* @param {ExpressServerOptions} params The express server options.
|
|
75
|
+
*/
|
|
76
|
+
constructor(params) {
|
|
77
|
+
const atBasePath = Object.keys(params.services ?? {}).length > 1 ? false : true;
|
|
78
|
+
super({
|
|
79
|
+
...params,
|
|
80
|
+
services: params.services ?? {
|
|
81
|
+
[Protocol.A2A]: new A2AService({
|
|
82
|
+
engine: params.engine,
|
|
83
|
+
taskStore: params.storage,
|
|
84
|
+
card: params.card,
|
|
85
|
+
}),
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
this.corsOptions = params.corsOptions ?? {
|
|
89
|
+
origin: "*",
|
|
90
|
+
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
|
|
91
|
+
allowedHeaders: ["Content-Type", "Authorization"],
|
|
92
|
+
};
|
|
93
|
+
let basePath = params.basePath ?? "/";
|
|
94
|
+
if (basePath !== "/") {
|
|
95
|
+
basePath = `/${basePath.replace(/^\/|\/$/g, "")}/`;
|
|
96
|
+
}
|
|
97
|
+
this.basePath = basePath;
|
|
98
|
+
this.fallbackPath = params.fallbackPath ?? "/agent-card";
|
|
99
|
+
this.port = params.port ?? 41241;
|
|
100
|
+
this.app = params.app ?? express();
|
|
101
|
+
this.app.use(cors(this.corsOptions));
|
|
102
|
+
this.app.use(express.json());
|
|
103
|
+
this.register = params.register ?? false;
|
|
104
|
+
this.registerRoutes(atBasePath);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* @description Registers the routes.
|
|
108
|
+
* @param {StreamableHTTPServerTransport} transport The mcp transport.
|
|
109
|
+
*/
|
|
110
|
+
registerRoutes(atBasePath = true, transport) {
|
|
111
|
+
this.app.get(`/.well-known/agent.json`, (_, res) => {
|
|
112
|
+
res.json(this.getCard());
|
|
113
|
+
});
|
|
114
|
+
this.app.get(this.fallbackPath, (_, res) => {
|
|
115
|
+
res.json(this.getCard());
|
|
116
|
+
});
|
|
117
|
+
for (const service of Object.values(this.services)) {
|
|
118
|
+
const path = atBasePath
|
|
119
|
+
? `${this.basePath}`
|
|
120
|
+
: this.basePath === "/"
|
|
121
|
+
? `/${service.protocol}`
|
|
122
|
+
: `${this.basePath}${service.protocol}`;
|
|
123
|
+
this.app.get(path, async (req, res, next) => {
|
|
124
|
+
try {
|
|
125
|
+
const { id, method, params, jsonrpc } = req.body;
|
|
126
|
+
if (jsonrpc !== "2.0") {
|
|
127
|
+
res.status(400).json({ error: "Invalid JSON-RPC version" });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const context = this.createRequestContext({
|
|
131
|
+
id,
|
|
132
|
+
protocol: service.protocol,
|
|
133
|
+
method,
|
|
134
|
+
params: {
|
|
135
|
+
...params,
|
|
136
|
+
protocol: service.protocol,
|
|
137
|
+
},
|
|
138
|
+
request: req,
|
|
139
|
+
response: res,
|
|
140
|
+
transport: service.protocol === Protocol.MCP
|
|
141
|
+
? transport
|
|
142
|
+
? transport
|
|
143
|
+
: new StreamableHTTPServerTransport({
|
|
144
|
+
sessionIdGenerator: () => uuidv4(),
|
|
145
|
+
})
|
|
146
|
+
: undefined,
|
|
147
|
+
});
|
|
148
|
+
return await this.onRequest(context).catch((error) => {
|
|
149
|
+
res.status(500).json({ id, error: error.message });
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
logError("ExpressServer", "Error in GET", error);
|
|
154
|
+
next(error);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
this.app.post(path, async (req, res, next) => {
|
|
158
|
+
try {
|
|
159
|
+
const { id, method, params, jsonrpc } = req.body;
|
|
160
|
+
if (jsonrpc !== "2.0") {
|
|
161
|
+
res.status(200).send({
|
|
162
|
+
jsonrpc: "2.0",
|
|
163
|
+
id: id,
|
|
164
|
+
error: INVALID_REQUEST({
|
|
165
|
+
jsonrpc: jsonrpc,
|
|
166
|
+
data: req.body,
|
|
167
|
+
}),
|
|
168
|
+
});
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const context = this.createRequestContext({
|
|
172
|
+
id,
|
|
173
|
+
protocol: service.protocol,
|
|
174
|
+
method,
|
|
175
|
+
params: {
|
|
176
|
+
...params,
|
|
177
|
+
protocol: service.protocol,
|
|
178
|
+
},
|
|
179
|
+
request: req,
|
|
180
|
+
response: res,
|
|
181
|
+
transport: service.protocol === Protocol.MCP
|
|
182
|
+
? transport
|
|
183
|
+
? transport
|
|
184
|
+
: new StreamableHTTPServerTransport({
|
|
185
|
+
sessionIdGenerator: () => uuidv4(),
|
|
186
|
+
})
|
|
187
|
+
: undefined,
|
|
188
|
+
});
|
|
189
|
+
return await this.onRequest(context).catch((error) => {
|
|
190
|
+
res.status(500).json({ error: error.message });
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.error("Error in POST", error);
|
|
195
|
+
next(error);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
this.app.use(errorHandler);
|
|
200
|
+
this.initialized = true;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* @description Gets the app.
|
|
204
|
+
* @returns {express.Express} The app.
|
|
205
|
+
*/
|
|
206
|
+
getApp() {
|
|
207
|
+
if (!this.initialized) {
|
|
208
|
+
this.registerRoutes();
|
|
209
|
+
}
|
|
210
|
+
return this.app;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* @description Starts the server.
|
|
214
|
+
* @returns {Promise<http.Server>} The server.
|
|
215
|
+
*/
|
|
216
|
+
async start() {
|
|
217
|
+
if (!this.initialized) {
|
|
218
|
+
this.registerRoutes();
|
|
219
|
+
}
|
|
220
|
+
if (this._serverInstance) {
|
|
221
|
+
return this._serverInstance;
|
|
222
|
+
}
|
|
223
|
+
this._serverInstance = this.app.listen(this.port, () => {
|
|
224
|
+
logInfo("ExpressServer", `Express Server started and listening`, {
|
|
225
|
+
port: this.port,
|
|
226
|
+
path: this.basePath,
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
return this._serverInstance;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* @description Stops the server.
|
|
233
|
+
*/
|
|
234
|
+
async stop() {
|
|
235
|
+
await super.destroy();
|
|
236
|
+
if (!this._serverInstance) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
const closeServer = util
|
|
241
|
+
.promisify(this._serverInstance.close)
|
|
242
|
+
.bind(this._serverInstance);
|
|
243
|
+
await closeServer();
|
|
244
|
+
this._serverInstance = undefined;
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
this._serverInstance = undefined;
|
|
248
|
+
logError("ExpressServer", "Error stopping server:", error);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
43
252
|
//# sourceMappingURL=express-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-server.js","sourceRoot":"","sources":["../../../src/server/lib/express-server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAA4C,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"express-server.js","sourceRoot":"","sources":["../../../src/server/lib/express-server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAA4C,MAAM,SAAS,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IAGnE,MAAM,EACJ,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,GAClB,GAAG,MAAM,CAAC;IACX,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAC5C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,WAAW;IACX,GAAG,CAAC,IAAI,CACN,QAAQ,EACR,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;oBACrC,OAAO,MAAM,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;oBAC/C,OAAO,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CACF,CAAC;IAEF,YAAY;IACZ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAE3C,yBAAyB;IACzB,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEtB,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aACX,SAAQ,cAAc;IAGb,QAAQ,CAAS;IACjB,YAAY,CAAS;IACtB,eAAe,CAA0B;IACxC,IAAI,CAAS;IACZ,GAAG,CAAkB;IACtB,QAAQ,CAAU;IAClB,WAAW,CAAc;IAC1B,WAAW,GAAY,KAAK,CAAC;IAErC;;;OAGG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,YAAY,MAA4B;QACtC,MAAM,UAAU,GACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,KAAK,CAAC;YACJ,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI;gBAC3B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,UAAU,CAAC;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,SAAS,EAAE,MAAM,CAAC,OAAO;oBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC;aACH;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI;YACvC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;YACpD,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;SAClD,CAAC;QAEF,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;QAEtC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,aAAa,CAAC;QAEzD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;QAEjC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;QAEnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,cAAc,CACZ,aAAsB,IAAI,EAC1B,SAAyC;QAEzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACzC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,UAAU;gBACrB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG;oBACrB,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACxB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,EACJ,KAAK,EACH,GAAoB,EACpB,GAAqB,EACrB,IAA0B,EAC1B,EAAE;gBACF,IAAI,CAAC;oBACH,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;oBACjD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;wBACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;wBAC5D,OAAO;oBACT,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;wBACxC,EAAE;wBACF,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,MAAM;wBACN,MAAM,EAAE;4BACN,GAAG,MAAM;4BACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC3B;wBACD,OAAO,EAAE,GAAG;wBACZ,QAAQ,EAAE,GAAG;wBACb,SAAS,EACP,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG;4BAC/B,CAAC,CAAC,SAAS;gCACT,CAAC,CAAC,SAAS;gCACX,CAAC,CAAC,IAAI,6BAA6B,CAAC;oCAChC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;iCACnC,CAAC;4BACN,CAAC,CAAC,SAAS;qBAChB,CAAC,CAAC;oBACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;oBACjD,IAAI,CAAC,KAAK,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,IAAI,EACJ,KAAK,EACH,GAAoB,EACpB,GAAqB,EACrB,IAA0B,EAC1B,EAAE;gBACF,IAAI,CAAC;oBACH,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;oBACjD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;wBACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,EAAE,EAAE,EAAE;4BACN,KAAK,EAAE,eAAe,CAAC;gCACrB,OAAO,EAAE,OAAO;gCAChB,IAAI,EAAE,GAAG,CAAC,IAAI;6BACf,CAAC;yBACH,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;wBACxC,EAAE;wBACF,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,MAAM;wBACN,MAAM,EAAE;4BACN,GAAG,MAAM;4BACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC3B;wBACD,OAAO,EAAE,GAAG;wBACZ,QAAQ,EAAE,GAAG;wBACb,SAAS,EACP,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG;4BAC/B,CAAC,CAAC,SAAS;gCACT,CAAC,CAAC,SAAS;gCACX,CAAC,CAAC,IAAI,6BAA6B,CAAC;oCAChC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;iCACnC,CAAC;4BACN,CAAC,CAAC,SAAS;qBAChB,CAAC,CAAC;oBACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YACrD,OAAO,CAAC,eAAe,EAAE,sCAAsC,EAAE;gBAC/D,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI;iBACrB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;iBACrC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,MAAM,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,QAAQ,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,25 +1,56 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Protocol } from "../../../types/services/protocol.js";
|
|
2
|
+
import { getCurrentTimestamp, validateSendMessageParams, } from "../../../utils/index.js";
|
|
2
3
|
import { logError, logWarn } from "../../../utils/index.js";
|
|
3
|
-
import { loadState,
|
|
4
|
+
import { loadState, processUpdate } from "../state.js";
|
|
4
5
|
import { INTERNAL_ERROR, INVALID_PARAMS, PUSH_NOTIFICATION_NOT_SUPPORTED, TASK_NOT_CANCELABLE, TASK_NOT_FOUND, FAILED_UPDATE, SystemError, } from "../../../utils/index.js";
|
|
5
6
|
import { FINAL_STATES } from "../../../utils/index.js";
|
|
7
|
+
//todo move to the a2a plugin
|
|
6
8
|
export const defaultSendTaskMethod = async (deps, requestParams, callback) => {
|
|
9
|
+
validateSendMessageParams(requestParams);
|
|
7
10
|
const { taskStore, taskHandler, createTaskContext } = deps;
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
11
|
+
const { message, configuration, metadata } = requestParams;
|
|
12
|
+
let currentData = await loadState(taskStore, message, metadata, message.taskId, message.contextId);
|
|
13
|
+
const context = createTaskContext(currentData.task, message, currentData.history, configuration);
|
|
14
|
+
const requestContext = {
|
|
15
|
+
id: context.contextId,
|
|
16
|
+
protocol: Protocol.A2A,
|
|
17
|
+
method: "message/send",
|
|
18
|
+
params: requestParams,
|
|
19
|
+
task: currentData.task,
|
|
20
|
+
request: null,
|
|
21
|
+
response: null,
|
|
22
|
+
};
|
|
23
|
+
const executionContext = {
|
|
24
|
+
id: context.contextId,
|
|
25
|
+
protocol: Protocol.A2A,
|
|
26
|
+
getRequestParams: () => requestParams,
|
|
27
|
+
isCancelled: () => deps.activeCancellations.has(context.task.id),
|
|
28
|
+
requestContext: requestContext,
|
|
29
|
+
};
|
|
30
|
+
const generator = taskHandler(executionContext);
|
|
13
31
|
try {
|
|
14
32
|
for await (const update of generator) {
|
|
15
|
-
currentData = await
|
|
33
|
+
currentData = await processUpdate(taskStore, {
|
|
34
|
+
context: context,
|
|
35
|
+
current: currentData,
|
|
36
|
+
update: update,
|
|
37
|
+
});
|
|
16
38
|
}
|
|
17
|
-
|
|
39
|
+
const task = {
|
|
40
|
+
...currentData.task,
|
|
41
|
+
kind: "task",
|
|
42
|
+
history: [...(currentData.task.history || []), ...currentData.history],
|
|
43
|
+
};
|
|
44
|
+
return callback(null, task); // Success
|
|
18
45
|
}
|
|
19
46
|
catch (innerError) {
|
|
20
|
-
const failedUpdate = FAILED_UPDATE(`Task processing failed: ${innerError instanceof Error ? innerError.message : String(innerError)}`);
|
|
47
|
+
const failedUpdate = FAILED_UPDATE(currentData.task.id, currentData.task.contextId || "unknown", "failed-update", `Task processing failed: ${innerError instanceof Error ? innerError.message : String(innerError)}`);
|
|
21
48
|
// Ensure state is saved before calling callback with error
|
|
22
|
-
await
|
|
49
|
+
await processUpdate(taskStore, {
|
|
50
|
+
context: context,
|
|
51
|
+
current: currentData,
|
|
52
|
+
update: failedUpdate,
|
|
53
|
+
});
|
|
23
54
|
// Throwing here would be caught by createMethod's catch block
|
|
24
55
|
if (innerError instanceof SystemError) {
|
|
25
56
|
throw innerError;
|
|
@@ -29,7 +60,7 @@ export const defaultSendTaskMethod = async (deps, requestParams, callback) => {
|
|
|
29
60
|
};
|
|
30
61
|
export const defaultGetTaskMethod = async (deps, requestParams, callback) => {
|
|
31
62
|
const { taskStore } = deps;
|
|
32
|
-
const taskId =
|
|
63
|
+
const { id: taskId } = requestParams;
|
|
33
64
|
if (!taskId)
|
|
34
65
|
throw INVALID_PARAMS("Missing task ID");
|
|
35
66
|
const data = await taskStore.load(taskId);
|
|
@@ -37,18 +68,18 @@ export const defaultGetTaskMethod = async (deps, requestParams, callback) => {
|
|
|
37
68
|
logError("taskGetLogic", "Task not found", { taskId });
|
|
38
69
|
throw TASK_NOT_FOUND("Task Id: " + taskId);
|
|
39
70
|
}
|
|
40
|
-
callback(null, data.task); // Success
|
|
71
|
+
return callback(null, data.task); // Success
|
|
41
72
|
};
|
|
42
73
|
export const defaultCancelTaskMethod = async (deps, requestParams, callback) => {
|
|
43
74
|
const { taskStore, activeCancellations, closeStreamsForTask } = deps;
|
|
44
|
-
const taskId =
|
|
75
|
+
const { id: taskId } = requestParams;
|
|
45
76
|
if (!taskId)
|
|
46
77
|
throw INVALID_PARAMS("Missing task ID");
|
|
47
78
|
const data = await taskStore.load(taskId);
|
|
48
79
|
if (!data)
|
|
49
80
|
throw TASK_NOT_FOUND("Task Id: " + taskId);
|
|
50
81
|
if (FINAL_STATES.includes(data.task.status.state)) {
|
|
51
|
-
throw TASK_NOT_CANCELABLE("Task is in a final state");
|
|
82
|
+
throw TASK_NOT_CANCELABLE("Task is in a final state: " + data.task.status.state);
|
|
52
83
|
}
|
|
53
84
|
activeCancellations.add(taskId);
|
|
54
85
|
const canceledTask = {
|
|
@@ -57,8 +88,10 @@ export const defaultCancelTaskMethod = async (deps, requestParams, callback) =>
|
|
|
57
88
|
state: "canceled",
|
|
58
89
|
timestamp: getCurrentTimestamp(),
|
|
59
90
|
message: {
|
|
91
|
+
kind: "message",
|
|
92
|
+
messageId: data.task.status.message?.messageId || "canceled-task",
|
|
60
93
|
role: "agent",
|
|
61
|
-
parts: [{
|
|
94
|
+
parts: [{ kind: "text", text: "Task was canceled." }],
|
|
62
95
|
},
|
|
63
96
|
},
|
|
64
97
|
};
|
|
@@ -69,28 +102,32 @@ export const defaultCancelTaskMethod = async (deps, requestParams, callback) =>
|
|
|
69
102
|
};
|
|
70
103
|
export const defaultSetTaskPushNotificationMethod = async (deps, requestParams, callback) => {
|
|
71
104
|
const { taskStore, card } = deps;
|
|
72
|
-
logWarn("tasks/
|
|
105
|
+
logWarn("tasks/pushNotificationConfig/set", "Push notifications not fully implemented.");
|
|
73
106
|
if (!card.capabilities?.pushNotifications) {
|
|
74
107
|
throw PUSH_NOTIFICATION_NOT_SUPPORTED("Push notifications not supported");
|
|
75
108
|
}
|
|
76
109
|
const config = requestParams;
|
|
77
|
-
|
|
78
|
-
if (!taskId || !config.pushNotificationConfig?.url) {
|
|
110
|
+
if (!config.taskId || !config.pushNotificationConfig?.url) {
|
|
79
111
|
throw INVALID_PARAMS("Missing task ID or push notification URL");
|
|
80
112
|
}
|
|
81
|
-
const data = await taskStore.load(taskId);
|
|
113
|
+
const data = await taskStore.load(config.taskId);
|
|
82
114
|
if (!data) {
|
|
83
|
-
throw TASK_NOT_FOUND("Task Id: " + taskId);
|
|
115
|
+
throw TASK_NOT_FOUND("Task Id: " + config.taskId);
|
|
84
116
|
}
|
|
85
|
-
|
|
117
|
+
const response = {
|
|
118
|
+
id: config.taskId,
|
|
119
|
+
jsonrpc: "2.0",
|
|
120
|
+
result: config,
|
|
121
|
+
};
|
|
122
|
+
return callback(null, response);
|
|
86
123
|
};
|
|
87
124
|
export const defaultGetTaskPushNotificationMethod = async (deps, requestParams, callback) => {
|
|
88
125
|
const { taskStore, card } = deps;
|
|
89
|
-
logWarn("tasks/
|
|
126
|
+
logWarn("tasks/pushNotificationConfig/get", "Push notifications not fully implemented.");
|
|
90
127
|
if (!card.capabilities?.pushNotifications) {
|
|
91
128
|
throw PUSH_NOTIFICATION_NOT_SUPPORTED("Push notifications not supported");
|
|
92
129
|
}
|
|
93
|
-
const taskId =
|
|
130
|
+
const { id: taskId } = requestParams;
|
|
94
131
|
if (!taskId) {
|
|
95
132
|
throw INVALID_PARAMS("Missing task ID");
|
|
96
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-methods.js","sourceRoot":"","sources":["../../../../src/server/lib/middleware/a2a-methods.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a2a-methods.js","sourceRoot":"","sources":["../../../../src/server/lib/middleware/a2a-methods.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,17 +43,17 @@ export function createJSONRPCMethod(deps, funct, methodName // Pass method name
|
|
|
43
43
|
}
|
|
44
44
|
export const defaultCreateJSONRPCServer = (params) => {
|
|
45
45
|
// Create handlers using the generic factory and specific logic
|
|
46
|
-
const taskSendMethod = createJSONRPCMethod(params, defaultSendTaskMethod, "
|
|
46
|
+
const taskSendMethod = createJSONRPCMethod(params, defaultSendTaskMethod, "message/send");
|
|
47
47
|
const taskGetMethod = createJSONRPCMethod(params, defaultGetTaskMethod, "tasks/get");
|
|
48
48
|
const taskCancelMethod = createJSONRPCMethod(params, defaultCancelTaskMethod, "tasks/cancel");
|
|
49
|
-
const taskPushNotificationSetMethod = createJSONRPCMethod(params, defaultSetTaskPushNotificationMethod, "tasks/
|
|
50
|
-
const taskPushNotificationGetMethod = createJSONRPCMethod(params, defaultGetTaskPushNotificationMethod, "tasks/
|
|
49
|
+
const taskPushNotificationSetMethod = createJSONRPCMethod(params, defaultSetTaskPushNotificationMethod, "tasks/pushNotificationConfig/set");
|
|
50
|
+
const taskPushNotificationGetMethod = createJSONRPCMethod(params, defaultGetTaskPushNotificationMethod, "tasks/pushNotificationConfig/get");
|
|
51
51
|
return new JSONRPCServer({
|
|
52
|
-
"
|
|
52
|
+
"message/send": taskSendMethod,
|
|
53
53
|
"tasks/get": taskGetMethod,
|
|
54
54
|
"tasks/cancel": taskCancelMethod,
|
|
55
|
-
"tasks/
|
|
56
|
-
"tasks/
|
|
55
|
+
"tasks/pushNotificationConfig/set": taskPushNotificationSetMethod,
|
|
56
|
+
"tasks/pushNotificationConfig/get": taskPushNotificationGetMethod,
|
|
57
57
|
}, { reviver: undefined, replacer: undefined });
|
|
58
58
|
};
|
|
59
59
|
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/server/lib/middleware/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,aAAa,GAId,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,oCAAoC,EACpC,oCAAoC,GACrC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/server/lib/middleware/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,aAAa,GAId,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,oCAAoC,EACpC,oCAAoC,GACrC,MAAM,kBAAkB,CAAC;AAQ1B;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAIjC,IAA+B,EAC/B,KAA8C,EAC9C,UAAkB,CAAC,+BAA+B;;IAElD,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,cAAc,CAAC,4BAA4B,CAAC,CAAC;YACrD,CAAC;YACD,6BAA6B;YAC7B,MAAM,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,QAAQ,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,OAAO,QAAQ,CAAC;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,UAAU,EAAE,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBAC7D,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO,QAAQ,CAAC;oBACd,OAAO,EAAE,aAAa,CAAC,OAAO;oBAC9B,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,IAAI,EAAE,aAAa,CAAC,IAAI;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAwB,CAAC,MAAM,EAAE,EAAE;IACxE,+DAA+D;IAC/D,MAAM,cAAc,GAAG,mBAAmB,CACxC,MAAM,EACN,qBAAqB,EACrB,cAAc,CACf,CAAC;IACF,MAAM,aAAa,GAAG,mBAAmB,CACvC,MAAM,EACN,oBAAoB,EACpB,WAAW,CACZ,CAAC;IACF,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,MAAM,EACN,uBAAuB,EACvB,cAAc,CACf,CAAC;IACF,MAAM,6BAA6B,GAAG,mBAAmB,CACvD,MAAM,EACN,oCAAoC,EACpC,kCAAkC,CACnC,CAAC;IACF,MAAM,6BAA6B,GAAG,mBAAmB,CACvD,MAAM,EACN,oCAAoC,EACpC,kCAAkC,CACnC,CAAC;IAEF,OAAO,IAAI,aAAa,CACtB;QACE,cAAc,EAAE,cAAc;QAC9B,WAAW,EAAE,aAAa;QAC1B,cAAc,EAAE,gBAAgB;QAChC,kCAAkC,EAAE,6BAA6B;QACjE,kCAAkC,EAAE,6BAA6B;KAClE,EACD,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAC5C,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/server/lib/state.js
CHANGED
|
@@ -1,107 +1,79 @@
|
|
|
1
|
-
import { getCurrentTimestamp
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
appendedArtifact.parts.push(...update.parts);
|
|
15
|
-
if (update.metadata) {
|
|
16
|
-
appendedArtifact.metadata = {
|
|
17
|
-
...(appendedArtifact.metadata || {}),
|
|
18
|
-
...update.metadata,
|
|
1
|
+
import { getCurrentTimestamp } from "../../utils/common/utils.js";
|
|
2
|
+
import { TaskState, } from "../../types/extended-schema.js";
|
|
3
|
+
import { v4 as uuidv4 } from "uuid";
|
|
4
|
+
import { update } from "./update/base.js";
|
|
5
|
+
//todo: move to update.ts
|
|
6
|
+
export function updateByIndex(append, artifacts, index, artifactUpdate) {
|
|
7
|
+
if (append) {
|
|
8
|
+
const existingArtifact = artifacts[index];
|
|
9
|
+
existingArtifact.parts.push(...artifactUpdate.parts);
|
|
10
|
+
if (artifactUpdate.metadata) {
|
|
11
|
+
existingArtifact.metadata = {
|
|
12
|
+
...(existingArtifact.metadata || {}),
|
|
13
|
+
...artifactUpdate.metadata,
|
|
19
14
|
};
|
|
20
15
|
}
|
|
21
|
-
if (
|
|
22
|
-
|
|
16
|
+
if (artifactUpdate.description) {
|
|
17
|
+
existingArtifact.description = artifactUpdate.description;
|
|
23
18
|
}
|
|
24
|
-
if (
|
|
25
|
-
|
|
19
|
+
if (artifactUpdate.name) {
|
|
20
|
+
existingArtifact.name = artifactUpdate.name;
|
|
26
21
|
}
|
|
27
|
-
artifacts[index] =
|
|
22
|
+
artifacts[index] = existingArtifact;
|
|
28
23
|
}
|
|
29
24
|
else {
|
|
30
|
-
artifacts[index] = { ...
|
|
25
|
+
artifacts[index] = { ...artifactUpdate };
|
|
31
26
|
}
|
|
32
27
|
return { artifacts, replaced: true };
|
|
33
28
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
artifacts[namedIndex] = { ...update };
|
|
38
|
-
return { artifacts, replaced: true };
|
|
39
|
-
}
|
|
40
|
-
return { artifacts: artifacts, replaced: false };
|
|
41
|
-
}
|
|
42
|
-
export function processArtifactUpdate(artifacts, update) {
|
|
43
|
-
const existingIndex = update.index ?? -1;
|
|
29
|
+
//todo: move to update.ts
|
|
30
|
+
export function processArtifactUpdate(append, artifacts, artifactUpdate) {
|
|
31
|
+
const existingIndex = artifacts.findIndex((a) => a.artifactId === artifactUpdate.artifactId);
|
|
44
32
|
let replaced = false;
|
|
45
33
|
let newArtifacts = artifacts;
|
|
46
|
-
if (
|
|
47
|
-
({ artifacts: newArtifacts, replaced } = updateByIndex(artifacts, existingIndex,
|
|
48
|
-
}
|
|
49
|
-
else if (update.name) {
|
|
50
|
-
({ artifacts: newArtifacts, replaced } = updateByName(artifacts, update));
|
|
34
|
+
if (existingIndex !== -1) {
|
|
35
|
+
({ artifacts: newArtifacts, replaced } = updateByIndex(append, artifacts, existingIndex, artifactUpdate));
|
|
51
36
|
}
|
|
52
37
|
if (!replaced) {
|
|
53
|
-
newArtifacts.push({ ...
|
|
54
|
-
if (newArtifacts.some((a) => a.index !== undefined)) {
|
|
55
|
-
newArtifacts.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
|
|
56
|
-
}
|
|
57
|
-
replaced = true;
|
|
38
|
+
newArtifacts.push({ ...artifactUpdate });
|
|
58
39
|
}
|
|
59
|
-
return
|
|
40
|
+
return newArtifacts;
|
|
60
41
|
}
|
|
61
|
-
export async function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (isTaskStatusUpdate(update)) {
|
|
65
|
-
newTask.status = updateTaskStatus(newTask, update);
|
|
66
|
-
if (update.message?.role === "agent") {
|
|
67
|
-
newHistory.push(update.message);
|
|
68
|
-
}
|
|
42
|
+
export async function processUpdate(taskStore, updateProps) {
|
|
43
|
+
if (!(await update(updateProps))) {
|
|
44
|
+
throw new Error("processUpdate: Invalid update");
|
|
69
45
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const { artifacts: newArtifacts, replaced } = processArtifactUpdate(artifacts, update);
|
|
73
|
-
if (!replaced) {
|
|
74
|
-
throw INVALID_REQUEST("Invalid artifact update");
|
|
75
|
-
}
|
|
76
|
-
newTask.artifacts = newArtifacts;
|
|
77
|
-
}
|
|
78
|
-
const currentData = { task: newTask, history: newHistory };
|
|
79
|
-
await taskStore.save(currentData);
|
|
80
|
-
return currentData;
|
|
46
|
+
await taskStore.save(updateProps.current);
|
|
47
|
+
return updateProps.current;
|
|
81
48
|
}
|
|
82
49
|
/**
|
|
83
50
|
* Loads or creates a task and its history.
|
|
84
51
|
* @param taskId The task ID
|
|
85
52
|
* @param message The message to process
|
|
86
|
-
* @param
|
|
53
|
+
* @param contextId Optional context ID
|
|
87
54
|
* @param metadata Optional metadata
|
|
88
55
|
* @returns The task and history
|
|
89
56
|
*/
|
|
90
|
-
export async function loadState(taskStore,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
57
|
+
export async function loadState(taskStore, message, metadata, taskId, contextId) {
|
|
58
|
+
if (taskId) {
|
|
59
|
+
const existingData = await taskStore.load(taskId);
|
|
60
|
+
if (existingData) {
|
|
61
|
+
return existingData;
|
|
62
|
+
}
|
|
94
63
|
}
|
|
95
64
|
const timestamp = getCurrentTimestamp();
|
|
96
65
|
const newTask = {
|
|
97
|
-
id: taskId,
|
|
98
|
-
|
|
66
|
+
id: taskId ?? uuidv4(),
|
|
67
|
+
contextId: contextId ?? uuidv4(),
|
|
68
|
+
kind: "task",
|
|
99
69
|
status: {
|
|
100
|
-
state:
|
|
70
|
+
state: TaskState.Submitted,
|
|
101
71
|
timestamp,
|
|
102
72
|
},
|
|
103
73
|
metadata: metadata,
|
|
104
74
|
};
|
|
75
|
+
message.taskId = newTask.id;
|
|
76
|
+
message.contextId = newTask.contextId;
|
|
105
77
|
const newHistory = [message];
|
|
106
78
|
return { task: newTask, history: newHistory };
|
|
107
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/server/lib/state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/server/lib/state.ts"],"names":[],"mappings":"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"}
|