psadk 1.4.6 → 1.4.8
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 +153 -0
- package/build/main/lib/PSAI.d.ts +2 -2
- package/build/main/lib/PSAI.js +5 -5
- package/build/main/lib/PSAgent.d.ts +35 -0
- package/build/main/lib/PSAgent.js +494 -32
- package/build/main/lib/PSAgentConfig.d.ts +28 -0
- package/build/main/lib/agent-core/package.json +1 -1
- package/build/module/lib/PSAI.d.ts +2 -2
- package/build/module/lib/PSAI.js +5 -5
- package/build/module/lib/PSAgent.d.ts +35 -0
- package/build/module/lib/PSAgent.js +494 -32
- package/build/module/lib/PSAgentConfig.d.ts +28 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -14,6 +14,7 @@ $ npm install psadk
|
|
|
14
14
|
|
|
15
15
|
- **Multi-Provider LLM Support**: OpenAI, Anthropic, Google Gemini, AWS Bedrock, Azure OpenAI, and more
|
|
16
16
|
- **A2A Protocol Compatible**: Build agents that work with the Agent-to-Agent protocol
|
|
17
|
+
- **Local Agent Mode**: Run agents fully in-process via `agent-core` — no PS API dependency required
|
|
17
18
|
- **Prompt Caching**: Reduce costs and latency with built-in prompt caching support (90% cost reduction!)
|
|
18
19
|
- **Custom Tools**: Create and integrate custom tools with your agents
|
|
19
20
|
- **Type-Safe**: Full TypeScript support with comprehensive type definitions
|
|
@@ -25,6 +26,93 @@ The classes are documented here [Documentation](./globals.md)
|
|
|
25
26
|
|
|
26
27
|
**New:** [Prompt Caching Guide](./docs/PROMPT_CACHING.md) - Learn how to reduce costs and latency by 90% with prompt caching
|
|
27
28
|
|
|
29
|
+
**New:** [Local Agent Mode](#local-agent-mode) - Run agents in-process without the PS API
|
|
30
|
+
|
|
31
|
+
## Local Agent Mode
|
|
32
|
+
|
|
33
|
+
PSAgent now supports a **local execution mode** that runs the agent fully in-process using `agent-core`, bypassing the PS API entirely.
|
|
34
|
+
|
|
35
|
+
LLM calls are routed through the PS LLM API — only the agent orchestration loop runs locally.
|
|
36
|
+
|
|
37
|
+
### Enabling Local Mode
|
|
38
|
+
|
|
39
|
+
Set `local: true` in your `PSAgentConfig` and add an `llm` entry to `ServiceUrls` pointing at your PS API base URL:
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { PSAgent, PSAgentLogger } from 'psadk';
|
|
43
|
+
import type { LocalAgentEvent } from 'psadk';
|
|
44
|
+
|
|
45
|
+
const agent = new PSAgent(
|
|
46
|
+
{
|
|
47
|
+
name: 'MyAgent',
|
|
48
|
+
description: 'A local agent',
|
|
49
|
+
instruction: 'You are a helpful assistant.',
|
|
50
|
+
model: 'gpt-4o-mini',
|
|
51
|
+
token: process.env.PS_API_TOKEN,
|
|
52
|
+
local: true, // ← enable local mode
|
|
53
|
+
onEvent: (event: LocalAgentEvent) => {
|
|
54
|
+
console.log(event.agentStatus, event.output?.response ?? event.message ?? '');
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
new PSAgentLogger({ prefix: 'MyAgent' }),
|
|
58
|
+
{
|
|
59
|
+
agents: 'https://dev.lionis.ai',
|
|
60
|
+
events: 'https://dev.lionis.ai',
|
|
61
|
+
llm: 'https://dev.lionis.ai', // ← LLM API base URL for local mode
|
|
62
|
+
},
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
const result = await agent.start({ query: 'Hello!' });
|
|
66
|
+
console.log(result);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Local Agent Configuration
|
|
70
|
+
|
|
71
|
+
| Option | Type | Default | Description |
|
|
72
|
+
|--------|------|---------|-------------|
|
|
73
|
+
| `local` | `boolean` | `false` | Run the agent in-process via `agent-core` instead of the PS API |
|
|
74
|
+
| `onEvent` | `(event: LocalAgentEvent) => void` | — | Callback invoked for each streamed event during local execution |
|
|
75
|
+
| `ServiceUrls.llm` | `string` | agents URL | Base URL for the PS LLM API (e.g. `https://dev.lionis.ai`) |
|
|
76
|
+
| `llm_config.reasoning_effort` | `'minimal' \| 'low' \| 'medium' \| 'high'` | — | Controls model reasoning: `medium`/`high` → `reasoning: true`; `low`/`minimal` → `reasoning: false` |
|
|
77
|
+
| `llm_config.context_window` | `number` | `128000` | Context window size in tokens passed to the local agent runtime |
|
|
78
|
+
| `llm_config.max_completion_tokens` | `number` | `4096` | Max output tokens for the model |
|
|
79
|
+
|
|
80
|
+
### LocalAgentEvent Shape
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
interface LocalAgentEvent {
|
|
84
|
+
agentStatus: 'pending' | 'in-progress' | 'waiting' | 'completed' | 'failed';
|
|
85
|
+
timestamp: number; // Unix timestamp (ms)
|
|
86
|
+
tool?: string; // Present when agentStatus === 'waiting'
|
|
87
|
+
toolInput?: { request_body: Record<string, any> }; // Tool input arguments
|
|
88
|
+
output?: { response: string; [key: string]: any }; // Present on 'completed'
|
|
89
|
+
message?: string; // Present on 'failed' or 'in-progress'
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Behaviour Differences in Local Mode
|
|
94
|
+
|
|
95
|
+
| Operation | Remote mode | Local mode |
|
|
96
|
+
|-----------|-------------|------------|
|
|
97
|
+
| `start()` | Submits task to PS API | Runs agent-core loop in-process |
|
|
98
|
+
| `resume()` | Sends tool output to PS API | No-op (tools execute in-process) |
|
|
99
|
+
| `cancel()` | Calls PS API cancel endpoint | Calls `agent.abort()` on the in-process agent |
|
|
100
|
+
| `getEvents()` | Polls PS events API | Returns in-memory event log snapshot |
|
|
101
|
+
|
|
102
|
+
### Running the Local Agent Example
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Build first
|
|
106
|
+
npm run build
|
|
107
|
+
|
|
108
|
+
# Run the example
|
|
109
|
+
PS_API_TOKEN=<token> PS_API_URL=https://dev.lionis.ai npm run local-agent-test
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
See [`examples/local-agent-test.ts`](./examples/local-agent-test.ts) for a full working example with tools and event streaming.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
28
116
|
## Agent Core Module
|
|
29
117
|
|
|
30
118
|
The `agent-core` module provides a low-level, event-driven agent runtime built on `@earendil-works/pi-ai`. This module is designed for advanced use cases where you need fine-grained control over agent execution, tool calling, and message handling.
|
|
@@ -322,6 +410,71 @@ export const movie_search_tool = new PSAgentTool({
|
|
|
322
410
|
});
|
|
323
411
|
```
|
|
324
412
|
|
|
413
|
+
#### local agent - run agent in-process with event streaming
|
|
414
|
+
|
|
415
|
+
```typescript
|
|
416
|
+
import { PSAgent, PSAgentLogger } from 'psadk';
|
|
417
|
+
import type { LocalAgentEvent } from 'psadk';
|
|
418
|
+
import dotenv from 'dotenv';
|
|
419
|
+
|
|
420
|
+
dotenv.config();
|
|
421
|
+
|
|
422
|
+
async function main() {
|
|
423
|
+
const token = process.env.PS_API_TOKEN!;
|
|
424
|
+
const baseUrl = process.env.PS_API_URL || 'https://dev.lionis.ai';
|
|
425
|
+
|
|
426
|
+
const agent = new PSAgent(
|
|
427
|
+
{
|
|
428
|
+
name: 'LocalHelloAgent',
|
|
429
|
+
description: 'A simple agent running in local mode',
|
|
430
|
+
instruction: 'You are a friendly assistant that greets users.',
|
|
431
|
+
model: 'gpt-4o-mini',
|
|
432
|
+
token,
|
|
433
|
+
local: true, // run agent-core in-process
|
|
434
|
+
llm_config: {
|
|
435
|
+
reasoning_effort: 'high', // 'medium'|'high' → reasoning: true; 'low'|'minimal' → reasoning: false
|
|
436
|
+
context_window: 128000, // token context window (default: 128000)
|
|
437
|
+
max_completion_tokens: 4096, // max output tokens (default: 4096)
|
|
438
|
+
},
|
|
439
|
+
onEvent: (event: LocalAgentEvent) => {
|
|
440
|
+
switch (event.agentStatus) {
|
|
441
|
+
case 'pending':
|
|
442
|
+
console.log('⏳ Agent starting...');
|
|
443
|
+
break;
|
|
444
|
+
case 'in-progress':
|
|
445
|
+
console.log('🔄 Agent thinking...');
|
|
446
|
+
break;
|
|
447
|
+
case 'waiting':
|
|
448
|
+
console.log(`🔧 Calling tool: ${event.tool}`);
|
|
449
|
+
console.log(' Input:', JSON.stringify(event.toolInput?.request_body));
|
|
450
|
+
break;
|
|
451
|
+
case 'completed':
|
|
452
|
+
console.log('✅ Done:', event.output?.response);
|
|
453
|
+
break;
|
|
454
|
+
case 'failed':
|
|
455
|
+
console.error('❌ Failed:', event.message);
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
new PSAgentLogger({ prefix: 'LocalHelloAgent' }),
|
|
461
|
+
{
|
|
462
|
+
agents: baseUrl,
|
|
463
|
+
events: baseUrl,
|
|
464
|
+
llm: baseUrl, // LLM calls route through PS LLM API
|
|
465
|
+
},
|
|
466
|
+
);
|
|
467
|
+
|
|
468
|
+
const result = await agent.start({ query: 'Say hello!' });
|
|
469
|
+
console.log('Result:', result);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
main().catch((error) => {
|
|
473
|
+
console.error(error);
|
|
474
|
+
process.exit(1);
|
|
475
|
+
});
|
|
476
|
+
```
|
|
477
|
+
|
|
325
478
|
### Client: Sending a Message
|
|
326
479
|
|
|
327
480
|
The A2AClient makes it easy to communicate with any A2A-compliant agent.
|
package/build/main/lib/PSAI.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export declare class PSAI {
|
|
|
9
9
|
private readonly userIdentifier?;
|
|
10
10
|
constructor(token: string, baseUrl?: string, log?: IStreamLogger, appToken?: string, userIdentifier?: string);
|
|
11
11
|
getDimensions(embeddingModel?: string): number;
|
|
12
|
-
embedQuery(text: string, embeddingModel?: string): Promise<number[]>;
|
|
13
|
-
embedDocuments(text: string[], embeddingModel?: string): Promise<number[][]>;
|
|
12
|
+
embedQuery(text: string, embeddingModel?: string, baseUrl?: string): Promise<number[]>;
|
|
13
|
+
embedDocuments(text: string[], embeddingModel?: string, baseUrl?: string): Promise<number[][]>;
|
|
14
14
|
getModels(): Promise<any>;
|
|
15
15
|
private prepareMessages;
|
|
16
16
|
llm(prompt: string, model?: string, systemmsg?: string, llm_config?: {
|
package/build/main/lib/PSAI.js
CHANGED
|
@@ -62,8 +62,8 @@ class PSAI {
|
|
|
62
62
|
return this.dimensions;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
async embedQuery(text, embeddingModel = 'text-embedding-3-small') {
|
|
66
|
-
const response = await fetch(apiEndpoints_1.API_ENDPOINTS.VECTOR_EMBEDDINGS(
|
|
65
|
+
async embedQuery(text, embeddingModel = 'text-embedding-3-small', baseUrl = this.baseUrl) {
|
|
66
|
+
const response = await fetch(apiEndpoints_1.API_ENDPOINTS.VECTOR_EMBEDDINGS(baseUrl), {
|
|
67
67
|
method: 'POST',
|
|
68
68
|
headers: {
|
|
69
69
|
'Content-Type': 'application/json',
|
|
@@ -89,8 +89,8 @@ class PSAI {
|
|
|
89
89
|
}
|
|
90
90
|
return data.data[0].embedding;
|
|
91
91
|
}
|
|
92
|
-
async embedDocuments(text, embeddingModel = 'text-embedding-3-small') {
|
|
93
|
-
const response = await fetch(apiEndpoints_1.API_ENDPOINTS.VECTOR_EMBEDDINGS(
|
|
92
|
+
async embedDocuments(text, embeddingModel = 'text-embedding-3-small', baseUrl = this.baseUrl) {
|
|
93
|
+
const response = await fetch(apiEndpoints_1.API_ENDPOINTS.VECTOR_EMBEDDINGS(baseUrl), {
|
|
94
94
|
method: 'POST',
|
|
95
95
|
headers: {
|
|
96
96
|
'Content-Type': 'application/json',
|
|
@@ -641,4 +641,4 @@ class PSAI {
|
|
|
641
641
|
}
|
|
642
642
|
}
|
|
643
643
|
exports.PSAI = PSAI;
|
|
644
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNBSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvUFNBSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsb0VBQW9FO0FBQ3BFLHVFQUF1RTtBQUN2RSxzREFBcUQ7QUFDckQsOERBQXFDO0FBRXJDLG1EQUErRDtBQUMvRCwrQkFBK0M7QUFDL0MsdURBQXFEO0FBQ3JELHNFQUE4QztBQUM5Qyw2Q0FHeUI7QUFFekIsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2QyxNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFFbEMsTUFBTSxhQUFhLEdBS2Y7SUFDRixhQUFhLEVBQUUsSUFBSTtJQUNuQixhQUFhLEVBQUUsSUFBSTtJQUNuQixPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDN0IsQ0FBQztBQUVGLFNBQVMsbUJBQW1CLENBQUMsV0FBbUIsRUFBRSxZQUFvQjtJQUNwRSxNQUFNLGFBQWEsR0FBRyxjQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBaUIsQ0FBQztJQUNuRSxNQUFNLGNBQWMsR0FBRyxjQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBaUIsQ0FBQztJQUNyRSxhQUFhLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUMxQyxhQUFhLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUMzQyxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0QsYUFBYSxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7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
|
|
644
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFNBSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvUFNBSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsb0VBQW9FO0FBQ3BFLHVFQUF1RTtBQUN2RSxzREFBcUQ7QUFDckQsOERBQXFDO0FBRXJDLG1EQUErRDtBQUMvRCwrQkFBK0M7QUFDL0MsdURBQXFEO0FBQ3JELHNFQUE4QztBQUM5Qyw2Q0FHeUI7QUFFekIsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2QyxNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFFbEMsTUFBTSxhQUFhLEdBS2Y7SUFDRixhQUFhLEVBQUUsSUFBSTtJQUNuQixhQUFhLEVBQUUsSUFBSTtJQUNuQixPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDN0IsQ0FBQztBQUVGLFNBQVMsbUJBQW1CLENBQUMsV0FBbUIsRUFBRSxZQUFvQjtJQUNwRSxNQUFNLGFBQWEsR0FBRyxjQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBaUIsQ0FBQztJQUNuRSxNQUFNLGNBQWMsR0FBRyxjQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBaUIsQ0FBQztJQUNyRSxhQUFhLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUMxQyxhQUFhLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUMzQyxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0QsYUFBYSxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7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
|
|
@@ -9,6 +9,10 @@ export interface ServiceUrls {
|
|
|
9
9
|
agents?: string;
|
|
10
10
|
events?: string;
|
|
11
11
|
llmtrack?: string;
|
|
12
|
+
/** Base URL for the PS LLM API. Used in local mode to route LLM calls in-process.
|
|
13
|
+
* e.g. 'https://dev.lionis.ai' — the /api/v1/llm path is appended automatically.
|
|
14
|
+
* Defaults to the agents service base URL when not specified. */
|
|
15
|
+
llm?: string;
|
|
12
16
|
}
|
|
13
17
|
export declare function sleep(ms: number): Promise<void>;
|
|
14
18
|
/**
|
|
@@ -63,6 +67,8 @@ export declare class PSAgent implements AgentExecutor {
|
|
|
63
67
|
private readonly log?;
|
|
64
68
|
private serviceUrls?;
|
|
65
69
|
private cancelledTasks;
|
|
70
|
+
private localAgent?;
|
|
71
|
+
private localEventLog;
|
|
66
72
|
cancelTask: (taskId: string) => Promise<void>;
|
|
67
73
|
/**
|
|
68
74
|
* create a new PSAgent with the given config
|
|
@@ -232,6 +238,35 @@ export declare class PSAgent implements AgentExecutor {
|
|
|
232
238
|
* @returns
|
|
233
239
|
*/
|
|
234
240
|
execute(requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
|
|
241
|
+
/**
|
|
242
|
+
* Translate an agent-core AgentEvent into a LocalAgentEvent.
|
|
243
|
+
* Returns undefined for events that don't need to be surfaced.
|
|
244
|
+
*/
|
|
245
|
+
private translateAgentEvent;
|
|
246
|
+
/**
|
|
247
|
+
* Wrap a PSAgentTool as an agent-core AgentTool.
|
|
248
|
+
* The JSON Schema requestBody is passed as parameters directly—agent-core's
|
|
249
|
+
* validateToolArguments handles plain JSON Schema without TypeBox conversion.
|
|
250
|
+
*/
|
|
251
|
+
private bridgePSToolToAgentTool;
|
|
252
|
+
/**
|
|
253
|
+
* Build a single-text user AgentMessage from a start() input object.
|
|
254
|
+
*/
|
|
255
|
+
private buildUserMessage;
|
|
256
|
+
/**
|
|
257
|
+
* Convert history entries (remote format) to AgentMessage[] for agent-core.
|
|
258
|
+
*/
|
|
259
|
+
private buildHistoryMessages;
|
|
260
|
+
/**
|
|
261
|
+
* Local start() path — runs agent-core in-process.
|
|
262
|
+
* Non-blocking: kicks off the loop and returns a synthetic correlation ID immediately.
|
|
263
|
+
*/
|
|
264
|
+
private startLocal;
|
|
265
|
+
/**
|
|
266
|
+
* Local execute() path — A2A AgentExecutor using agent-core streaming.
|
|
267
|
+
* Publishes TaskStatusUpdateEvents to the eventBus as events arrive, without polling.
|
|
268
|
+
*/
|
|
269
|
+
private executeLocal;
|
|
235
270
|
private getHostIPAddress;
|
|
236
271
|
/**
|
|
237
272
|
* Port for A2A express server
|