@openserv-labs/sdk 1.0.1 → 1.1.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/README.md +67 -0
- package/dist/agent.d.ts +36 -6
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +134 -84
- package/dist/capability.d.ts +4 -3
- package/dist/capability.d.ts.map +1 -1
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@ A powerful TypeScript framework for building non-deterministic AI agents with ad
|
|
|
12
12
|
- [Table of Contents](#table-of-contents)
|
|
13
13
|
- [Features](#features)
|
|
14
14
|
- [Framework Architecture](#framework-architecture)
|
|
15
|
+
- [Framework \& Blockchain Compatibility](#framework--blockchain-compatibility)
|
|
15
16
|
- [Shadow Agents](#shadow-agents)
|
|
16
17
|
- [Control Levels](#control-levels)
|
|
17
18
|
- [Developer Focus](#developer-focus)
|
|
@@ -38,6 +39,8 @@ A powerful TypeScript framework for building non-deterministic AI agents with ad
|
|
|
38
39
|
- [Workspace Management](#workspace-management)
|
|
39
40
|
- [Get Files](#get-files)
|
|
40
41
|
- [Upload File](#upload-file)
|
|
42
|
+
- [Integration Management](#integration-management)
|
|
43
|
+
- [Call Integration](#call-integration)
|
|
41
44
|
- [Advanced Usage](#advanced-usage)
|
|
42
45
|
- [OpenAI Process Runtime](#openai-process-runtime)
|
|
43
46
|
- [Error Handling](#error-handling)
|
|
@@ -51,6 +54,8 @@ A powerful TypeScript framework for building non-deterministic AI agents with ad
|
|
|
51
54
|
- 🤝 Inter-agent collaboration and communication
|
|
52
55
|
- 🔌 Extensible agent architecture with custom capabilities
|
|
53
56
|
- 🔧 Fully autonomous agent runtime with shadow agents
|
|
57
|
+
- 🌐 Framework-agnostic - integrate agents from any AI framework
|
|
58
|
+
- ⛓️ Blockchain-agnostic - compatible with any chain implementation
|
|
54
59
|
- 🤖 Task execution and chat message handling
|
|
55
60
|
- 🔄 Asynchronous task management
|
|
56
61
|
- 📁 File operations and management
|
|
@@ -61,6 +66,22 @@ A powerful TypeScript framework for building non-deterministic AI agents with ad
|
|
|
61
66
|
|
|
62
67
|
## Framework Architecture
|
|
63
68
|
|
|
69
|
+
### Framework & Blockchain Compatibility
|
|
70
|
+
|
|
71
|
+
OpenServ is designed to be completely framework and blockchain agnostic, allowing you to:
|
|
72
|
+
|
|
73
|
+
- Integrate agents built with any AI framework (e.g., LangChain, BabyAGI, Eliza, G.A.M.E, etc.)
|
|
74
|
+
- Connect agents operating on any blockchain network
|
|
75
|
+
- Mix and match different framework agents in the same workspace
|
|
76
|
+
- Maintain full compatibility with your existing agent implementations
|
|
77
|
+
|
|
78
|
+
This flexibility ensures you can:
|
|
79
|
+
|
|
80
|
+
- Use your preferred AI frameworks and tools
|
|
81
|
+
- Leverage existing agent implementations
|
|
82
|
+
- Integrate with any blockchain ecosystem
|
|
83
|
+
- Build cross-framework agent collaborations
|
|
84
|
+
|
|
64
85
|
### Shadow Agents
|
|
65
86
|
|
|
66
87
|
Each agent is supported by two "shadow agents":
|
|
@@ -498,6 +519,52 @@ await agent.uploadFile({
|
|
|
498
519
|
})
|
|
499
520
|
```
|
|
500
521
|
|
|
522
|
+
### Integration Management
|
|
523
|
+
|
|
524
|
+
#### Call Integration
|
|
525
|
+
|
|
526
|
+
```typescript
|
|
527
|
+
const response = await agent.callIntegration({
|
|
528
|
+
workspaceId: number,
|
|
529
|
+
integrationId: string,
|
|
530
|
+
details: {
|
|
531
|
+
endpoint: string,
|
|
532
|
+
method: string,
|
|
533
|
+
data?: object
|
|
534
|
+
}
|
|
535
|
+
})
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
Allows agents to interact with external services and APIs that are integrated with OpenServ. This method provides a secure way to make API calls to configured integrations within a workspace. Authentication is handled securely and automatically through the OpenServ platform. This is primarily useful for calling external APIs in a deterministic way.
|
|
539
|
+
|
|
540
|
+
**Parameters:**
|
|
541
|
+
|
|
542
|
+
- `workspaceId`: ID of the workspace where the integration is configured
|
|
543
|
+
- `integrationId`: ID of the integration to call (e.g., 'twitter-v2', 'github')
|
|
544
|
+
- `details`: Object containing:
|
|
545
|
+
- `endpoint`: The endpoint to call on the integration
|
|
546
|
+
- `method`: HTTP method (GET, POST, etc.)
|
|
547
|
+
- `data`: Optional payload for the request
|
|
548
|
+
|
|
549
|
+
**Returns:** The response from the integration endpoint
|
|
550
|
+
|
|
551
|
+
**Example:**
|
|
552
|
+
|
|
553
|
+
```typescript
|
|
554
|
+
// Example: Sending a tweet using Twitter integration
|
|
555
|
+
const response = await agent.callIntegration({
|
|
556
|
+
workspaceId: 123,
|
|
557
|
+
integrationId: 'twitter-v2',
|
|
558
|
+
details: {
|
|
559
|
+
endpoint: '/2/tweets',
|
|
560
|
+
method: 'POST',
|
|
561
|
+
data: {
|
|
562
|
+
text: 'Hello from my AI agent!'
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
})
|
|
566
|
+
```
|
|
567
|
+
|
|
501
568
|
## Advanced Usage
|
|
502
569
|
|
|
503
570
|
### OpenAI Process Runtime
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type AxiosInstance } from 'axios';
|
|
2
|
-
import type { GetFilesParams, UploadFileParams, MarkTaskAsErroredParams, CompleteTaskParams, SendChatMessageParams, GetTaskDetailParams, GetAgentsParams, GetTasksParams, CreateTaskParams, AddLogToTaskParams, RequestHumanAssistanceParams, UpdateTaskStatusParams, ProcessParams } from './types';
|
|
3
|
-
import {
|
|
2
|
+
import type { GetFilesParams, UploadFileParams, MarkTaskAsErroredParams, CompleteTaskParams, SendChatMessageParams, GetTaskDetailParams, GetAgentsParams, GetTasksParams, CreateTaskParams, AddLogToTaskParams, RequestHumanAssistanceParams, UpdateTaskStatusParams, ProcessParams, IntegrationCallRequest } from './types';
|
|
3
|
+
import type { doTaskActionSchema, respondChatMessageActionSchema } from './types';
|
|
4
|
+
import { actionSchema } from './types';
|
|
4
5
|
import type { ChatCompletionMessageParam, ChatCompletion } from 'openai/resources/chat/completions';
|
|
5
6
|
import OpenAI from 'openai';
|
|
6
7
|
import type { z } from 'zod';
|
|
@@ -30,6 +31,13 @@ export interface AgentOptions {
|
|
|
30
31
|
* Required when using the process() method.
|
|
31
32
|
*/
|
|
32
33
|
openaiApiKey?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Error handler function for all agent operations.
|
|
36
|
+
* Defaults to logging the error if not provided.
|
|
37
|
+
* @param error - The error that occurred
|
|
38
|
+
* @param context - Additional context about where the error occurred
|
|
39
|
+
*/
|
|
40
|
+
onError?: (error: Error, context?: Record<string, unknown>) => void;
|
|
33
41
|
}
|
|
34
42
|
export declare class Agent {
|
|
35
43
|
private options;
|
|
@@ -68,7 +76,7 @@ export declare class Agent {
|
|
|
68
76
|
* Each capability is an instance of the Capability class with a name, description, schema, and run function.
|
|
69
77
|
* @protected
|
|
70
78
|
*/
|
|
71
|
-
protected tools: Array<Capability<
|
|
79
|
+
protected tools: Array<Capability<z.ZodTypeAny>>;
|
|
72
80
|
/**
|
|
73
81
|
* The OpenServ API key used for authentication.
|
|
74
82
|
* Can be provided in options or via OPENSERV_API_KEY environment variable.
|
|
@@ -138,7 +146,7 @@ export declare class Agent {
|
|
|
138
146
|
name: string;
|
|
139
147
|
description: string;
|
|
140
148
|
schema: S;
|
|
141
|
-
run(params: {
|
|
149
|
+
run(this: Agent, params: {
|
|
142
150
|
args: z.infer<S>;
|
|
143
151
|
action?: z.infer<typeof actionSchema>;
|
|
144
152
|
}, messages: ChatCompletionMessageParam[]): string | Promise<string>;
|
|
@@ -161,10 +169,10 @@ export declare class Agent {
|
|
|
161
169
|
name: string;
|
|
162
170
|
description: string;
|
|
163
171
|
schema: T[K];
|
|
164
|
-
run:
|
|
172
|
+
run(this: Agent, params: {
|
|
165
173
|
args: z.infer<T[K]>;
|
|
166
174
|
action?: z.infer<typeof actionSchema>;
|
|
167
|
-
}, messages: ChatCompletionMessageParam[])
|
|
175
|
+
}, messages: ChatCompletionMessageParam[]): string | Promise<string>;
|
|
168
176
|
};
|
|
169
177
|
}): this;
|
|
170
178
|
/**
|
|
@@ -320,6 +328,7 @@ export declare class Agent {
|
|
|
320
328
|
* @param {Object} req.body - Request body
|
|
321
329
|
* @param {z.infer<z.ZodTypeAny>} [req.body.args] - Arguments for the tool
|
|
322
330
|
* @param {z.infer<typeof actionSchema>} [req.body.action] - Action context
|
|
331
|
+
* @param {ChatCompletionMessageParam[]} [req.body.messages] - Message history
|
|
323
332
|
* @returns {Promise<{result: string}>} The result of the tool execution
|
|
324
333
|
* @throws {BadRequest} If tool name is missing or tool is not found
|
|
325
334
|
* @throws {Error} If tool execution fails
|
|
@@ -331,6 +340,7 @@ export declare class Agent {
|
|
|
331
340
|
body: {
|
|
332
341
|
args?: z.infer<z.ZodTypeAny>;
|
|
333
342
|
action?: z.infer<typeof actionSchema>;
|
|
343
|
+
messages?: ChatCompletionMessageParam[];
|
|
334
344
|
};
|
|
335
345
|
}): Promise<{
|
|
336
346
|
result: string;
|
|
@@ -365,5 +375,25 @@ export declare class Agent {
|
|
|
365
375
|
* @returns {Promise<void>} Resolves when the server has stopped
|
|
366
376
|
*/
|
|
367
377
|
stop(): Promise<void>;
|
|
378
|
+
/**
|
|
379
|
+
* Default error handler that logs the error
|
|
380
|
+
* @private
|
|
381
|
+
*/
|
|
382
|
+
private handleError;
|
|
383
|
+
/**
|
|
384
|
+
* Calls an integration endpoint through the OpenServ platform.
|
|
385
|
+
* This method allows agents to interact with external services and APIs that are integrated with OpenServ.
|
|
386
|
+
*
|
|
387
|
+
* @param {IntegrationCallRequest} integration - The integration request parameters
|
|
388
|
+
* @param {number} integration.workspaceId - ID of the workspace where the integration is configured
|
|
389
|
+
* @param {string} integration.integrationId - ID of the integration to call
|
|
390
|
+
* @param {Object} integration.details - Details of the integration call
|
|
391
|
+
* @param {string} integration.details.endpoint - The endpoint to call on the integration
|
|
392
|
+
* @param {string} integration.details.method - The HTTP method to use (GET, POST, etc.)
|
|
393
|
+
* @param {Object} [integration.details.data] - Optional data payload for the request
|
|
394
|
+
* @returns {Promise<any>} The response from the integration endpoint
|
|
395
|
+
* @throws {Error} If the integration call fails
|
|
396
|
+
*/
|
|
397
|
+
callIntegration(integration: IntegrationCallRequest): Promise<any>;
|
|
368
398
|
}
|
|
369
399
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AASjD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -177,6 +177,7 @@ class Agent {
|
|
|
177
177
|
if (this.tools.some(tool => tool.name === name)) {
|
|
178
178
|
throw new Error(`Tool with name "${name}" already exists`);
|
|
179
179
|
}
|
|
180
|
+
// Type assertion through unknown for safe conversion between compatible generic types
|
|
180
181
|
this.tools.push(new capability_1.Capability(name, description, schema, run));
|
|
181
182
|
return this;
|
|
182
183
|
}
|
|
@@ -194,9 +195,9 @@ class Agent {
|
|
|
194
195
|
* @throws {Error} If any capability has a name that already exists
|
|
195
196
|
*/
|
|
196
197
|
addCapabilities(capabilities) {
|
|
197
|
-
|
|
198
|
+
for (const capability of capabilities) {
|
|
198
199
|
this.addCapability(capability);
|
|
199
|
-
}
|
|
200
|
+
}
|
|
200
201
|
return this;
|
|
201
202
|
}
|
|
202
203
|
/**
|
|
@@ -407,58 +408,75 @@ class Agent {
|
|
|
407
408
|
* @throws {Error} If no response is received from OpenAI or max iterations are reached
|
|
408
409
|
*/
|
|
409
410
|
async process({ messages }) {
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
while (iterationCount < MAX_ITERATIONS) {
|
|
415
|
-
completion = await this.openai.chat.completions.create({
|
|
416
|
-
model: 'gpt-4o',
|
|
417
|
-
messages: currentMessages,
|
|
418
|
-
tools: this.openAiTools
|
|
419
|
-
});
|
|
420
|
-
if (!completion.choices?.length || !completion.choices[0]?.message) {
|
|
421
|
-
throw new Error('No response from OpenAI');
|
|
422
|
-
}
|
|
423
|
-
const lastMessage = completion.choices[0].message;
|
|
424
|
-
// If there are no tool calls, we're done
|
|
425
|
-
if (!lastMessage.tool_calls?.length) {
|
|
426
|
-
return completion;
|
|
411
|
+
try {
|
|
412
|
+
const apiKey = this.options.openaiApiKey || process.env.OPENAI_API_KEY;
|
|
413
|
+
if (!apiKey) {
|
|
414
|
+
throw new Error('OpenAI API key is required for process(). Please provide it in options or set OPENAI_API_KEY environment variable.');
|
|
427
415
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
const result = await tool.run.bind(this)({ args: parsedArgs }, currentMessages);
|
|
441
|
-
return {
|
|
442
|
-
role: 'tool',
|
|
443
|
-
content: JSON.stringify(result),
|
|
444
|
-
tool_call_id: toolCall.id
|
|
445
|
-
};
|
|
416
|
+
const currentMessages = [...messages];
|
|
417
|
+
let completion = null;
|
|
418
|
+
let iterationCount = 0;
|
|
419
|
+
const MAX_ITERATIONS = 10;
|
|
420
|
+
while (iterationCount < MAX_ITERATIONS) {
|
|
421
|
+
completion = await this.openai.chat.completions.create({
|
|
422
|
+
model: 'gpt-4o',
|
|
423
|
+
messages: currentMessages,
|
|
424
|
+
tools: this.tools.length ? this.openAiTools : undefined
|
|
425
|
+
});
|
|
426
|
+
if (!completion.choices?.length || !completion.choices[0]?.message) {
|
|
427
|
+
throw new Error('No response from OpenAI');
|
|
446
428
|
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
return
|
|
451
|
-
role: 'tool',
|
|
452
|
-
content: JSON.stringify({ error: errorMessage }),
|
|
453
|
-
tool_call_id: toolCall.id
|
|
454
|
-
};
|
|
429
|
+
const lastMessage = completion.choices[0].message;
|
|
430
|
+
// If there are no tool calls, we're done
|
|
431
|
+
if (!lastMessage.tool_calls?.length) {
|
|
432
|
+
return completion;
|
|
455
433
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
434
|
+
// Process each tool call
|
|
435
|
+
const toolResults = await Promise.all(lastMessage.tool_calls.map(async (toolCall) => {
|
|
436
|
+
if (!toolCall.function) {
|
|
437
|
+
throw new Error('Tool call function is missing');
|
|
438
|
+
}
|
|
439
|
+
const { name, arguments: args } = toolCall.function;
|
|
440
|
+
const parsedArgs = JSON.parse(args);
|
|
441
|
+
try {
|
|
442
|
+
// Find the tool in our tools array
|
|
443
|
+
const tool = this.tools.find(t => t.name === name);
|
|
444
|
+
if (!tool) {
|
|
445
|
+
throw new Error(`Tool "${name}" not found`);
|
|
446
|
+
}
|
|
447
|
+
// Call the tool's run method with the parsed arguments and bind this
|
|
448
|
+
const result = await tool.run.bind(this)({ args: parsedArgs }, currentMessages);
|
|
449
|
+
return {
|
|
450
|
+
role: 'tool',
|
|
451
|
+
content: JSON.stringify(result),
|
|
452
|
+
tool_call_id: toolCall.id
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
457
|
+
this.handleError(error instanceof Error ? error : new Error(errorMessage), {
|
|
458
|
+
toolCall,
|
|
459
|
+
context: 'tool_execution'
|
|
460
|
+
});
|
|
461
|
+
return {
|
|
462
|
+
role: 'tool',
|
|
463
|
+
content: JSON.stringify({ error: errorMessage }),
|
|
464
|
+
tool_call_id: toolCall.id
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
}));
|
|
468
|
+
// Add the assistant's message and tool results to the conversation
|
|
469
|
+
currentMessages.push(lastMessage, ...toolResults);
|
|
470
|
+
iterationCount++;
|
|
471
|
+
}
|
|
472
|
+
throw new Error('Max iterations reached without completion');
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
this.handleError(error instanceof Error ? error : new Error(String(error)), {
|
|
476
|
+
context: 'process'
|
|
477
|
+
});
|
|
478
|
+
throw error;
|
|
460
479
|
}
|
|
461
|
-
throw new Error('Max iterations reached without completion');
|
|
462
480
|
}
|
|
463
481
|
/**
|
|
464
482
|
* Handle a task execution request
|
|
@@ -486,15 +504,10 @@ class Agent {
|
|
|
486
504
|
});
|
|
487
505
|
}
|
|
488
506
|
catch (error) {
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
error: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
logger_1.logger.error({ error }, 'Failed to forward action to runtime agent');
|
|
497
|
-
throw error;
|
|
507
|
+
this.handleError(error instanceof Error ? error : new Error(String(error)), {
|
|
508
|
+
action,
|
|
509
|
+
context: 'do_task'
|
|
510
|
+
});
|
|
498
511
|
}
|
|
499
512
|
}
|
|
500
513
|
/**
|
|
@@ -510,12 +523,12 @@ class Agent {
|
|
|
510
523
|
}
|
|
511
524
|
];
|
|
512
525
|
if (action.messages) {
|
|
513
|
-
action.messages
|
|
526
|
+
for (const msg of action.messages) {
|
|
514
527
|
messages.push({
|
|
515
528
|
role: msg.author === 'user' ? 'user' : 'assistant',
|
|
516
529
|
content: msg.message
|
|
517
530
|
});
|
|
518
|
-
}
|
|
531
|
+
}
|
|
519
532
|
}
|
|
520
533
|
try {
|
|
521
534
|
await this.runtimeClient.post('/chat', {
|
|
@@ -525,13 +538,10 @@ class Agent {
|
|
|
525
538
|
});
|
|
526
539
|
}
|
|
527
540
|
catch (error) {
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
message: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
541
|
+
this.handleError(error instanceof Error ? error : new Error(String(error)), {
|
|
542
|
+
action,
|
|
543
|
+
context: 'respond_to_chat'
|
|
532
544
|
});
|
|
533
|
-
logger_1.logger.error({ error }, 'Failed to forward action to runtime agent');
|
|
534
|
-
throw error;
|
|
535
545
|
}
|
|
536
546
|
}
|
|
537
547
|
/**
|
|
@@ -543,26 +553,31 @@ class Agent {
|
|
|
543
553
|
* @param {Object} req.body - Request body
|
|
544
554
|
* @param {z.infer<z.ZodTypeAny>} [req.body.args] - Arguments for the tool
|
|
545
555
|
* @param {z.infer<typeof actionSchema>} [req.body.action] - Action context
|
|
556
|
+
* @param {ChatCompletionMessageParam[]} [req.body.messages] - Message history
|
|
546
557
|
* @returns {Promise<{result: string}>} The result of the tool execution
|
|
547
558
|
* @throws {BadRequest} If tool name is missing or tool is not found
|
|
548
559
|
* @throws {Error} If tool execution fails
|
|
549
560
|
*/
|
|
550
561
|
async handleToolRoute(req) {
|
|
551
|
-
if (!('toolName' in req.params)) {
|
|
552
|
-
throw new http_errors_1.BadRequest('Tool name is required');
|
|
553
|
-
}
|
|
554
|
-
const tool = this.tools.find(t => t.name === req.params.toolName);
|
|
555
|
-
if (!tool) {
|
|
556
|
-
throw new http_errors_1.BadRequest(`Tool "${req.params.toolName}" not found`);
|
|
557
|
-
}
|
|
558
562
|
try {
|
|
563
|
+
if (!('toolName' in req.params)) {
|
|
564
|
+
throw new http_errors_1.BadRequest('Tool name is required');
|
|
565
|
+
}
|
|
566
|
+
const tool = this.tools.find(t => t.name === req.params.toolName);
|
|
567
|
+
if (!tool) {
|
|
568
|
+
throw new http_errors_1.BadRequest(`Tool "${req.params.toolName}" not found`);
|
|
569
|
+
}
|
|
559
570
|
const args = await tool.schema.parseAsync(req.body?.args);
|
|
560
|
-
const
|
|
571
|
+
const messages = req.body.messages || [];
|
|
572
|
+
const result = await tool.run.call(this, { args, action: req.body.action }, messages);
|
|
561
573
|
return { result };
|
|
562
574
|
}
|
|
563
575
|
catch (error) {
|
|
564
|
-
|
|
565
|
-
|
|
576
|
+
this.handleError(error instanceof Error ? error : new Error(String(error)), {
|
|
577
|
+
request: req,
|
|
578
|
+
context: 'handle_tool_route'
|
|
579
|
+
});
|
|
580
|
+
throw error;
|
|
566
581
|
}
|
|
567
582
|
}
|
|
568
583
|
/**
|
|
@@ -574,15 +589,23 @@ class Agent {
|
|
|
574
589
|
* @throws {Error} If action type is invalid
|
|
575
590
|
*/
|
|
576
591
|
async handleRootRoute(req) {
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
592
|
+
try {
|
|
593
|
+
const action = await types_1.actionSchema.parseAsync(req.body);
|
|
594
|
+
if (action.type === 'do-task') {
|
|
595
|
+
this.doTask(action);
|
|
596
|
+
}
|
|
597
|
+
else if (action.type === 'respond-chat-message') {
|
|
598
|
+
this.respondToChat(action);
|
|
599
|
+
}
|
|
600
|
+
else
|
|
601
|
+
throw new Error('Invalid action type');
|
|
580
602
|
}
|
|
581
|
-
|
|
582
|
-
this.
|
|
603
|
+
catch (error) {
|
|
604
|
+
this.handleError(error instanceof Error ? error : new Error(String(error)), {
|
|
605
|
+
request: req,
|
|
606
|
+
context: 'handle_root_route'
|
|
607
|
+
});
|
|
583
608
|
}
|
|
584
|
-
else
|
|
585
|
-
throw new Error('Invalid action type');
|
|
586
609
|
}
|
|
587
610
|
/**
|
|
588
611
|
* Sets up the Express routes for the agent's HTTP server.
|
|
@@ -635,6 +658,33 @@ class Agent {
|
|
|
635
658
|
this.server?.close(() => resolve());
|
|
636
659
|
});
|
|
637
660
|
}
|
|
661
|
+
/**
|
|
662
|
+
* Default error handler that logs the error
|
|
663
|
+
* @private
|
|
664
|
+
*/
|
|
665
|
+
handleError(error, context) {
|
|
666
|
+
const handler = this.options.onError ??
|
|
667
|
+
((err, ctx) => logger_1.logger.error({ error: err, ...ctx }, 'Error in agent operation'));
|
|
668
|
+
handler(error, context);
|
|
669
|
+
}
|
|
670
|
+
/**
|
|
671
|
+
* Calls an integration endpoint through the OpenServ platform.
|
|
672
|
+
* This method allows agents to interact with external services and APIs that are integrated with OpenServ.
|
|
673
|
+
*
|
|
674
|
+
* @param {IntegrationCallRequest} integration - The integration request parameters
|
|
675
|
+
* @param {number} integration.workspaceId - ID of the workspace where the integration is configured
|
|
676
|
+
* @param {string} integration.integrationId - ID of the integration to call
|
|
677
|
+
* @param {Object} integration.details - Details of the integration call
|
|
678
|
+
* @param {string} integration.details.endpoint - The endpoint to call on the integration
|
|
679
|
+
* @param {string} integration.details.method - The HTTP method to use (GET, POST, etc.)
|
|
680
|
+
* @param {Object} [integration.details.data] - Optional data payload for the request
|
|
681
|
+
* @returns {Promise<any>} The response from the integration endpoint
|
|
682
|
+
* @throws {Error} If the integration call fails
|
|
683
|
+
*/
|
|
684
|
+
async callIntegration(integration) {
|
|
685
|
+
const response = await this.apiClient.post(`/workspaces/${integration.workspaceId}/integration/${integration.integrationId}/proxy`, integration.details);
|
|
686
|
+
return response.data;
|
|
687
|
+
}
|
|
638
688
|
}
|
|
639
689
|
exports.Agent = Agent;
|
|
640
690
|
function convertToolToJsonSchema(tool) {
|
package/dist/capability.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import type { z } from 'zod';
|
|
2
2
|
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions';
|
|
3
3
|
import type { CapabilityFuncParams } from './types';
|
|
4
|
+
import type { Agent } from './agent';
|
|
4
5
|
export declare class Capability<Schema extends z.ZodTypeAny> {
|
|
5
6
|
readonly name: string;
|
|
6
7
|
readonly description: string;
|
|
7
8
|
readonly schema: Schema;
|
|
8
|
-
readonly run: (params: CapabilityFuncParams<Schema>, messages: ChatCompletionMessageParam[]) => string | Promise<string>;
|
|
9
|
-
constructor(name: string, description: string, schema: Schema, run: (params: CapabilityFuncParams<Schema>, messages: ChatCompletionMessageParam[]) => string | Promise<string>);
|
|
9
|
+
readonly run: (this: Agent, params: CapabilityFuncParams<Schema>, messages: ChatCompletionMessageParam[]) => string | Promise<string>;
|
|
10
|
+
constructor(name: string, description: string, schema: Schema, run: (this: Agent, params: CapabilityFuncParams<Schema>, messages: ChatCompletionMessageParam[]) => string | Promise<string>);
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=capability.d.ts.map
|
package/dist/capability.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,qBAAa,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU;aAE/B,IAAI,EAAE,MAAM;aACZ,WAAW,EAAE,MAAM;aACnB,MAAM,EAAE,MAAM;aACd,GAAG,EAAE,CACnB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACpC,QAAQ,EAAE,0BAA0B,EAAE,KACnC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAPb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CACnB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACpC,QAAQ,EAAE,0BAA0B,EAAE,KACnC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAEhC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1305,4 +1305,23 @@ export interface UpdateTaskStatusParams {
|
|
|
1305
1305
|
export interface ProcessParams {
|
|
1306
1306
|
messages: ChatCompletionMessageParam[];
|
|
1307
1307
|
}
|
|
1308
|
+
export interface ProxyConfiguration {
|
|
1309
|
+
endpoint: string;
|
|
1310
|
+
providerConfigKey?: string;
|
|
1311
|
+
connectionId?: string;
|
|
1312
|
+
method?: 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE' | 'get' | 'post' | 'patch' | 'put' | 'delete';
|
|
1313
|
+
headers?: Record<string, string>;
|
|
1314
|
+
params?: string | Record<string, string | number>;
|
|
1315
|
+
data?: unknown;
|
|
1316
|
+
retries?: number;
|
|
1317
|
+
baseUrlOverride?: string;
|
|
1318
|
+
decompress?: boolean;
|
|
1319
|
+
responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream';
|
|
1320
|
+
retryOn?: number[] | null;
|
|
1321
|
+
}
|
|
1322
|
+
export interface IntegrationCallRequest {
|
|
1323
|
+
workspaceId: number;
|
|
1324
|
+
integrationId: string;
|
|
1325
|
+
details: ProxyConfiguration;
|
|
1326
|
+
}
|
|
1308
1327
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openserv-labs/sdk",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "OpenServ Agent SDK - Create AI agents easily",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"build": "tsc",
|
|
9
9
|
"dev": "tsc --watch",
|
|
10
10
|
"dev:example": "ts-node-dev --respawn --transpile-only examples/marketing-agent.ts",
|
|
11
|
+
"dev:twitter": "ts-node-dev --respawn --transpile-only examples/twitter-agent.ts",
|
|
11
12
|
"dev:custom-agent": "ts-node-dev --respawn --transpile-only examples/custom-agent.ts",
|
|
12
13
|
"check-types": "tsc --noEmit",
|
|
13
14
|
"prepublishOnly": "npm run build && npm run lint && npm run check-types && npm run test",
|