@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 +33 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +33 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -574,7 +574,9 @@ declare class AgentContext {
|
|
|
574
574
|
*/
|
|
575
575
|
cleanupBreakdownIfOnlyParent(parentAgentName: string): void;
|
|
576
576
|
addCycle(cycle: ExecutionCycle): ExecutionCycle;
|
|
577
|
-
recordToolCall(call: Omit<ToolCallRecord, "id">
|
|
577
|
+
recordToolCall(call: Omit<ToolCallRecord, "id"> & {
|
|
578
|
+
id?: string;
|
|
579
|
+
}): ToolCallRecord;
|
|
578
580
|
getContextSize(): number;
|
|
579
581
|
getLastNCycles(count?: number): ExecutionCycle[];
|
|
580
582
|
getLastIterationsSummary(count?: number): IterationSummary[];
|
|
@@ -706,6 +708,7 @@ interface HookPayloadMap {
|
|
|
706
708
|
context: AgentContext;
|
|
707
709
|
tool: Tool<unknown, unknown>;
|
|
708
710
|
input: unknown;
|
|
711
|
+
toolCallId: string;
|
|
709
712
|
};
|
|
710
713
|
[HookEvents.AfterTool]: {
|
|
711
714
|
context: AgentContext;
|
|
@@ -718,6 +721,7 @@ interface HookPayloadMap {
|
|
|
718
721
|
toolName: string;
|
|
719
722
|
tool?: Tool<unknown, unknown>;
|
|
720
723
|
error: unknown;
|
|
724
|
+
toolCallId: string;
|
|
721
725
|
};
|
|
722
726
|
[HookEvents.MemoryRead]: {
|
|
723
727
|
context: AgentContext;
|
|
@@ -1557,6 +1561,12 @@ declare class OpperClient {
|
|
|
1557
1561
|
constructor(apiKey?: string, options?: {
|
|
1558
1562
|
logger?: AgentLogger;
|
|
1559
1563
|
retryConfig?: Partial<RetryConfig>;
|
|
1564
|
+
/**
|
|
1565
|
+
* Override the default Opper API server URL.
|
|
1566
|
+
* Useful for local development or self-hosted deployments.
|
|
1567
|
+
* Example: "http://127.0.0.1:8000/v2"
|
|
1568
|
+
*/
|
|
1569
|
+
baseUrl?: string;
|
|
1560
1570
|
});
|
|
1561
1571
|
/**
|
|
1562
1572
|
* Make a call to Opper with retry logic
|
|
@@ -1607,6 +1617,12 @@ declare class OpperClient {
|
|
|
1607
1617
|
declare function createOpperClient(apiKey?: string, options?: {
|
|
1608
1618
|
logger?: AgentLogger;
|
|
1609
1619
|
retryConfig?: Partial<RetryConfig>;
|
|
1620
|
+
/**
|
|
1621
|
+
* Override the default Opper API server URL.
|
|
1622
|
+
* Useful for local development or self-hosted deployments.
|
|
1623
|
+
* Example: "http://127.0.0.1:8000/v2"
|
|
1624
|
+
*/
|
|
1625
|
+
baseUrl?: string;
|
|
1610
1626
|
}): OpperClient;
|
|
1611
1627
|
|
|
1612
1628
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -574,7 +574,9 @@ declare class AgentContext {
|
|
|
574
574
|
*/
|
|
575
575
|
cleanupBreakdownIfOnlyParent(parentAgentName: string): void;
|
|
576
576
|
addCycle(cycle: ExecutionCycle): ExecutionCycle;
|
|
577
|
-
recordToolCall(call: Omit<ToolCallRecord, "id">
|
|
577
|
+
recordToolCall(call: Omit<ToolCallRecord, "id"> & {
|
|
578
|
+
id?: string;
|
|
579
|
+
}): ToolCallRecord;
|
|
578
580
|
getContextSize(): number;
|
|
579
581
|
getLastNCycles(count?: number): ExecutionCycle[];
|
|
580
582
|
getLastIterationsSummary(count?: number): IterationSummary[];
|
|
@@ -706,6 +708,7 @@ interface HookPayloadMap {
|
|
|
706
708
|
context: AgentContext;
|
|
707
709
|
tool: Tool<unknown, unknown>;
|
|
708
710
|
input: unknown;
|
|
711
|
+
toolCallId: string;
|
|
709
712
|
};
|
|
710
713
|
[HookEvents.AfterTool]: {
|
|
711
714
|
context: AgentContext;
|
|
@@ -718,6 +721,7 @@ interface HookPayloadMap {
|
|
|
718
721
|
toolName: string;
|
|
719
722
|
tool?: Tool<unknown, unknown>;
|
|
720
723
|
error: unknown;
|
|
724
|
+
toolCallId: string;
|
|
721
725
|
};
|
|
722
726
|
[HookEvents.MemoryRead]: {
|
|
723
727
|
context: AgentContext;
|
|
@@ -1557,6 +1561,12 @@ declare class OpperClient {
|
|
|
1557
1561
|
constructor(apiKey?: string, options?: {
|
|
1558
1562
|
logger?: AgentLogger;
|
|
1559
1563
|
retryConfig?: Partial<RetryConfig>;
|
|
1564
|
+
/**
|
|
1565
|
+
* Override the default Opper API server URL.
|
|
1566
|
+
* Useful for local development or self-hosted deployments.
|
|
1567
|
+
* Example: "http://127.0.0.1:8000/v2"
|
|
1568
|
+
*/
|
|
1569
|
+
baseUrl?: string;
|
|
1560
1570
|
});
|
|
1561
1571
|
/**
|
|
1562
1572
|
* Make a call to Opper with retry logic
|
|
@@ -1607,6 +1617,12 @@ declare class OpperClient {
|
|
|
1607
1617
|
declare function createOpperClient(apiKey?: string, options?: {
|
|
1608
1618
|
logger?: AgentLogger;
|
|
1609
1619
|
retryConfig?: Partial<RetryConfig>;
|
|
1620
|
+
/**
|
|
1621
|
+
* Override the default Opper API server URL.
|
|
1622
|
+
* Useful for local development or self-hosted deployments.
|
|
1623
|
+
* Example: "http://127.0.0.1:8000/v2"
|
|
1624
|
+
*/
|
|
1625
|
+
baseUrl?: string;
|
|
1610
1626
|
}): OpperClient;
|
|
1611
1627
|
|
|
1612
1628
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1007,7 +1007,7 @@ var BaseAgent = class {
|
|
|
1007
1007
|
}
|
|
1008
1008
|
this.opperConfig = {
|
|
1009
1009
|
apiKey: config.opperConfig?.apiKey ?? process.env["OPPER_API_KEY"],
|
|
1010
|
-
baseUrl: config.opperConfig?.baseUrl,
|
|
1010
|
+
baseUrl: config.opperConfig?.baseUrl ?? process.env["OPPER_BASE_URL"],
|
|
1011
1011
|
...config.opperConfig
|
|
1012
1012
|
};
|
|
1013
1013
|
this.memory = this.initializeMemory(config);
|
|
@@ -1270,6 +1270,7 @@ var BaseAgent = class {
|
|
|
1270
1270
|
* @returns Tool execution result
|
|
1271
1271
|
*/
|
|
1272
1272
|
async executeTool(toolName, input, context, options) {
|
|
1273
|
+
const toolCallId = randomUUID();
|
|
1273
1274
|
const tool2 = this.tools.get(toolName);
|
|
1274
1275
|
if (!tool2) {
|
|
1275
1276
|
const failure = ToolResultFactory.failure(
|
|
@@ -1278,6 +1279,7 @@ var BaseAgent = class {
|
|
|
1278
1279
|
);
|
|
1279
1280
|
const timestamp = Date.now();
|
|
1280
1281
|
context.recordToolCall({
|
|
1282
|
+
id: toolCallId,
|
|
1281
1283
|
toolName,
|
|
1282
1284
|
input,
|
|
1283
1285
|
success: false,
|
|
@@ -1289,7 +1291,8 @@ var BaseAgent = class {
|
|
|
1289
1291
|
await this.triggerHook(HookEvents.ToolError, {
|
|
1290
1292
|
context,
|
|
1291
1293
|
toolName,
|
|
1292
|
-
error: failure.error
|
|
1294
|
+
error: failure.error,
|
|
1295
|
+
toolCallId
|
|
1293
1296
|
});
|
|
1294
1297
|
return failure;
|
|
1295
1298
|
}
|
|
@@ -1304,11 +1307,13 @@ var BaseAgent = class {
|
|
|
1304
1307
|
await this.triggerHook(HookEvents.BeforeTool, {
|
|
1305
1308
|
context,
|
|
1306
1309
|
tool: tool2,
|
|
1307
|
-
input
|
|
1310
|
+
input,
|
|
1311
|
+
toolCallId
|
|
1308
1312
|
});
|
|
1309
1313
|
const result = await tool2.execute(input, executionContext);
|
|
1310
1314
|
const finishedAt = Date.now();
|
|
1311
1315
|
const record = context.recordToolCall({
|
|
1316
|
+
id: toolCallId,
|
|
1312
1317
|
toolName: tool2.name,
|
|
1313
1318
|
input,
|
|
1314
1319
|
...result.success && { output: result.output },
|
|
@@ -1320,6 +1325,15 @@ var BaseAgent = class {
|
|
|
1320
1325
|
finishedAt,
|
|
1321
1326
|
metadata: {}
|
|
1322
1327
|
});
|
|
1328
|
+
if (!result.success) {
|
|
1329
|
+
await this.triggerHook(HookEvents.ToolError, {
|
|
1330
|
+
context,
|
|
1331
|
+
tool: tool2,
|
|
1332
|
+
toolName: tool2.name,
|
|
1333
|
+
error: result.error,
|
|
1334
|
+
toolCallId
|
|
1335
|
+
});
|
|
1336
|
+
}
|
|
1323
1337
|
await this.triggerHook(HookEvents.AfterTool, {
|
|
1324
1338
|
context,
|
|
1325
1339
|
tool: tool2,
|
|
@@ -1337,6 +1351,7 @@ var BaseAgent = class {
|
|
|
1337
1351
|
}
|
|
1338
1352
|
);
|
|
1339
1353
|
const record = context.recordToolCall({
|
|
1354
|
+
id: toolCallId,
|
|
1340
1355
|
toolName: tool2.name,
|
|
1341
1356
|
input,
|
|
1342
1357
|
success: false,
|
|
@@ -1349,7 +1364,8 @@ var BaseAgent = class {
|
|
|
1349
1364
|
context,
|
|
1350
1365
|
tool: tool2,
|
|
1351
1366
|
toolName: tool2.name,
|
|
1352
|
-
error
|
|
1367
|
+
error,
|
|
1368
|
+
toolCallId
|
|
1353
1369
|
});
|
|
1354
1370
|
await this.triggerHook(HookEvents.AfterTool, {
|
|
1355
1371
|
context,
|
|
@@ -1618,7 +1634,7 @@ var mergeSchemaDefaults = (schema, value) => {
|
|
|
1618
1634
|
|
|
1619
1635
|
// package.json
|
|
1620
1636
|
var package_default = {
|
|
1621
|
-
version: "0.
|
|
1637
|
+
version: "0.5.0"};
|
|
1622
1638
|
|
|
1623
1639
|
// src/utils/version.ts
|
|
1624
1640
|
var SDK_NAME = "@opperai/agents";
|
|
@@ -1666,7 +1682,8 @@ var OpperClient = class {
|
|
|
1666
1682
|
constructor(apiKey, options = {}) {
|
|
1667
1683
|
this.client = new Opper({
|
|
1668
1684
|
httpBearer: apiKey ?? process.env["OPPER_HTTP_BEARER"] ?? "",
|
|
1669
|
-
userAgent: getUserAgent()
|
|
1685
|
+
userAgent: getUserAgent(),
|
|
1686
|
+
...options.baseUrl && { serverURL: options.baseUrl }
|
|
1670
1687
|
});
|
|
1671
1688
|
this.logger = options.logger ?? getDefaultLogger();
|
|
1672
1689
|
this.retryConfig = {
|
|
@@ -2111,7 +2128,8 @@ var Agent = class extends BaseAgent {
|
|
|
2111
2128
|
}
|
|
2112
2129
|
}
|
|
2113
2130
|
this.opperClient = config.opperClient ?? new OpperClient(this.opperConfig.apiKey, {
|
|
2114
|
-
logger: this.logger
|
|
2131
|
+
logger: this.logger,
|
|
2132
|
+
...this.opperConfig.baseUrl && { baseUrl: this.opperConfig.baseUrl }
|
|
2115
2133
|
});
|
|
2116
2134
|
}
|
|
2117
2135
|
/**
|
|
@@ -3379,6 +3397,11 @@ var mcp = (...configs) => {
|
|
|
3379
3397
|
|
|
3380
3398
|
// src/utils/tool-decorators.ts
|
|
3381
3399
|
init_tool();
|
|
3400
|
+
var isToolResult = (value) => {
|
|
3401
|
+
if (typeof value !== "object" || value === null) return false;
|
|
3402
|
+
const obj = value;
|
|
3403
|
+
return typeof obj["success"] === "boolean" && typeof obj["toolName"] === "string" && ("output" in obj || "error" in obj);
|
|
3404
|
+
};
|
|
3382
3405
|
var reflectWithMetadata = Reflect;
|
|
3383
3406
|
var ReflectMetadata = {
|
|
3384
3407
|
define: (metadataKey, metadataValue, target, propertyKey) => {
|
|
@@ -3508,6 +3531,9 @@ function createFunctionTool(fn, options = {}) {
|
|
|
3508
3531
|
} else {
|
|
3509
3532
|
result = await Promise.resolve(fn(input, context));
|
|
3510
3533
|
}
|
|
3534
|
+
if (isToolResult(result)) {
|
|
3535
|
+
return result;
|
|
3536
|
+
}
|
|
3511
3537
|
return ToolResultFactory.success(name, result, {
|
|
3512
3538
|
startedAt,
|
|
3513
3539
|
finishedAt: Date.now(),
|