@agentick/gateway 0.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/LICENSE +21 -0
- package/README.md +477 -0
- package/dist/agent-registry.d.ts +51 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +78 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/app-registry.d.ts +51 -0
- package/dist/app-registry.d.ts.map +1 -0
- package/dist/app-registry.js +78 -0
- package/dist/app-registry.js.map +1 -0
- package/dist/bin.d.ts +8 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +37 -0
- package/dist/bin.js.map +1 -0
- package/dist/gateway.d.ts +165 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +1339 -0
- package/dist/gateway.js.map +1 -0
- package/dist/http-transport.d.ts +65 -0
- package/dist/http-transport.d.ts.map +1 -0
- package/dist/http-transport.js +517 -0
- package/dist/http-transport.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol.d.ts +162 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +16 -0
- package/dist/protocol.js.map +1 -0
- package/dist/session-manager.d.ts +101 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +208 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/testing.d.ts +92 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +129 -0
- package/dist/testing.js.map +1 -0
- package/dist/transport-protocol.d.ts +162 -0
- package/dist/transport-protocol.d.ts.map +1 -0
- package/dist/transport-protocol.js +16 -0
- package/dist/transport-protocol.js.map +1 -0
- package/dist/transport.d.ts +115 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +56 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +314 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/websocket-server.d.ts +87 -0
- package/dist/websocket-server.d.ts.map +1 -0
- package/dist/websocket-server.js +245 -0
- package/dist/websocket-server.js.map +1 -0
- package/dist/ws-transport.d.ts +17 -0
- package/dist/ws-transport.d.ts.map +1 -0
- package/dist/ws-transport.js +174 -0
- package/dist/ws-transport.js.map +1 -0
- package/package.json +51 -0
- package/src/__tests__/custom-methods.spec.ts +220 -0
- package/src/__tests__/gateway-methods.spec.ts +262 -0
- package/src/__tests__/gateway.spec.ts +404 -0
- package/src/__tests__/guards.spec.ts +235 -0
- package/src/__tests__/protocol.spec.ts +58 -0
- package/src/__tests__/session-manager.spec.ts +220 -0
- package/src/__tests__/ws-transport.spec.ts +246 -0
- package/src/app-registry.ts +103 -0
- package/src/bin.ts +38 -0
- package/src/gateway.ts +1712 -0
- package/src/http-transport.ts +623 -0
- package/src/index.ts +94 -0
- package/src/session-manager.ts +272 -0
- package/src/testing.ts +236 -0
- package/src/transport-protocol.ts +249 -0
- package/src/transport.ts +191 -0
- package/src/types.ts +392 -0
- package/src/websocket-server.ts +303 -0
- package/src/ws-transport.ts +205 -0
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP/SSE Transport
|
|
3
|
+
*
|
|
4
|
+
* Implements the Transport interface using HTTP requests and Server-Sent Events.
|
|
5
|
+
* This enables web browser clients to connect to the gateway without WebSocket support.
|
|
6
|
+
*/
|
|
7
|
+
import { createServer } from "http";
|
|
8
|
+
import { extractToken, validateAuth, setSSEHeaders } from "@agentick/server";
|
|
9
|
+
import { isGuardError } from "@agentick/shared";
|
|
10
|
+
import { BaseTransport } from "./transport.js";
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// HTTP Client (SSE connection)
|
|
13
|
+
// ============================================================================
|
|
14
|
+
class HTTPClientImpl {
|
|
15
|
+
id;
|
|
16
|
+
state;
|
|
17
|
+
response = null;
|
|
18
|
+
_isConnected = false;
|
|
19
|
+
constructor(id) {
|
|
20
|
+
this.id = id;
|
|
21
|
+
this.state = {
|
|
22
|
+
id,
|
|
23
|
+
connectedAt: new Date(),
|
|
24
|
+
authenticated: false,
|
|
25
|
+
subscriptions: new Set(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Set the SSE response object */
|
|
29
|
+
setResponse(res) {
|
|
30
|
+
this.response = res;
|
|
31
|
+
this._isConnected = true;
|
|
32
|
+
res.on("close", () => {
|
|
33
|
+
this._isConnected = false;
|
|
34
|
+
this.response = null;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
send(message) {
|
|
38
|
+
if (this.response && this._isConnected) {
|
|
39
|
+
const data = JSON.stringify(message);
|
|
40
|
+
this.response.write(`data: ${data}\n\n`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
close(_code, _reason) {
|
|
44
|
+
if (this.response) {
|
|
45
|
+
this.response.end();
|
|
46
|
+
this.response = null;
|
|
47
|
+
}
|
|
48
|
+
this._isConnected = false;
|
|
49
|
+
}
|
|
50
|
+
get isConnected() {
|
|
51
|
+
return this._isConnected;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class HTTPTransport extends BaseTransport {
|
|
55
|
+
type = "http";
|
|
56
|
+
server = null;
|
|
57
|
+
httpConfig;
|
|
58
|
+
constructor(config) {
|
|
59
|
+
super(config);
|
|
60
|
+
this.httpConfig = config;
|
|
61
|
+
}
|
|
62
|
+
start() {
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
try {
|
|
65
|
+
this.server = createServer((req, res) => {
|
|
66
|
+
this.handleRequest(req, res).catch((error) => {
|
|
67
|
+
console.error("Request error:", error);
|
|
68
|
+
if (!res.headersSent) {
|
|
69
|
+
res.writeHead(500, { "Content-Type": "application/json" });
|
|
70
|
+
res.end(JSON.stringify({ error: "Internal server error" }));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
this.server.on("error", (error) => {
|
|
75
|
+
this.handlers.error?.(error);
|
|
76
|
+
reject(error);
|
|
77
|
+
});
|
|
78
|
+
this.server.listen(this.config.port, this.config.host, () => {
|
|
79
|
+
resolve();
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
reject(error);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
stop() {
|
|
88
|
+
return new Promise((resolve) => {
|
|
89
|
+
if (!this.server) {
|
|
90
|
+
resolve();
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Close all client connections
|
|
94
|
+
for (const client of this.clients.values()) {
|
|
95
|
+
client.close(1001, "Server shutting down");
|
|
96
|
+
}
|
|
97
|
+
this.clients.clear();
|
|
98
|
+
this.server.close(() => {
|
|
99
|
+
this.server = null;
|
|
100
|
+
resolve();
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async handleRequest(req, res) {
|
|
105
|
+
// Set CORS headers
|
|
106
|
+
const origin = this.httpConfig.corsOrigin ?? "*";
|
|
107
|
+
res.setHeader("Access-Control-Allow-Origin", origin);
|
|
108
|
+
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PATCH, DELETE, OPTIONS");
|
|
109
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
|
|
110
|
+
res.setHeader("Access-Control-Allow-Credentials", "true");
|
|
111
|
+
// Handle preflight
|
|
112
|
+
if (req.method === "OPTIONS") {
|
|
113
|
+
res.writeHead(204);
|
|
114
|
+
res.end();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const prefix = this.httpConfig.pathPrefix ?? "";
|
|
118
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
119
|
+
const path = url.pathname.replace(prefix, "");
|
|
120
|
+
// Route requests - exact matches first
|
|
121
|
+
switch (path) {
|
|
122
|
+
case "/events":
|
|
123
|
+
return this.handleSSE(req, res);
|
|
124
|
+
case "/send":
|
|
125
|
+
return this.handleSend(req, res);
|
|
126
|
+
case "/invoke":
|
|
127
|
+
return this.handleInvoke(req, res);
|
|
128
|
+
case "/subscribe":
|
|
129
|
+
return this.handleSubscribe(req, res);
|
|
130
|
+
case "/abort":
|
|
131
|
+
return this.handleAbort(req, res);
|
|
132
|
+
case "/close":
|
|
133
|
+
return this.handleClose(req, res);
|
|
134
|
+
case "/channel":
|
|
135
|
+
return this.handleChannel(req, res);
|
|
136
|
+
}
|
|
137
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
138
|
+
res.end(JSON.stringify({ error: "Not found" }));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* SSE endpoint - establishes long-lived connection for events
|
|
142
|
+
*/
|
|
143
|
+
async handleSSE(req, res) {
|
|
144
|
+
// Get auth token from header or query
|
|
145
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
146
|
+
const token = extractToken(req) ?? url.searchParams.get("token") ?? undefined;
|
|
147
|
+
// Validate auth
|
|
148
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
149
|
+
if (!authResult.valid) {
|
|
150
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
151
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// Create client
|
|
155
|
+
const clientId = url.searchParams.get("clientId") ?? this.generateClientId();
|
|
156
|
+
let client = this.clients.get(clientId);
|
|
157
|
+
if (!client) {
|
|
158
|
+
client = new HTTPClientImpl(clientId);
|
|
159
|
+
client.state.authenticated = true;
|
|
160
|
+
client.state.user = authResult.user;
|
|
161
|
+
client.state.metadata = authResult.metadata;
|
|
162
|
+
this.clients.set(clientId, client);
|
|
163
|
+
// Notify connection handler
|
|
164
|
+
this.handlers.connection?.(client);
|
|
165
|
+
}
|
|
166
|
+
// Setup SSE response
|
|
167
|
+
setSSEHeaders(res);
|
|
168
|
+
client.setResponse(res);
|
|
169
|
+
// Send connection confirmation
|
|
170
|
+
// Client expects type: "connection" to resolve the connection promise
|
|
171
|
+
client.send({
|
|
172
|
+
type: "connection",
|
|
173
|
+
connectionId: clientId,
|
|
174
|
+
subscriptions: Array.from(client.state.subscriptions),
|
|
175
|
+
});
|
|
176
|
+
// Handle disconnect
|
|
177
|
+
res.on("close", () => {
|
|
178
|
+
this.clients.delete(clientId);
|
|
179
|
+
this.handlers.disconnect?.(clientId);
|
|
180
|
+
});
|
|
181
|
+
// Keep connection alive with periodic heartbeat
|
|
182
|
+
const heartbeat = setInterval(() => {
|
|
183
|
+
if (client?.isConnected) {
|
|
184
|
+
res.write(":heartbeat\n\n");
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
clearInterval(heartbeat);
|
|
188
|
+
}
|
|
189
|
+
}, 30000);
|
|
190
|
+
res.on("close", () => clearInterval(heartbeat));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Send endpoint - receives messages and streams response
|
|
194
|
+
*/
|
|
195
|
+
async handleSend(req, res) {
|
|
196
|
+
if (req.method !== "POST") {
|
|
197
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
198
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
// Get auth token
|
|
202
|
+
const token = extractToken(req);
|
|
203
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
204
|
+
if (!authResult.valid) {
|
|
205
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
206
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
// Parse body
|
|
210
|
+
const body = await this.parseBody(req);
|
|
211
|
+
if (!body) {
|
|
212
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
213
|
+
res.end(JSON.stringify({ error: "Invalid request body" }));
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const sessionId = body.sessionId ?? "main";
|
|
217
|
+
const rawMessage = body.message;
|
|
218
|
+
// Validate and sanitize the message to ensure it's a proper Message object
|
|
219
|
+
// This prevents any unexpected properties from being passed through
|
|
220
|
+
if (!rawMessage ||
|
|
221
|
+
typeof rawMessage !== "object" ||
|
|
222
|
+
!rawMessage.role ||
|
|
223
|
+
!Array.isArray(rawMessage.content)) {
|
|
224
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
225
|
+
res.end(JSON.stringify({
|
|
226
|
+
error: "Invalid message format. Expected { role, content: ContentBlock[] }",
|
|
227
|
+
}));
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
// Create a clean Message object with only expected properties
|
|
231
|
+
const message = {
|
|
232
|
+
role: rawMessage.role,
|
|
233
|
+
content: rawMessage.content,
|
|
234
|
+
...(rawMessage.id && { id: rawMessage.id }),
|
|
235
|
+
...(rawMessage.metadata && { metadata: rawMessage.metadata }),
|
|
236
|
+
};
|
|
237
|
+
// Check if we have a direct send handler
|
|
238
|
+
if (!this.config.onDirectSend) {
|
|
239
|
+
res.writeHead(501, { "Content-Type": "application/json" });
|
|
240
|
+
res.end(JSON.stringify({ error: "Send not supported without onDirectSend handler" }));
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
// Setup streaming response
|
|
244
|
+
setSSEHeaders(res);
|
|
245
|
+
try {
|
|
246
|
+
// Use the direct send handler to stream events
|
|
247
|
+
const events = this.config.onDirectSend(sessionId, message);
|
|
248
|
+
for await (const event of events) {
|
|
249
|
+
const sseData = {
|
|
250
|
+
type: event.type,
|
|
251
|
+
sessionId,
|
|
252
|
+
...(event.data && typeof event.data === "object" ? event.data : {}),
|
|
253
|
+
};
|
|
254
|
+
res.write(`data: ${JSON.stringify(sseData)}\n\n`);
|
|
255
|
+
}
|
|
256
|
+
// Send execution_end
|
|
257
|
+
res.write(`data: ${JSON.stringify({ type: "execution_end", sessionId })}\n\n`);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
261
|
+
res.write(`data: ${JSON.stringify({ type: "error", error: errorMessage, sessionId })}\n\n`);
|
|
262
|
+
}
|
|
263
|
+
finally {
|
|
264
|
+
res.end();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Invoke endpoint - execute custom gateway methods
|
|
269
|
+
* Returns JSON (not streaming) for simpler client handling
|
|
270
|
+
*/
|
|
271
|
+
async handleInvoke(req, res) {
|
|
272
|
+
if (req.method !== "POST") {
|
|
273
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
274
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
// Get auth token
|
|
278
|
+
const token = extractToken(req);
|
|
279
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
280
|
+
if (!authResult.valid) {
|
|
281
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
282
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// Parse body
|
|
286
|
+
const body = await this.parseBody(req);
|
|
287
|
+
if (!body) {
|
|
288
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
289
|
+
res.end(JSON.stringify({ error: "Invalid request body" }));
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
const method = body.method;
|
|
293
|
+
const params = (body.params ?? {});
|
|
294
|
+
if (!method || typeof method !== "string") {
|
|
295
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
296
|
+
res.end(JSON.stringify({ error: "method is required" }));
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
// Check if we have an invoke handler
|
|
300
|
+
if (!this.config.onInvoke) {
|
|
301
|
+
res.writeHead(501, { "Content-Type": "application/json" });
|
|
302
|
+
res.end(JSON.stringify({ error: "Method invocation not supported" }));
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const result = await this.config.onInvoke(method, params, authResult.user);
|
|
307
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
308
|
+
res.end(JSON.stringify(result));
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
312
|
+
const statusCode = isGuardError(error) ? 403 : 400;
|
|
313
|
+
res.writeHead(statusCode, { "Content-Type": "application/json" });
|
|
314
|
+
res.end(JSON.stringify({ error: errorMessage }));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Subscribe endpoint - manage session subscriptions
|
|
319
|
+
*/
|
|
320
|
+
async handleSubscribe(req, res) {
|
|
321
|
+
if (req.method !== "POST") {
|
|
322
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
323
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const token = extractToken(req);
|
|
327
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
328
|
+
if (!authResult.valid) {
|
|
329
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
330
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
const body = await this.parseBody(req);
|
|
334
|
+
if (!body) {
|
|
335
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
336
|
+
res.end(JSON.stringify({ error: "Invalid request body" }));
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const { connectionId, add, remove } = body;
|
|
340
|
+
const client = this.clients.get(connectionId);
|
|
341
|
+
if (!client) {
|
|
342
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
343
|
+
res.end(JSON.stringify({ error: "Connection not found" }));
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
// Update subscriptions
|
|
347
|
+
if (add) {
|
|
348
|
+
for (const sessionId of add) {
|
|
349
|
+
client.state.subscriptions.add(sessionId);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (remove) {
|
|
353
|
+
for (const sessionId of remove) {
|
|
354
|
+
client.state.subscriptions.delete(sessionId);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
358
|
+
res.end(JSON.stringify({
|
|
359
|
+
subscriptions: Array.from(client.state.subscriptions),
|
|
360
|
+
}));
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Abort endpoint
|
|
364
|
+
*/
|
|
365
|
+
async handleAbort(req, res) {
|
|
366
|
+
if (req.method !== "POST") {
|
|
367
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
368
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
const token = extractToken(req);
|
|
372
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
373
|
+
if (!authResult.valid) {
|
|
374
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
375
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
const body = await this.parseBody(req);
|
|
379
|
+
if (!body) {
|
|
380
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
381
|
+
res.end(JSON.stringify({ error: "Invalid request body" }));
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
// Forward as request message
|
|
385
|
+
const requestId = `req-${Date.now().toString(36)}`;
|
|
386
|
+
const requestMessage = {
|
|
387
|
+
type: "req",
|
|
388
|
+
id: requestId,
|
|
389
|
+
method: "abort",
|
|
390
|
+
params: body,
|
|
391
|
+
};
|
|
392
|
+
// Find any authenticated client to use
|
|
393
|
+
const client = this.getAuthenticatedClients()[0];
|
|
394
|
+
if (client) {
|
|
395
|
+
this.handlers.message?.(client.id, requestMessage);
|
|
396
|
+
}
|
|
397
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
398
|
+
res.end(JSON.stringify({ ok: true }));
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Close endpoint
|
|
402
|
+
*/
|
|
403
|
+
async handleClose(req, res) {
|
|
404
|
+
if (req.method !== "POST") {
|
|
405
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
406
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const token = extractToken(req);
|
|
410
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
411
|
+
if (!authResult.valid) {
|
|
412
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
413
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
const body = await this.parseBody(req);
|
|
417
|
+
if (!body) {
|
|
418
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
419
|
+
res.end(JSON.stringify({ error: "Invalid request body" }));
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
// Forward as request message
|
|
423
|
+
const requestId = `req-${Date.now().toString(36)}`;
|
|
424
|
+
const requestMessage = {
|
|
425
|
+
type: "req",
|
|
426
|
+
id: requestId,
|
|
427
|
+
method: "close",
|
|
428
|
+
params: body,
|
|
429
|
+
};
|
|
430
|
+
const client = this.getAuthenticatedClients()[0];
|
|
431
|
+
if (client) {
|
|
432
|
+
this.handlers.message?.(client.id, requestMessage);
|
|
433
|
+
}
|
|
434
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
435
|
+
res.end(JSON.stringify({ ok: true }));
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Channel endpoint
|
|
439
|
+
*/
|
|
440
|
+
async handleChannel(req, res) {
|
|
441
|
+
if (req.method !== "POST") {
|
|
442
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
443
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
const token = extractToken(req);
|
|
447
|
+
const authResult = await validateAuth(token, this.config.auth);
|
|
448
|
+
if (!authResult.valid) {
|
|
449
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
450
|
+
res.end(JSON.stringify({ error: "Authentication failed" }));
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
const body = await this.parseBody(req);
|
|
454
|
+
if (!body) {
|
|
455
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
456
|
+
res.end(JSON.stringify({ error: "Invalid request body" }));
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
460
|
+
res.end(JSON.stringify({ ok: true }));
|
|
461
|
+
}
|
|
462
|
+
// ══════════════════════════════════════════════════════════════════════════
|
|
463
|
+
// Express Integration
|
|
464
|
+
// ══════════════════════════════════════════════════════════════════════════
|
|
465
|
+
/**
|
|
466
|
+
* Handle a request from Express middleware.
|
|
467
|
+
* This allows the gateway to be mounted in an existing Express app.
|
|
468
|
+
*/
|
|
469
|
+
handleExpressRequest(req, res, next) {
|
|
470
|
+
this.handleRequest(req, res).catch((error) => {
|
|
471
|
+
console.error("Request error:", error);
|
|
472
|
+
if (!res.headersSent) {
|
|
473
|
+
if (res.status && res.json) {
|
|
474
|
+
res.status(500).json({ error: "Internal server error" });
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
res.writeHead(500, { "Content-Type": "application/json" });
|
|
478
|
+
res.end(JSON.stringify({ error: "Internal server error" }));
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
// ══════════════════════════════════════════════════════════════════════════
|
|
484
|
+
// Utilities
|
|
485
|
+
// ══════════════════════════════════════════════════════════════════════════
|
|
486
|
+
parseBody(req) {
|
|
487
|
+
// If body already parsed by Express middleware, use it
|
|
488
|
+
if (req.body && typeof req.body === "object") {
|
|
489
|
+
return Promise.resolve(req.body);
|
|
490
|
+
}
|
|
491
|
+
// Otherwise, read from stream
|
|
492
|
+
return new Promise((resolve) => {
|
|
493
|
+
let body = "";
|
|
494
|
+
req.on("data", (chunk) => {
|
|
495
|
+
body += chunk.toString();
|
|
496
|
+
});
|
|
497
|
+
req.on("end", () => {
|
|
498
|
+
try {
|
|
499
|
+
resolve(JSON.parse(body));
|
|
500
|
+
}
|
|
501
|
+
catch {
|
|
502
|
+
resolve(null);
|
|
503
|
+
}
|
|
504
|
+
});
|
|
505
|
+
req.on("error", () => {
|
|
506
|
+
resolve(null);
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
// ============================================================================
|
|
512
|
+
// Factory Function
|
|
513
|
+
// ============================================================================
|
|
514
|
+
export function createHTTPTransport(config) {
|
|
515
|
+
return new HTTPTransport(config);
|
|
516
|
+
}
|
|
517
|
+
//# sourceMappingURL=http-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentick/gateway
|
|
3
|
+
*
|
|
4
|
+
* Standalone daemon for multi-client, multi-agent access.
|
|
5
|
+
* Supports both WebSocket and HTTP/SSE transports.
|
|
6
|
+
*/
|
|
7
|
+
export { Gateway, createGateway } from "./gateway.js";
|
|
8
|
+
export { AppRegistry } from "./app-registry.js";
|
|
9
|
+
export { SessionManager } from "./session-manager.js";
|
|
10
|
+
export { type Transport, type TransportClient, type TransportConfig, type TransportEvents, BaseTransport, } from "./transport.js";
|
|
11
|
+
export { WSTransport, createWSTransport } from "./ws-transport.js";
|
|
12
|
+
export { HTTPTransport, createHTTPTransport, type HTTPTransportConfig } from "./http-transport.js";
|
|
13
|
+
export { createTestGateway, createMockApp, createMockSession, createMockExecutionHandle, waitForGatewayEvent, type TestGatewayOptions, type TestGatewayClient, type TestGatewayResult, type MockAppOptions, type MockSessionOptions, type MockSession, type MockApp, type MockSessionExecutionHandle, type MockExecutionHandleOptions, } from "./testing.js";
|
|
14
|
+
export { parseSessionKey, formatSessionKey, type SessionKey, type ClientMessage, type GatewayMessage, type ConnectMessage, type RequestMessage, type ResponseMessage, type EventMessage, type GatewayMethod, type GatewayEventType, type SendParams, type StatusParams, type HistoryParams, type StatusPayload, type AppsPayload, type SessionsPayload, } from "./transport-protocol.js";
|
|
15
|
+
export { type GatewayConfig, type AuthConfig, type AuthResult, type StorageConfig, type ChannelAdapter, type GatewayContext, type SessionContext, type SessionEvent, type RoutingConfig, type IncomingMessage, type RoutingContext, type ClientState, type SessionState, type GatewayEvents, type UserContext, type MethodDefinition, type MethodDefinitionInput, type MethodNamespace, type MethodsConfig, type Method, type SimpleMethodHandler, type StreamingMethodHandler, method, isMethodDefinition, METHOD_DEFINITION, type ZodLikeSchema, } from "./types.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGnG,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAE3B,MAAM,EACN,kBAAkB,EAClB,iBAAiB,EAEjB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentick/gateway
|
|
3
|
+
*
|
|
4
|
+
* Standalone daemon for multi-client, multi-agent access.
|
|
5
|
+
* Supports both WebSocket and HTTP/SSE transports.
|
|
6
|
+
*/
|
|
7
|
+
// Main exports
|
|
8
|
+
export { Gateway, createGateway } from "./gateway.js";
|
|
9
|
+
export { AppRegistry } from "./app-registry.js";
|
|
10
|
+
export { SessionManager } from "./session-manager.js";
|
|
11
|
+
// Transport layer
|
|
12
|
+
export { BaseTransport, } from "./transport.js";
|
|
13
|
+
export { WSTransport, createWSTransport } from "./ws-transport.js";
|
|
14
|
+
export { HTTPTransport, createHTTPTransport } from "./http-transport.js";
|
|
15
|
+
// Testing utilities
|
|
16
|
+
export { createTestGateway, createMockApp, createMockSession, createMockExecutionHandle, waitForGatewayEvent, } from "./testing.js";
|
|
17
|
+
// Protocol types
|
|
18
|
+
export { parseSessionKey, formatSessionKey, } from "./transport-protocol.js";
|
|
19
|
+
// Configuration types
|
|
20
|
+
export {
|
|
21
|
+
// Method factory
|
|
22
|
+
method, isMethodDefinition, METHOD_DEFINITION, } from "./types.js";
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,kBAAkB;AAClB,OAAO,EAKL,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAA4B,MAAM,qBAAqB,CAAC;AAEnG,oBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,GAUpB,MAAM,cAAc,CAAC;AAEtB,iBAAiB;AACjB,OAAO,EACL,eAAe,EACf,gBAAgB,GAgBjB,MAAM,yBAAyB,CAAC;AAEjC,sBAAsB;AACtB,OAAO;AAwBL,iBAAiB;AACjB,MAAM,EACN,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,YAAY,CAAC"}
|