@opperai/agents 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1028,7 +1028,7 @@ var BaseAgent = class {
1028
1028
  }
1029
1029
  this.opperConfig = {
1030
1030
  apiKey: config.opperConfig?.apiKey ?? process.env["OPPER_API_KEY"],
1031
- baseUrl: config.opperConfig?.baseUrl,
1031
+ baseUrl: config.opperConfig?.baseUrl ?? process.env["OPPER_BASE_URL"],
1032
1032
  ...config.opperConfig
1033
1033
  };
1034
1034
  this.memory = this.initializeMemory(config);
@@ -1291,6 +1291,7 @@ var BaseAgent = class {
1291
1291
  * @returns Tool execution result
1292
1292
  */
1293
1293
  async executeTool(toolName, input, context, options) {
1294
+ const toolCallId = crypto.randomUUID();
1294
1295
  const tool2 = this.tools.get(toolName);
1295
1296
  if (!tool2) {
1296
1297
  const failure = exports.ToolResultFactory.failure(
@@ -1299,6 +1300,7 @@ var BaseAgent = class {
1299
1300
  );
1300
1301
  const timestamp = Date.now();
1301
1302
  context.recordToolCall({
1303
+ id: toolCallId,
1302
1304
  toolName,
1303
1305
  input,
1304
1306
  success: false,
@@ -1310,7 +1312,8 @@ var BaseAgent = class {
1310
1312
  await this.triggerHook(HookEvents.ToolError, {
1311
1313
  context,
1312
1314
  toolName,
1313
- error: failure.error
1315
+ error: failure.error,
1316
+ toolCallId
1314
1317
  });
1315
1318
  return failure;
1316
1319
  }
@@ -1325,11 +1328,13 @@ var BaseAgent = class {
1325
1328
  await this.triggerHook(HookEvents.BeforeTool, {
1326
1329
  context,
1327
1330
  tool: tool2,
1328
- input
1331
+ input,
1332
+ toolCallId
1329
1333
  });
1330
1334
  const result = await tool2.execute(input, executionContext);
1331
1335
  const finishedAt = Date.now();
1332
1336
  const record = context.recordToolCall({
1337
+ id: toolCallId,
1333
1338
  toolName: tool2.name,
1334
1339
  input,
1335
1340
  ...result.success && { output: result.output },
@@ -1341,6 +1346,15 @@ var BaseAgent = class {
1341
1346
  finishedAt,
1342
1347
  metadata: {}
1343
1348
  });
1349
+ if (!result.success) {
1350
+ await this.triggerHook(HookEvents.ToolError, {
1351
+ context,
1352
+ tool: tool2,
1353
+ toolName: tool2.name,
1354
+ error: result.error,
1355
+ toolCallId
1356
+ });
1357
+ }
1344
1358
  await this.triggerHook(HookEvents.AfterTool, {
1345
1359
  context,
1346
1360
  tool: tool2,
@@ -1358,6 +1372,7 @@ var BaseAgent = class {
1358
1372
  }
1359
1373
  );
1360
1374
  const record = context.recordToolCall({
1375
+ id: toolCallId,
1361
1376
  toolName: tool2.name,
1362
1377
  input,
1363
1378
  success: false,
@@ -1370,7 +1385,8 @@ var BaseAgent = class {
1370
1385
  context,
1371
1386
  tool: tool2,
1372
1387
  toolName: tool2.name,
1373
- error
1388
+ error,
1389
+ toolCallId
1374
1390
  });
1375
1391
  await this.triggerHook(HookEvents.AfterTool, {
1376
1392
  context,
@@ -1639,7 +1655,7 @@ var mergeSchemaDefaults = (schema, value) => {
1639
1655
 
1640
1656
  // package.json
1641
1657
  var package_default = {
1642
- version: "0.4.0"};
1658
+ version: "0.5.0"};
1643
1659
 
1644
1660
  // src/utils/version.ts
1645
1661
  var SDK_NAME = "@opperai/agents";
@@ -1687,7 +1703,8 @@ var OpperClient = class {
1687
1703
  constructor(apiKey, options = {}) {
1688
1704
  this.client = new opperai.Opper({
1689
1705
  httpBearer: apiKey ?? process.env["OPPER_HTTP_BEARER"] ?? "",
1690
- userAgent: getUserAgent()
1706
+ userAgent: getUserAgent(),
1707
+ ...options.baseUrl && { serverURL: options.baseUrl }
1691
1708
  });
1692
1709
  this.logger = options.logger ?? getDefaultLogger();
1693
1710
  this.retryConfig = {
@@ -2132,7 +2149,8 @@ var Agent = class extends BaseAgent {
2132
2149
  }
2133
2150
  }
2134
2151
  this.opperClient = config.opperClient ?? new OpperClient(this.opperConfig.apiKey, {
2135
- logger: this.logger
2152
+ logger: this.logger,
2153
+ ...this.opperConfig.baseUrl && { baseUrl: this.opperConfig.baseUrl }
2136
2154
  });
2137
2155
  }
2138
2156
  /**
@@ -3400,6 +3418,11 @@ var mcp = (...configs) => {
3400
3418
 
3401
3419
  // src/utils/tool-decorators.ts
3402
3420
  init_tool();
3421
+ var isToolResult = (value) => {
3422
+ if (typeof value !== "object" || value === null) return false;
3423
+ const obj = value;
3424
+ return typeof obj["success"] === "boolean" && typeof obj["toolName"] === "string" && ("output" in obj || "error" in obj);
3425
+ };
3403
3426
  var reflectWithMetadata = Reflect;
3404
3427
  var ReflectMetadata = {
3405
3428
  define: (metadataKey, metadataValue, target, propertyKey) => {
@@ -3529,6 +3552,9 @@ function createFunctionTool(fn, options = {}) {
3529
3552
  } else {
3530
3553
  result = await Promise.resolve(fn(input, context));
3531
3554
  }
3555
+ if (isToolResult(result)) {
3556
+ return result;
3557
+ }
3532
3558
  return exports.ToolResultFactory.success(name, result, {
3533
3559
  startedAt,
3534
3560
  finishedAt: Date.now(),