@cloudbase/agent-server 0.0.11 → 0.0.12

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @cloudbase/agent-server
2
2
 
3
+ ## 1.0.1-alpha.6
4
+
5
+ ### Patch Changes
6
+
7
+ - alpha release 0.1.2-alpha.1
8
+ - Update all public packages to version 0.1.2-alpha.1
9
+ - Trigger automated alpha release workflow
10
+ - Includes latest features and improvements
11
+
12
+ - Updated dependencies
13
+ - @cloudbase/agent-shared@1.0.1-alpha.6
14
+
3
15
  ## 1.0.1-alpha.5
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -231,15 +231,68 @@ function handler2(input, agent) {
231
231
  // src/agui/sendMessageAGUI/server.ts
232
232
  var import_server3 = require("@whatwg-node/server");
233
233
  var import_client2 = require("@ag-ui/client");
234
+ var import_uuid2 = require("uuid");
234
235
  function createServerAdapter2(createAgent) {
235
236
  return (0, import_server3.createServerAdapter)(async (request) => {
236
- const input = import_client2.RunAgentInputSchema.parse(await request.json());
237
- const { agent: unknownAgent, cleanup } = await Promise.resolve(
238
- createAgent({ request })
239
- );
240
- const agent = "toAGUIAgent" in unknownAgent ? unknownAgent.toAGUIAgent() : unknownAgent;
241
- const events = handler2(input, agent);
237
+ const inputRes = await safeAsync(async () => {
238
+ const rawInput = await request.json();
239
+ const inputWithDefaults = {
240
+ tools: [],
241
+ context: [],
242
+ state: {},
243
+ forwardedProps: {},
244
+ ...rawInput,
245
+ runId: typeof rawInput.runId === "string" && rawInput.runId ? rawInput.runId : (0, import_uuid2.v4)()
246
+ };
247
+ return import_client2.RunAgentInputSchema.parse(inputWithDefaults);
248
+ });
249
+ if ("error" in inputRes) {
250
+ const { error } = inputRes;
251
+ console.error("[AGUI Server] Pre-stream error:", error);
252
+ return new Response(
253
+ JSON.stringify({
254
+ error: error instanceof Error ? error.message : String(error)
255
+ }),
256
+ {
257
+ status: 400,
258
+ headers: { "Content-Type": "application/json" }
259
+ }
260
+ );
261
+ }
262
+ const createAgentRes = await safeAsync(async () => {
263
+ const res = await Promise.resolve(createAgent({ request }));
264
+ return {
265
+ cleanup: res.cleanup,
266
+ agent: "toAGUIAgent" in res.agent ? res.agent.toAGUIAgent() : res.agent
267
+ };
268
+ });
269
+ if ("error" in createAgentRes) {
270
+ const { error } = createAgentRes;
271
+ console.error("[AGUI Server] Pre-stream error:", error);
272
+ return new Response(
273
+ JSON.stringify({
274
+ error: error instanceof Error ? error.message : String(error)
275
+ }),
276
+ {
277
+ status: 500,
278
+ headers: { "Content-Type": "application/json" }
279
+ }
280
+ );
281
+ }
282
+ const events = handler2(inputRes.result, createAgentRes.result.agent);
242
283
  let heartbeat;
284
+ let cleanupCalled = false;
285
+ const safeCleanup = () => {
286
+ var _a, _b;
287
+ if (!cleanupCalled) {
288
+ cleanupCalled = true;
289
+ try {
290
+ (_b = (_a = createAgentRes.result).cleanup) == null ? void 0 : _b.call(_a);
291
+ } catch (e) {
292
+ console.error(e);
293
+ }
294
+ }
295
+ };
243
296
  const stream = new ReadableStream({
244
297
  async start(controller) {
245
298
  const encoder = new TextEncoder();
@@ -253,14 +306,26 @@ function createServerAdapter2(createAgent) {
253
306
  `;
254
307
  controller.enqueue(encoder.encode(sseChunk));
255
308
  }
309
+ } catch (error) {
310
+ console.error("[AGUI Server] Stream error:", error);
311
+ const errorEvent = {
312
+ type: import_client2.EventType.RUN_ERROR,
313
+ message: error instanceof Error ? error.message : String(error)
314
+ };
315
+ controller.enqueue(
316
+ encoder.encode(`data: ${JSON.stringify(errorEvent)}
317
+
318
+ `)
319
+ );
256
320
  } finally {
257
321
  if (heartbeat) clearInterval(heartbeat);
258
322
  controller.close();
259
- cleanup == null ? void 0 : cleanup();
323
+ safeCleanup();
260
324
  }
261
325
  },
262
326
  cancel() {
263
327
  if (heartbeat) clearInterval(heartbeat);
328
+ safeCleanup();
264
329
  }
265
330
  });
266
331
  const headers = new Headers({
@@ -271,6 +336,15 @@ function createServerAdapter2(createAgent) {
271
336
  return new Response(stream, { status: 200, headers });
272
337
  });
273
338
  }
339
+ async function safeAsync(fn) {
340
+ try {
341
+ return {
342
+ result: await fn()
343
+ };
344
+ } catch (error) {
345
+ return { error };
346
+ }
347
+ }
274
348
 
275
349
  // src/agui/healthz/index.ts
276
350
  var healthz_exports = {};
@@ -288,7 +362,7 @@ __export(openai_exports, {
288
362
  });
289
363
 
290
364
  // src/agui/openai/handler.ts
291
- var import_uuid2 = require("uuid");
365
+ var import_uuid3 = require("uuid");
292
366
  var import_repeater3 = require("@repeaterjs/repeater");
293
367
  function handler3(input, agent) {
294
368
  var _a;
@@ -300,12 +374,12 @@ function handler3(input, agent) {
300
374
  description: tool.function.description,
301
375
  parameters: tool.function.parameters
302
376
  })),
303
- conversationId: (0, import_uuid2.v4)()
377
+ conversationId: (0, import_uuid3.v4)()
304
378
  },
305
379
  agent
306
380
  );
307
381
  return new import_repeater3.Repeater(async (push, stop) => {
308
- const id = (0, import_uuid2.v4)();
382
+ const id = (0, import_uuid3.v4)();
309
383
  let tools = [];
310
384
  let lastWithToolCall = false;
311
385
  let maxIndex = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/agent-server",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist/",
@@ -21,7 +21,7 @@
21
21
  "openai": "6.3.0",
22
22
  "uuid": "^10.0.0",
23
23
  "zod": "^4.1.12",
24
- "@cloudbase/agent-shared": "^0.0.11"
24
+ "@cloudbase/agent-shared": "^0.0.12"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/cors": "^2.8.19",