agentxjs 2.7.0 → 2.8.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/{chunk-NPRCFKO5.js → chunk-JUZULVWQ.js} +33 -297
- package/dist/chunk-JUZULVWQ.js.map +1 -0
- package/dist/index.d.ts +36 -266
- package/dist/index.js +42 -224
- package/dist/index.js.map +1 -1
- package/dist/server-MVOHQ5ZM.js +184 -0
- package/dist/server-MVOHQ5ZM.js.map +1 -0
- package/package.json +3 -3
- package/src/AgentHandle.ts +9 -7
- package/src/CommandHandler.ts +48 -163
- package/src/LocalClient.ts +3 -33
- package/src/RemoteClient.ts +2 -27
- package/src/index.ts +7 -21
- package/src/namespaces/agents.ts +4 -4
- package/src/namespaces/images.ts +21 -29
- package/src/namespaces/llm.ts +16 -10
- package/src/types.ts +44 -186
- package/dist/chunk-NPRCFKO5.js.map +0 -1
- package/dist/server-3BCYHXYA.js +0 -7
- package/dist/server-3BCYHXYA.js.map +0 -1
- package/src/namespaces/containers.ts +0 -68
- package/src/namespaces/prototypes.ts +0 -136
package/src/namespaces/images.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import type { Message } from "@agentxjs/core/agent";
|
|
6
|
+
import { DEFAULT_CONTAINER_ID } from "@agentxjs/core/container";
|
|
6
7
|
import type { RpcClient } from "@agentxjs/core/network";
|
|
7
8
|
import type { AgentXPlatform } from "@agentxjs/core/runtime";
|
|
8
9
|
import type {
|
|
10
|
+
AgentConfig,
|
|
9
11
|
BaseResponse,
|
|
10
12
|
ImageCreateResponse,
|
|
11
13
|
ImageGetResponse,
|
|
@@ -19,25 +21,21 @@ import type {
|
|
|
19
21
|
*/
|
|
20
22
|
export function createLocalImages(platform: AgentXPlatform): ImageNamespace {
|
|
21
23
|
return {
|
|
22
|
-
async create(params: {
|
|
23
|
-
containerId: string;
|
|
24
|
-
name?: string;
|
|
25
|
-
description?: string;
|
|
26
|
-
systemPrompt?: string;
|
|
27
|
-
mcpServers?: Record<string, unknown>;
|
|
28
|
-
customData?: Record<string, unknown>;
|
|
29
|
-
}): Promise<ImageCreateResponse> {
|
|
24
|
+
async create(params: AgentConfig): Promise<ImageCreateResponse> {
|
|
30
25
|
const { imageRepository, sessionRepository } = platform;
|
|
31
26
|
const { createImage } = await import("@agentxjs/core/image");
|
|
32
27
|
|
|
28
|
+
const { model, systemPrompt, mcpServers, ...rest } = params;
|
|
29
|
+
const embody =
|
|
30
|
+
model || systemPrompt || mcpServers
|
|
31
|
+
? { model, systemPrompt, mcpServers: mcpServers as any }
|
|
32
|
+
: undefined;
|
|
33
|
+
|
|
33
34
|
const image = await createImage(
|
|
34
35
|
{
|
|
35
|
-
containerId:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
systemPrompt: params.systemPrompt,
|
|
39
|
-
mcpServers: params.mcpServers as any,
|
|
40
|
-
customData: params.customData,
|
|
36
|
+
containerId: DEFAULT_CONTAINER_ID,
|
|
37
|
+
...rest,
|
|
38
|
+
embody,
|
|
41
39
|
},
|
|
42
40
|
{ imageRepository, sessionRepository }
|
|
43
41
|
);
|
|
@@ -58,10 +56,8 @@ export function createLocalImages(platform: AgentXPlatform): ImageNamespace {
|
|
|
58
56
|
};
|
|
59
57
|
},
|
|
60
58
|
|
|
61
|
-
async list(
|
|
62
|
-
const records =
|
|
63
|
-
? await platform.imageRepository.findImagesByContainerId(containerId)
|
|
64
|
-
: await platform.imageRepository.findAllImages();
|
|
59
|
+
async list(): Promise<ImageListResponse> {
|
|
60
|
+
const records = await platform.imageRepository.findAllImages();
|
|
65
61
|
|
|
66
62
|
return {
|
|
67
63
|
records,
|
|
@@ -118,15 +114,11 @@ export function createRemoteImages(
|
|
|
118
114
|
subscribeFn: (sessionId: string) => void
|
|
119
115
|
): ImageNamespace {
|
|
120
116
|
return {
|
|
121
|
-
async create(params: {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
mcpServers?: Record<string, unknown>;
|
|
127
|
-
customData?: Record<string, unknown>;
|
|
128
|
-
}): Promise<ImageCreateResponse> {
|
|
129
|
-
const result = await rpcClient.call<ImageCreateResponse>("image.create", params);
|
|
117
|
+
async create(params: AgentConfig): Promise<ImageCreateResponse> {
|
|
118
|
+
const result = await rpcClient.call<ImageCreateResponse>("image.create", {
|
|
119
|
+
...params,
|
|
120
|
+
containerId: DEFAULT_CONTAINER_ID,
|
|
121
|
+
});
|
|
130
122
|
|
|
131
123
|
// Auto subscribe to session events
|
|
132
124
|
if (result.__subscriptions) {
|
|
@@ -151,8 +143,8 @@ export function createRemoteImages(
|
|
|
151
143
|
return { ...result, requestId: "" };
|
|
152
144
|
},
|
|
153
145
|
|
|
154
|
-
async list(
|
|
155
|
-
const result = await rpcClient.call<ImageListResponse>("image.list", {
|
|
146
|
+
async list(): Promise<ImageListResponse> {
|
|
147
|
+
const result = await rpcClient.call<ImageListResponse>("image.list", {});
|
|
156
148
|
|
|
157
149
|
// Auto subscribe
|
|
158
150
|
if (result.__subscriptions) {
|
package/src/namespaces/llm.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* LLM Provider namespace factories
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
import { DEFAULT_CONTAINER_ID } from "@agentxjs/core/container";
|
|
5
6
|
import type { RpcClient } from "@agentxjs/core/network";
|
|
6
7
|
import type { LLMProviderRecord } from "@agentxjs/core/persistence";
|
|
7
8
|
import type { AgentXPlatform } from "@agentxjs/core/runtime";
|
|
@@ -30,7 +31,7 @@ export function createLocalLLM(platform: AgentXPlatform): LLMNamespace {
|
|
|
30
31
|
const now = Date.now();
|
|
31
32
|
const record: LLMProviderRecord = {
|
|
32
33
|
id: generateId("llm"),
|
|
33
|
-
containerId:
|
|
34
|
+
containerId: DEFAULT_CONTAINER_ID,
|
|
34
35
|
name: params.name,
|
|
35
36
|
vendor: params.vendor,
|
|
36
37
|
protocol: params.protocol,
|
|
@@ -51,8 +52,8 @@ export function createLocalLLM(platform: AgentXPlatform): LLMNamespace {
|
|
|
51
52
|
return { record, requestId: "" };
|
|
52
53
|
},
|
|
53
54
|
|
|
54
|
-
async list(
|
|
55
|
-
const records = await repo.findLLMProvidersByContainerId(
|
|
55
|
+
async list(): Promise<LLMProviderListResponse> {
|
|
56
|
+
const records = await repo.findLLMProvidersByContainerId(DEFAULT_CONTAINER_ID);
|
|
56
57
|
return { records, requestId: "" };
|
|
57
58
|
},
|
|
58
59
|
|
|
@@ -85,8 +86,8 @@ export function createLocalLLM(platform: AgentXPlatform): LLMNamespace {
|
|
|
85
86
|
return { requestId: "" };
|
|
86
87
|
},
|
|
87
88
|
|
|
88
|
-
async getDefault(
|
|
89
|
-
const record = await repo.findDefaultLLMProvider(
|
|
89
|
+
async getDefault(): Promise<LLMProviderDefaultResponse> {
|
|
90
|
+
const record = await repo.findDefaultLLMProvider(DEFAULT_CONTAINER_ID);
|
|
90
91
|
return { record, requestId: "" };
|
|
91
92
|
},
|
|
92
93
|
};
|
|
@@ -98,7 +99,10 @@ export function createLocalLLM(platform: AgentXPlatform): LLMNamespace {
|
|
|
98
99
|
export function createRemoteLLM(rpcClient: RpcClient): LLMNamespace {
|
|
99
100
|
return {
|
|
100
101
|
async create(params): Promise<LLMProviderCreateResponse> {
|
|
101
|
-
const result = await rpcClient.call<LLMProviderCreateResponse>("llm.create",
|
|
102
|
+
const result = await rpcClient.call<LLMProviderCreateResponse>("llm.create", {
|
|
103
|
+
...params,
|
|
104
|
+
containerId: DEFAULT_CONTAINER_ID,
|
|
105
|
+
});
|
|
102
106
|
return { ...result, requestId: "" };
|
|
103
107
|
},
|
|
104
108
|
|
|
@@ -107,8 +111,10 @@ export function createRemoteLLM(rpcClient: RpcClient): LLMNamespace {
|
|
|
107
111
|
return { ...result, requestId: "" };
|
|
108
112
|
},
|
|
109
113
|
|
|
110
|
-
async list(
|
|
111
|
-
const result = await rpcClient.call<LLMProviderListResponse>("llm.list", {
|
|
114
|
+
async list(): Promise<LLMProviderListResponse> {
|
|
115
|
+
const result = await rpcClient.call<LLMProviderListResponse>("llm.list", {
|
|
116
|
+
containerId: DEFAULT_CONTAINER_ID,
|
|
117
|
+
});
|
|
112
118
|
return { ...result, requestId: "" };
|
|
113
119
|
},
|
|
114
120
|
|
|
@@ -130,9 +136,9 @@ export function createRemoteLLM(rpcClient: RpcClient): LLMNamespace {
|
|
|
130
136
|
return { ...result, requestId: "" };
|
|
131
137
|
},
|
|
132
138
|
|
|
133
|
-
async getDefault(
|
|
139
|
+
async getDefault(): Promise<LLMProviderDefaultResponse> {
|
|
134
140
|
const result = await rpcClient.call<LLMProviderDefaultResponse>("llm.default", {
|
|
135
|
-
containerId,
|
|
141
|
+
containerId: DEFAULT_CONTAINER_ID,
|
|
136
142
|
});
|
|
137
143
|
return { ...result, requestId: "" };
|
|
138
144
|
},
|
package/src/types.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { Message } from "@agentxjs/core/agent";
|
|
6
6
|
import type { AgentXError } from "@agentxjs/core/error";
|
|
7
7
|
import type { BusEvent, BusEventHandler, EventBus, Unsubscribe } from "@agentxjs/core/event";
|
|
8
|
-
import type { LLMProtocol, LLMProviderRecord
|
|
8
|
+
import type { LLMProtocol, LLMProviderRecord } from "@agentxjs/core/persistence";
|
|
9
9
|
import type { AgentXPlatform } from "@agentxjs/core/runtime";
|
|
10
10
|
import type { Presentation, PresentationOptions } from "./presentation";
|
|
11
11
|
|
|
@@ -47,16 +47,28 @@ export interface InstanceInfo {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* AgentConfig — flat runtime configuration for creating an agent.
|
|
51
|
+
* AgentConfig IS the body — no wrapper needed.
|
|
51
52
|
*/
|
|
52
|
-
export interface
|
|
53
|
+
export interface AgentConfig {
|
|
54
|
+
/** LLM model identifier */
|
|
53
55
|
model?: string;
|
|
56
|
+
/** System prompt for the agent */
|
|
54
57
|
systemPrompt?: string;
|
|
58
|
+
/** MCP server configurations for tool access */
|
|
55
59
|
mcpServers?: Record<string, unknown>;
|
|
60
|
+
/** Context provider ID (e.g. RoleX individual) */
|
|
61
|
+
contextId?: string;
|
|
62
|
+
/** Display name */
|
|
63
|
+
name?: string;
|
|
64
|
+
/** Description */
|
|
65
|
+
description?: string;
|
|
66
|
+
/** Arbitrary custom data */
|
|
67
|
+
customData?: Record<string, unknown>;
|
|
56
68
|
}
|
|
57
69
|
|
|
58
70
|
/**
|
|
59
|
-
* Image record from server
|
|
71
|
+
* Image record from server (internal persistence)
|
|
60
72
|
*/
|
|
61
73
|
export interface ImageRecord {
|
|
62
74
|
imageId: string;
|
|
@@ -65,23 +77,14 @@ export interface ImageRecord {
|
|
|
65
77
|
name?: string;
|
|
66
78
|
description?: string;
|
|
67
79
|
contextId?: string;
|
|
68
|
-
|
|
69
|
-
/** @deprecated Use `embody.systemPrompt` instead. */
|
|
80
|
+
model?: string;
|
|
70
81
|
systemPrompt?: string;
|
|
71
|
-
/** @deprecated Use `embody.mcpServers` instead. */
|
|
72
82
|
mcpServers?: Record<string, unknown>;
|
|
73
83
|
customData?: Record<string, unknown>;
|
|
74
84
|
createdAt: number;
|
|
75
85
|
updatedAt: number;
|
|
76
86
|
}
|
|
77
87
|
|
|
78
|
-
/**
|
|
79
|
-
* Container info
|
|
80
|
-
*/
|
|
81
|
-
export interface ContainerInfo {
|
|
82
|
-
containerId: string;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
88
|
// ============================================================================
|
|
86
89
|
// Request/Response Types
|
|
87
90
|
// ============================================================================
|
|
@@ -150,28 +153,6 @@ export interface ImageUpdateResponse extends BaseResponse {
|
|
|
150
153
|
record: ImageRecord;
|
|
151
154
|
}
|
|
152
155
|
|
|
153
|
-
/**
|
|
154
|
-
* Container create response
|
|
155
|
-
*/
|
|
156
|
-
export interface ContainerCreateResponse extends BaseResponse {
|
|
157
|
-
containerId: string;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Container get response
|
|
162
|
-
*/
|
|
163
|
-
export interface ContainerGetResponse extends BaseResponse {
|
|
164
|
-
containerId: string;
|
|
165
|
-
exists: boolean;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Container list response
|
|
170
|
-
*/
|
|
171
|
-
export interface ContainerListResponse extends BaseResponse {
|
|
172
|
-
containerIds: string[];
|
|
173
|
-
}
|
|
174
|
-
|
|
175
156
|
/**
|
|
176
157
|
* Message send response
|
|
177
158
|
*/
|
|
@@ -214,62 +195,10 @@ export interface LLMProviderDefaultResponse extends BaseResponse {
|
|
|
214
195
|
record: LLMProviderRecord | null;
|
|
215
196
|
}
|
|
216
197
|
|
|
217
|
-
// ============================================================================
|
|
218
|
-
// Prototype Response Types
|
|
219
|
-
// ============================================================================
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Prototype create response
|
|
223
|
-
*/
|
|
224
|
-
export interface PrototypeCreateResponse extends BaseResponse {
|
|
225
|
-
record: PrototypeRecord;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Prototype get response
|
|
230
|
-
*/
|
|
231
|
-
export interface PrototypeGetResponse extends BaseResponse {
|
|
232
|
-
record: PrototypeRecord | null;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Prototype list response
|
|
237
|
-
*/
|
|
238
|
-
export interface PrototypeListResponse extends BaseResponse {
|
|
239
|
-
records: PrototypeRecord[];
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Prototype update response
|
|
244
|
-
*/
|
|
245
|
-
export interface PrototypeUpdateResponse extends BaseResponse {
|
|
246
|
-
record: PrototypeRecord;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
198
|
// ============================================================================
|
|
250
199
|
// Namespace Interfaces
|
|
251
200
|
// ============================================================================
|
|
252
201
|
|
|
253
|
-
/**
|
|
254
|
-
* Container operations namespace
|
|
255
|
-
*/
|
|
256
|
-
export interface ContainerNamespace {
|
|
257
|
-
/**
|
|
258
|
-
* Create or get container
|
|
259
|
-
*/
|
|
260
|
-
create(containerId: string): Promise<ContainerCreateResponse>;
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Get container
|
|
264
|
-
*/
|
|
265
|
-
get(containerId: string): Promise<ContainerGetResponse>;
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* List containers
|
|
269
|
-
*/
|
|
270
|
-
list(): Promise<ContainerListResponse>;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
202
|
/**
|
|
274
203
|
* Image operations namespace
|
|
275
204
|
*/
|
|
@@ -277,14 +206,7 @@ export interface ImageNamespace {
|
|
|
277
206
|
/**
|
|
278
207
|
* Create a new image from an Agent blueprint
|
|
279
208
|
*/
|
|
280
|
-
create(params:
|
|
281
|
-
containerId: string;
|
|
282
|
-
name?: string;
|
|
283
|
-
description?: string;
|
|
284
|
-
contextId?: string;
|
|
285
|
-
embody?: Embodiment;
|
|
286
|
-
customData?: Record<string, unknown>;
|
|
287
|
-
}): Promise<ImageCreateResponse>;
|
|
209
|
+
create(params: AgentConfig): Promise<ImageCreateResponse>;
|
|
288
210
|
|
|
289
211
|
/**
|
|
290
212
|
* Get image by ID
|
|
@@ -294,19 +216,19 @@ export interface ImageNamespace {
|
|
|
294
216
|
/**
|
|
295
217
|
* List images
|
|
296
218
|
*/
|
|
297
|
-
list(
|
|
219
|
+
list(): Promise<ImageListResponse>;
|
|
298
220
|
|
|
299
221
|
/**
|
|
300
222
|
* Update image
|
|
301
223
|
*/
|
|
302
224
|
update(
|
|
303
225
|
imageId: string,
|
|
304
|
-
updates:
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
226
|
+
updates: Partial<
|
|
227
|
+
Pick<
|
|
228
|
+
AgentConfig,
|
|
229
|
+
"name" | "description" | "model" | "systemPrompt" | "mcpServers" | "customData"
|
|
230
|
+
>
|
|
231
|
+
>
|
|
310
232
|
): Promise<ImageUpdateResponse>;
|
|
311
233
|
|
|
312
234
|
/**
|
|
@@ -337,7 +259,7 @@ export interface InstanceNamespace {
|
|
|
337
259
|
/**
|
|
338
260
|
* List agents
|
|
339
261
|
*/
|
|
340
|
-
list(
|
|
262
|
+
list(): Promise<InstanceListResponse>;
|
|
341
263
|
|
|
342
264
|
/**
|
|
343
265
|
* Destroy an agent
|
|
@@ -373,7 +295,6 @@ export interface LLMNamespace {
|
|
|
373
295
|
* Create a new LLM provider configuration
|
|
374
296
|
*/
|
|
375
297
|
create(params: {
|
|
376
|
-
containerId: string;
|
|
377
298
|
name: string;
|
|
378
299
|
vendor: string;
|
|
379
300
|
protocol: LLMProtocol;
|
|
@@ -388,9 +309,9 @@ export interface LLMNamespace {
|
|
|
388
309
|
get(id: string): Promise<LLMProviderGetResponse>;
|
|
389
310
|
|
|
390
311
|
/**
|
|
391
|
-
* List LLM providers
|
|
312
|
+
* List LLM providers
|
|
392
313
|
*/
|
|
393
|
-
list(
|
|
314
|
+
list(): Promise<LLMProviderListResponse>;
|
|
394
315
|
|
|
395
316
|
/**
|
|
396
317
|
* Update LLM provider
|
|
@@ -413,60 +334,14 @@ export interface LLMNamespace {
|
|
|
413
334
|
delete(id: string): Promise<BaseResponse>;
|
|
414
335
|
|
|
415
336
|
/**
|
|
416
|
-
* Set default LLM provider
|
|
337
|
+
* Set default LLM provider
|
|
417
338
|
*/
|
|
418
339
|
setDefault(id: string): Promise<BaseResponse>;
|
|
419
340
|
|
|
420
341
|
/**
|
|
421
|
-
* Get default LLM provider
|
|
422
|
-
*/
|
|
423
|
-
getDefault(containerId: string): Promise<LLMProviderDefaultResponse>;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Prototype operations namespace — manage reusable agent templates
|
|
428
|
-
*/
|
|
429
|
-
export interface PrototypeNamespace {
|
|
430
|
-
/**
|
|
431
|
-
* Register a new prototype
|
|
432
|
-
*/
|
|
433
|
-
create(params: {
|
|
434
|
-
containerId: string;
|
|
435
|
-
name: string;
|
|
436
|
-
description?: string;
|
|
437
|
-
contextId?: string;
|
|
438
|
-
embody?: Embodiment;
|
|
439
|
-
customData?: Record<string, unknown>;
|
|
440
|
-
}): Promise<PrototypeCreateResponse>;
|
|
441
|
-
|
|
442
|
-
/**
|
|
443
|
-
* Get prototype by ID
|
|
444
|
-
*/
|
|
445
|
-
get(prototypeId: string): Promise<PrototypeGetResponse>;
|
|
446
|
-
|
|
447
|
-
/**
|
|
448
|
-
* List prototypes
|
|
342
|
+
* Get default LLM provider
|
|
449
343
|
*/
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Update prototype
|
|
454
|
-
*/
|
|
455
|
-
update(
|
|
456
|
-
prototypeId: string,
|
|
457
|
-
updates: {
|
|
458
|
-
name?: string;
|
|
459
|
-
description?: string;
|
|
460
|
-
contextId?: string;
|
|
461
|
-
embody?: Embodiment;
|
|
462
|
-
customData?: Record<string, unknown>;
|
|
463
|
-
}
|
|
464
|
-
): Promise<PrototypeUpdateResponse>;
|
|
465
|
-
|
|
466
|
-
/**
|
|
467
|
-
* Delete prototype
|
|
468
|
-
*/
|
|
469
|
-
delete(prototypeId: string): Promise<BaseResponse>;
|
|
344
|
+
getDefault(): Promise<LLMProviderDefaultResponse>;
|
|
470
345
|
}
|
|
471
346
|
|
|
472
347
|
/**
|
|
@@ -498,17 +373,15 @@ export interface PresentationNamespace {
|
|
|
498
373
|
* Instance — low-level access to internal subsystems.
|
|
499
374
|
*
|
|
500
375
|
* Most users should use the top-level Agent API (ax.create, ax.send, etc.).
|
|
501
|
-
* Instance exposes the underlying image, agent, session,
|
|
376
|
+
* Instance exposes the underlying image, agent, session, llm,
|
|
502
377
|
* and presentation subsystems for advanced use cases.
|
|
503
378
|
*/
|
|
504
379
|
export interface RuntimeNamespace {
|
|
505
|
-
readonly container: ContainerNamespace;
|
|
506
380
|
readonly image: ImageNamespace;
|
|
507
381
|
readonly instance: InstanceNamespace;
|
|
508
382
|
readonly session: SessionNamespace;
|
|
509
383
|
readonly present: PresentationNamespace;
|
|
510
384
|
readonly llm: LLMNamespace;
|
|
511
|
-
readonly prototype: PrototypeNamespace;
|
|
512
385
|
}
|
|
513
386
|
|
|
514
387
|
// ============================================================================
|
|
@@ -523,7 +396,7 @@ export interface RuntimeNamespace {
|
|
|
523
396
|
*
|
|
524
397
|
* @example
|
|
525
398
|
* ```typescript
|
|
526
|
-
* const agent = await ax.chat.create({ name: "Aristotle",
|
|
399
|
+
* const agent = await ax.chat.create({ name: "Aristotle", model: "claude-sonnet-4-6" });
|
|
527
400
|
* await agent.send("Hello!");
|
|
528
401
|
* const messages = await agent.history();
|
|
529
402
|
* ```
|
|
@@ -557,12 +430,14 @@ export interface AgentHandle {
|
|
|
557
430
|
/**
|
|
558
431
|
* Update this agent's metadata
|
|
559
432
|
*/
|
|
560
|
-
update(
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
433
|
+
update(
|
|
434
|
+
updates: Partial<
|
|
435
|
+
Pick<
|
|
436
|
+
AgentConfig,
|
|
437
|
+
"name" | "description" | "model" | "systemPrompt" | "mcpServers" | "customData"
|
|
438
|
+
>
|
|
439
|
+
>
|
|
440
|
+
): Promise<void>;
|
|
566
441
|
|
|
567
442
|
/**
|
|
568
443
|
* Delete this agent
|
|
@@ -583,18 +458,8 @@ export interface AgentHandle {
|
|
|
583
458
|
export interface ChatNamespace {
|
|
584
459
|
/**
|
|
585
460
|
* Create a new conversation
|
|
586
|
-
*
|
|
587
|
-
* When `prototypeId` is provided, the conversation inherits the prototype's
|
|
588
|
-
* configuration (contextId, embody, etc.). Inline params override prototype values.
|
|
589
461
|
*/
|
|
590
|
-
create(params:
|
|
591
|
-
prototypeId?: string;
|
|
592
|
-
name?: string;
|
|
593
|
-
description?: string;
|
|
594
|
-
contextId?: string;
|
|
595
|
-
embody?: Embodiment;
|
|
596
|
-
customData?: Record<string, unknown>;
|
|
597
|
-
}): Promise<AgentHandle>;
|
|
462
|
+
create(params: AgentConfig): Promise<AgentHandle>;
|
|
598
463
|
|
|
599
464
|
/**
|
|
600
465
|
* List all conversations
|
|
@@ -617,7 +482,7 @@ export interface ChatNamespace {
|
|
|
617
482
|
* @example
|
|
618
483
|
* ```typescript
|
|
619
484
|
* const ax = createAgentX(config);
|
|
620
|
-
* const agent = await ax.chat.create({ name: "Aristotle",
|
|
485
|
+
* const agent = await ax.chat.create({ name: "Aristotle", model: "claude-sonnet-4-6" });
|
|
621
486
|
* await agent.send("Hello!");
|
|
622
487
|
* ```
|
|
623
488
|
*
|
|
@@ -641,17 +506,10 @@ export interface AgentX {
|
|
|
641
506
|
*/
|
|
642
507
|
readonly chat: ChatNamespace;
|
|
643
508
|
|
|
644
|
-
// ==================== Prototype (templates) ====================
|
|
645
|
-
|
|
646
|
-
/**
|
|
647
|
-
* Prototype management — register and manage reusable agent templates.
|
|
648
|
-
*/
|
|
649
|
-
readonly prototype: PrototypeNamespace;
|
|
650
|
-
|
|
651
509
|
// ==================== Instance (low-level) ====================
|
|
652
510
|
|
|
653
511
|
/**
|
|
654
|
-
* Low-level access to internal subsystems (image, agent, session,
|
|
512
|
+
* Low-level access to internal subsystems (image, agent, session, llm).
|
|
655
513
|
*/
|
|
656
514
|
readonly runtime: RuntimeNamespace;
|
|
657
515
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.ts","../src/CommandHandler.ts"],"sourcesContent":["/**\n * AgentX Server Implementation (JSON-RPC 2.0)\n *\n * Creates a WebSocket server that:\n * 1. Accepts client connections\n * 2. Handles JSON-RPC requests directly via CommandHandler\n * 3. Broadcasts stream events as JSON-RPC notifications\n *\n * Message Types:\n * - RPC Request (has id): Client → Server → Client (direct response)\n * - RPC Notification (no id): Server → Client (stream events)\n */\n\nimport type { CreateDriver } from \"@agentxjs/core/driver\";\nimport type { BusEvent, SystemEvent } from \"@agentxjs/core/event\";\nimport type { ChannelConnection } from \"@agentxjs/core/network\";\nimport {\n createErrorResponse,\n createStreamEvent,\n createSuccessResponse,\n isNotification,\n isRequest,\n parseMessage,\n RpcErrorCodes,\n type RpcMethod,\n} from \"@agentxjs/core/network\";\nimport type { AgentXPlatform } from \"@agentxjs/core/runtime\";\nimport { createAgentXRuntime } from \"@agentxjs/core/runtime\";\nimport { createLogger } from \"@deepracticex/logger\";\nimport { CommandHandler } from \"./CommandHandler\";\nimport type { AgentXServer } from \"./types\";\n\nconst logger = createLogger(\"server/Server\");\n\n/**\n * Connection state\n */\ninterface ConnectionState {\n connection: ChannelConnection;\n subscribedTopics: Set<string>;\n}\n\n/**\n * Server configuration (supports both immediate and deferred platforms)\n */\nexport interface ServerConfig {\n /**\n * AgentX Platform — must provide `channelServer` for accepting WebSocket connections.\n */\n platform: AgentXPlatform;\n\n /**\n * LLM Driver factory function - creates Driver per Agent\n */\n createDriver: CreateDriver;\n\n /**\n * Port to listen on (standalone mode)\n */\n port?: number;\n\n /**\n * Host to bind to (default: \"0.0.0.0\")\n */\n host?: string;\n\n /**\n * Existing HTTP server to attach to (attached mode)\n */\n server?: import(\"@agentxjs/core/network\").MinimalHTTPServer;\n\n /**\n * WebSocket path when attached (default: \"/ws\")\n */\n wsPath?: string;\n\n /**\n * Enable debug logging\n */\n debug?: boolean;\n}\n\n/**\n * Create an AgentX server\n */\nexport async function createServer(config: ServerConfig): Promise<AgentXServer> {\n const { wsPath = \"/ws\" } = config;\n const platform = config.platform;\n\n // Create runtime from platform + driver\n const runtime = createAgentXRuntime(platform, config.createDriver);\n\n // Get channel server from platform\n const wsServer = platform.channelServer;\n if (!wsServer) {\n throw new Error(\"Platform must provide channelServer for server mode\");\n }\n\n // Create command handler (no longer needs eventBus)\n const commandHandler = new CommandHandler(runtime);\n\n // Track connections\n const connections = new Map<string, ConnectionState>();\n\n /**\n * Subscribe connection to a topic\n */\n function subscribeToTopic(connectionId: string, topic: string): void {\n const state = connections.get(connectionId);\n if (!state || state.subscribedTopics.has(topic)) return;\n\n state.subscribedTopics.add(topic);\n logger.debug(\"Connection subscribed to topic\", { connectionId, topic });\n }\n\n /**\n * Check if event should be sent to connection based on subscriptions\n */\n function shouldSendToConnection(state: ConnectionState, event: BusEvent): boolean {\n // Skip internal driver events\n if (event.source === \"driver\" && event.intent !== \"notification\") {\n return false;\n }\n\n // Skip command events (they are handled via RPC, not broadcast)\n if (event.source === \"command\") {\n return false;\n }\n\n // Check if subscribed to event's session\n const eventWithContext = event as BusEvent & { context?: { sessionId?: string } };\n const sessionId = eventWithContext.context?.sessionId;\n if (sessionId && state.subscribedTopics.has(sessionId)) {\n return true;\n }\n\n // Send to global subscribers\n return state.subscribedTopics.has(\"global\");\n }\n\n /**\n * Send JSON-RPC response to a specific connection\n */\n function sendResponse(connection: ChannelConnection, id: string | number, result: unknown): void {\n const response = createSuccessResponse(id, result);\n connection.send(JSON.stringify(response));\n }\n\n /**\n * Send JSON-RPC error to a specific connection\n */\n function sendError(\n connection: ChannelConnection,\n id: string | number | null,\n code: number,\n message: string\n ): void {\n const response = createErrorResponse(id, code, message);\n connection.send(JSON.stringify(response));\n }\n\n // Handle new connections\n wsServer.onConnection((connection) => {\n const state: ConnectionState = {\n connection,\n subscribedTopics: new Set([\"global\"]),\n };\n connections.set(connection.id, state);\n\n logger.info(\"Client connected\", {\n connectionId: connection.id,\n totalConnections: connections.size,\n });\n\n // Handle messages from client\n connection.onMessage(async (message) => {\n try {\n const parsed = parseMessage(message);\n\n // Handle single message (not batch)\n if (!Array.isArray(parsed)) {\n await handleParsedMessage(connection, state, parsed);\n } else {\n // Handle batch (not common, but supported by JSON-RPC 2.0)\n for (const item of parsed) {\n await handleParsedMessage(connection, state, item);\n }\n }\n } catch (err) {\n logger.error(\"Failed to parse message\", { error: (err as Error).message });\n sendError(connection, null, RpcErrorCodes.PARSE_ERROR, \"Parse error\");\n }\n });\n\n // Cleanup on disconnect\n connection.onClose(() => {\n connections.delete(connection.id);\n logger.info(\"Client disconnected\", {\n connectionId: connection.id,\n totalConnections: connections.size,\n });\n });\n });\n\n /**\n * Handle a parsed JSON-RPC message\n */\n async function handleParsedMessage(\n connection: ChannelConnection,\n state: ConnectionState,\n parsed: import(\"jsonrpc-lite\").IParsedObject\n ): Promise<void> {\n if (isRequest(parsed)) {\n // JSON-RPC Request - handle and respond directly\n const payload = parsed.payload as {\n id: string | number;\n method: string;\n params: unknown;\n };\n const { id, method, params } = payload;\n\n logger.debug(\"Received RPC request\", { id, method });\n\n // Call command handler\n const result = await commandHandler.handle(method as RpcMethod, params);\n\n if (result.success) {\n sendResponse(connection, id, result.data);\n } else {\n sendError(connection, id, result.code, result.message);\n }\n } else if (isNotification(parsed)) {\n // JSON-RPC Notification - control messages\n const payload = parsed.payload as {\n method: string;\n params: unknown;\n };\n const { method, params } = payload;\n\n logger.debug(\"Received notification\", { method });\n\n if (method === \"subscribe\") {\n const { topic } = params as { topic: string };\n subscribeToTopic(connection.id, topic);\n } else if (method === \"unsubscribe\") {\n const { topic } = params as { topic: string };\n state.subscribedTopics.delete(topic);\n logger.debug(\"Connection unsubscribed from topic\", { connectionId: connection.id, topic });\n } else if (method === \"control.ack\") {\n // ACK for reliable delivery - handled by network layer\n logger.debug(\"Received ACK notification\");\n }\n } else {\n // Invalid message\n logger.warn(\"Received invalid JSON-RPC message\");\n }\n }\n\n // Route internal events to connected clients as JSON-RPC notifications\n platform.eventBus.onAny((event) => {\n // Only broadcast broadcastable events\n if (!shouldBroadcastEvent(event)) {\n return;\n }\n\n // Get topic from event context\n const eventWithContext = event as BusEvent & { context?: { sessionId?: string } };\n const topic = eventWithContext.context?.sessionId || \"global\";\n\n // Wrap as JSON-RPC notification\n const notification = createStreamEvent(topic, event as SystemEvent);\n const message = JSON.stringify(notification);\n\n for (const [connectionId, state] of connections) {\n if (shouldSendToConnection(state, event)) {\n state.connection.sendReliable(message, {\n timeout: 10000,\n onTimeout: () => {\n logger.warn(\"Event ACK timeout\", {\n connectionId,\n eventType: event.type,\n });\n },\n });\n }\n }\n });\n\n /**\n * Check if event should be broadcast\n */\n function shouldBroadcastEvent(event: BusEvent): boolean {\n // Skip internal driver events\n if (event.source === \"driver\" && event.intent !== \"notification\") {\n return false;\n }\n\n // Skip command events (handled via RPC)\n if (event.source === \"command\") {\n return false;\n }\n\n // Check broadcastable flag\n const systemEvent = event as SystemEvent;\n if (systemEvent.broadcastable === false) {\n return false;\n }\n\n return true;\n }\n\n // Attach to existing server if provided\n if (config.server) {\n wsServer.attach(config.server, wsPath);\n logger.info(\"WebSocket attached to existing server\", { path: wsPath });\n }\n\n return {\n async listen(port?: number, host?: string) {\n if (config.server) {\n throw new Error(\n \"Cannot listen when attached to existing server. The server should call listen() instead.\"\n );\n }\n\n const listenPort = port ?? config.port ?? 5200;\n const listenHost = host ?? config.host ?? \"0.0.0.0\";\n\n await wsServer.listen(listenPort, listenHost);\n logger.info(\"Server listening\", { port: listenPort, host: listenHost });\n },\n\n async close() {\n await wsServer.close();\n logger.info(\"Server closed\");\n },\n\n async dispose() {\n // Cleanup in order\n await wsServer.dispose();\n commandHandler.dispose();\n await runtime.shutdown();\n logger.info(\"Server disposed\");\n },\n };\n}\n","/**\n * CommandHandler - Handles JSON-RPC requests directly\n *\n * No longer uses EventBus for request/response. Instead:\n * - Receives RPC requests directly\n * - Returns RPC responses directly\n * - EventBus is only used for stream events (notifications)\n */\n\nimport type { UserContentPart } from \"@agentxjs/core/agent\";\nimport type { RpcMethod } from \"@agentxjs/core/network\";\nimport type { AgentXRuntime } from \"@agentxjs/core/runtime\";\nimport { createLogger } from \"@deepracticex/logger\";\n\nconst logger = createLogger(\"server/CommandHandler\");\n\n/**\n * RPC Result type\n */\nexport interface RpcResult<T = unknown> {\n success: true;\n data: T;\n}\n\nexport interface RpcError {\n success: false;\n code: number;\n message: string;\n}\n\nexport type RpcResponse<T = unknown> = RpcResult<T> | RpcError;\n\n/**\n * Helper to create success result\n */\nfunction ok<T>(data: T): RpcResult<T> {\n return { success: true, data };\n}\n\n/**\n * Helper to create error result\n */\nfunction err(code: number, message: string): RpcError {\n return { success: false, code, message };\n}\n\n/**\n * CommandHandler - Processes RPC requests directly\n */\nexport class CommandHandler {\n private readonly runtime: AgentXRuntime;\n\n constructor(runtime: AgentXRuntime) {\n this.runtime = runtime;\n logger.debug(\"CommandHandler created\");\n }\n\n /**\n * Handle an RPC request and return response\n */\n async handle(method: RpcMethod, params: unknown): Promise<RpcResponse> {\n logger.debug(\"Handling RPC request\", { method });\n\n try {\n switch (method) {\n // Container\n case \"container.create\":\n return await this.handleContainerCreate(params);\n case \"container.get\":\n return await this.handleContainerGet(params);\n case \"container.list\":\n return await this.handleContainerList(params);\n\n // Image\n case \"image.create\":\n return await this.handleImageCreate(params);\n case \"image.get\":\n return await this.handleImageGet(params);\n case \"image.list\":\n return await this.handleImageList(params);\n case \"image.delete\":\n return await this.handleImageDelete(params);\n case \"image.run\":\n return await this.handleImageRun(params);\n case \"image.stop\":\n return await this.handleImageStop(params);\n case \"image.update\":\n return await this.handleImageUpdate(params);\n case \"image.messages\":\n return await this.handleImageMessages(params);\n\n // Instance\n case \"instance.get\":\n return await this.handleAgentGet(params);\n case \"instance.list\":\n return await this.handleAgentList(params);\n case \"instance.destroy\":\n return await this.handleAgentDestroy(params);\n case \"instance.destroyAll\":\n return await this.handleAgentDestroyAll(params);\n case \"instance.interrupt\":\n return await this.handleAgentInterrupt(params);\n\n // Message\n case \"message.send\":\n return await this.handleMessageSend(params);\n\n // Prototype\n case \"prototype.create\":\n return await this.handlePrototypeCreate(params);\n case \"prototype.get\":\n return await this.handlePrototypeGet(params);\n case \"prototype.list\":\n return await this.handlePrototypeList(params);\n case \"prototype.update\":\n return await this.handlePrototypeUpdate(params);\n case \"prototype.delete\":\n return await this.handlePrototypeDelete(params);\n\n // LLM Provider\n case \"llm.create\":\n return await this.handleLLMCreate(params);\n case \"llm.get\":\n return await this.handleLLMGet(params);\n case \"llm.list\":\n return await this.handleLLMList(params);\n case \"llm.update\":\n return await this.handleLLMUpdate(params);\n case \"llm.delete\":\n return await this.handleLLMDelete(params);\n case \"llm.default\":\n return await this.handleLLMDefault(params);\n\n default:\n return err(-32601, `Method not found: ${method}`);\n }\n } catch (error) {\n logger.error(\"RPC handler error\", { method, error });\n return err(-32000, error instanceof Error ? error.message : String(error));\n }\n }\n\n // ==================== Container Commands ====================\n\n private async handleContainerCreate(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId: string };\n const { getOrCreateContainer } = await import(\"@agentxjs/core/container\");\n const { containerRepository, imageRepository, sessionRepository } = this.runtime.platform;\n\n const container = await getOrCreateContainer(containerId, {\n containerRepository,\n imageRepository,\n sessionRepository,\n });\n\n return ok({ containerId: container.containerId });\n }\n\n private async handleContainerGet(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId: string };\n const exists = await this.runtime.platform.containerRepository.containerExists(containerId);\n return ok({ containerId, exists });\n }\n\n private async handleContainerList(_params: unknown): Promise<RpcResponse> {\n const containers = await this.runtime.platform.containerRepository.findAllContainers();\n return ok({ containerIds: containers.map((c) => c.containerId) });\n }\n\n // ==================== Image Commands ====================\n\n private async handleImageCreate(params: unknown): Promise<RpcResponse> {\n const { containerId, name, description, contextId, embody, customData } = params as {\n containerId: string;\n name?: string;\n description?: string;\n contextId?: string;\n embody?: import(\"@agentxjs/core/persistence\").Embodiment;\n customData?: Record<string, unknown>;\n };\n\n const { imageRepository, sessionRepository } = this.runtime.platform;\n const { createImage } = await import(\"@agentxjs/core/image\");\n\n const image = await createImage(\n { containerId, name, description, contextId, embody, customData },\n { imageRepository, sessionRepository }\n );\n\n return ok({\n record: image.toRecord(),\n __subscriptions: [image.sessionId],\n });\n }\n\n private async handleImageGet(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n const record = await this.runtime.platform.imageRepository.findImageById(imageId);\n return ok({\n record,\n __subscriptions: record?.sessionId ? [record.sessionId] : undefined,\n });\n }\n\n private async handleImageList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId?: string };\n const records = containerId\n ? await this.runtime.platform.imageRepository.findImagesByContainerId(containerId)\n : await this.runtime.platform.imageRepository.findAllImages();\n\n return ok({\n records,\n __subscriptions: records.map((r) => r.sessionId),\n });\n }\n\n private async handleImageDelete(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n const { loadImage } = await import(\"@agentxjs/core/image\");\n const { imageRepository, sessionRepository } = this.runtime.platform;\n\n const image = await loadImage(imageId, { imageRepository, sessionRepository });\n if (image) {\n await image.delete();\n }\n\n return ok({ imageId });\n }\n\n private async handleImageRun(params: unknown): Promise<RpcResponse> {\n const { imageId, instanceId: requestedInstanceId } = params as {\n imageId: string;\n instanceId?: string;\n };\n\n // Check if already have a running agent for this image\n const existingAgent = this.runtime\n .getAgents()\n .find((a) => a.imageId === imageId && a.lifecycle === \"running\");\n\n if (existingAgent) {\n logger.debug(\"Reusing existing agent for image\", {\n imageId,\n instanceId: existingAgent.instanceId,\n });\n return ok({\n imageId,\n instanceId: existingAgent.instanceId,\n sessionId: existingAgent.sessionId,\n containerId: existingAgent.containerId,\n reused: true,\n });\n }\n\n // Create new agent (with optional custom instanceId)\n const agent = await this.runtime.createAgent({\n imageId,\n instanceId: requestedInstanceId,\n });\n logger.info(\"Created new agent for image\", {\n imageId,\n instanceId: agent.instanceId,\n });\n\n return ok({\n imageId,\n instanceId: agent.instanceId,\n sessionId: agent.sessionId,\n containerId: agent.containerId,\n reused: false,\n });\n }\n\n private async handleImageStop(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n\n // Find running agent for this image\n const agent = this.runtime\n .getAgents()\n .find((a) => a.imageId === imageId && a.lifecycle === \"running\");\n\n if (agent) {\n await this.runtime.stopAgent(agent.instanceId);\n logger.info(\"Stopped agent for image\", { imageId, instanceId: agent.instanceId });\n } else {\n logger.debug(\"No running agent found for image\", { imageId });\n }\n\n return ok({ imageId });\n }\n\n private async handleImageUpdate(params: unknown): Promise<RpcResponse> {\n const { imageId, updates } = params as {\n imageId: string;\n updates: {\n name?: string;\n description?: string;\n embody?: import(\"@agentxjs/core/persistence\").Embodiment;\n customData?: Record<string, unknown>;\n };\n };\n\n // Get existing image\n const imageRecord = await this.runtime.platform.imageRepository.findImageById(imageId);\n if (!imageRecord) {\n return err(404, `Image not found: ${imageId}`);\n }\n\n // Update image record (embody is merged, not replaced)\n const { embody: embodyUpdates, ...otherUpdates } = updates;\n const updatedRecord = {\n ...imageRecord,\n ...otherUpdates,\n embody: embodyUpdates ? { ...imageRecord.embody, ...embodyUpdates } : imageRecord.embody,\n updatedAt: Date.now(),\n };\n\n await this.runtime.platform.imageRepository.saveImage(updatedRecord);\n\n logger.info(\"Updated image\", { imageId, updates });\n\n return ok({ record: updatedRecord });\n }\n\n private async handleImageMessages(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n\n // Get image record to find sessionId\n const imageRecord = await this.runtime.platform.imageRepository.findImageById(imageId);\n if (!imageRecord) {\n return err(404, `Image not found: ${imageId}`);\n }\n\n // Get messages from session\n const messages = await this.runtime.platform.sessionRepository.getMessages(\n imageRecord.sessionId\n );\n\n logger.debug(\"Got messages for image\", { imageId, count: messages.length });\n\n return ok({ imageId, messages });\n }\n\n // ==================== Agent Commands ====================\n\n private async handleAgentGet(params: unknown): Promise<RpcResponse> {\n const { instanceId } = params as { instanceId: string };\n const agent = this.runtime.getAgent(instanceId);\n\n return ok({\n agent: agent\n ? {\n instanceId: agent.instanceId,\n imageId: agent.imageId,\n containerId: agent.containerId,\n sessionId: agent.sessionId,\n lifecycle: agent.lifecycle,\n }\n : null,\n exists: !!agent,\n });\n }\n\n private async handleAgentList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId?: string };\n const agents = containerId\n ? this.runtime.getAgentsByContainer(containerId)\n : this.runtime.getAgents();\n\n return ok({\n agents: agents.map((a) => ({\n instanceId: a.instanceId,\n imageId: a.imageId,\n containerId: a.containerId,\n sessionId: a.sessionId,\n lifecycle: a.lifecycle,\n })),\n });\n }\n\n private async handleAgentDestroy(params: unknown): Promise<RpcResponse> {\n const { instanceId } = params as { instanceId: string };\n\n // Check if agent exists first\n const agent = this.runtime.getAgent(instanceId);\n if (!agent) {\n return ok({ instanceId, success: false });\n }\n\n await this.runtime.destroyAgent(instanceId);\n return ok({ instanceId, success: true });\n }\n\n private async handleAgentDestroyAll(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId: string };\n const agents = this.runtime.getAgentsByContainer(containerId);\n for (const agent of agents) {\n await this.runtime.destroyAgent(agent.instanceId);\n }\n return ok({ containerId });\n }\n\n private async handleAgentInterrupt(params: unknown): Promise<RpcResponse> {\n const { instanceId } = params as { instanceId: string };\n this.runtime.interrupt(instanceId);\n return ok({ instanceId });\n }\n\n // ==================== Message Commands ====================\n\n private async handleMessageSend(params: unknown): Promise<RpcResponse> {\n const { instanceId, imageId, content } = params as {\n instanceId?: string;\n imageId?: string;\n content: string | UserContentPart[];\n };\n\n let targetInstanceId: string;\n\n if (instanceId) {\n // Direct agent reference\n targetInstanceId = instanceId;\n } else if (imageId) {\n // Auto-activate image: find or create agent\n const existingAgent = this.runtime\n .getAgents()\n .find((a) => a.imageId === imageId && a.lifecycle === \"running\");\n\n if (existingAgent) {\n targetInstanceId = existingAgent.instanceId;\n logger.debug(\"Using existing agent for message\", {\n imageId,\n instanceId: targetInstanceId,\n });\n } else {\n // Create new agent for this image\n const agent = await this.runtime.createAgent({ imageId });\n targetInstanceId = agent.instanceId;\n logger.info(\"Auto-created agent for message\", {\n imageId,\n instanceId: targetInstanceId,\n });\n }\n } else {\n return err(-32602, \"Either instanceId or imageId is required\");\n }\n\n await this.runtime.receive(targetInstanceId, content);\n return ok({ instanceId: targetInstanceId, imageId });\n }\n\n // ==================== Prototype Commands ====================\n\n private async handlePrototypeCreate(params: unknown): Promise<RpcResponse> {\n const { containerId, name, description, contextId, embody, customData } = params as {\n containerId: string;\n name: string;\n description?: string;\n contextId?: string;\n embody?: import(\"@agentxjs/core/persistence\").Embodiment;\n customData?: Record<string, unknown>;\n };\n\n const repo = this.runtime.platform.prototypeRepository;\n if (!repo) {\n return err(-32000, \"Prototype repository not available\");\n }\n\n const now = Date.now();\n const random = Math.random().toString(36).slice(2, 8);\n const record = {\n prototypeId: `proto_${now}_${random}`,\n containerId,\n name,\n description,\n contextId,\n embody,\n customData,\n createdAt: now,\n updatedAt: now,\n };\n\n await repo.savePrototype(record);\n return ok({ record });\n }\n\n private async handlePrototypeGet(params: unknown): Promise<RpcResponse> {\n const { prototypeId } = params as { prototypeId: string };\n const repo = this.runtime.platform.prototypeRepository;\n if (!repo) {\n return err(-32000, \"Prototype repository not available\");\n }\n\n const record = await repo.findPrototypeById(prototypeId);\n return ok({ record });\n }\n\n private async handlePrototypeList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId?: string };\n const repo = this.runtime.platform.prototypeRepository;\n if (!repo) {\n return err(-32000, \"Prototype repository not available\");\n }\n\n const records = containerId\n ? await repo.findPrototypesByContainerId(containerId)\n : await repo.findAllPrototypes();\n\n return ok({ records });\n }\n\n private async handlePrototypeUpdate(params: unknown): Promise<RpcResponse> {\n const { prototypeId, updates } = params as {\n prototypeId: string;\n updates: {\n name?: string;\n description?: string;\n contextId?: string;\n embody?: import(\"@agentxjs/core/persistence\").Embodiment;\n customData?: Record<string, unknown>;\n };\n };\n\n const repo = this.runtime.platform.prototypeRepository;\n if (!repo) {\n return err(-32000, \"Prototype repository not available\");\n }\n\n const existing = await repo.findPrototypeById(prototypeId);\n if (!existing) {\n return err(404, `Prototype not found: ${prototypeId}`);\n }\n\n const { embody: embodyUpdates, ...otherUpdates } = updates;\n const updated = {\n ...existing,\n ...otherUpdates,\n embody: embodyUpdates ? { ...existing.embody, ...embodyUpdates } : existing.embody,\n updatedAt: Date.now(),\n };\n\n await repo.savePrototype(updated);\n return ok({ record: updated });\n }\n\n private async handlePrototypeDelete(params: unknown): Promise<RpcResponse> {\n const { prototypeId } = params as { prototypeId: string };\n const repo = this.runtime.platform.prototypeRepository;\n if (!repo) {\n return err(-32000, \"Prototype repository not available\");\n }\n\n await repo.deletePrototype(prototypeId);\n return ok({ prototypeId });\n }\n\n // ==================== LLM Provider Commands ====================\n\n private async handleLLMCreate(params: unknown): Promise<RpcResponse> {\n const { containerId, name, vendor, protocol, apiKey, baseUrl, model } = params as {\n containerId: string;\n name: string;\n vendor: string;\n protocol: string;\n apiKey: string;\n baseUrl?: string;\n model?: string;\n };\n\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const { generateId } = await import(\"@deepracticex/id\");\n const now = Date.now();\n const record = {\n id: generateId(\"llm\"),\n containerId,\n name,\n vendor,\n protocol: protocol as \"anthropic\" | \"openai\",\n apiKey,\n baseUrl,\n model,\n isDefault: false,\n createdAt: now,\n updatedAt: now,\n };\n\n await repo.saveLLMProvider(record);\n return ok({ record });\n }\n\n private async handleLLMGet(params: unknown): Promise<RpcResponse> {\n const { id } = params as { id: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const record = await repo.findLLMProviderById(id);\n return ok({ record });\n }\n\n private async handleLLMList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const records = await repo.findLLMProvidersByContainerId(containerId);\n return ok({ records });\n }\n\n private async handleLLMUpdate(params: unknown): Promise<RpcResponse> {\n const { id, updates } = params as {\n id: string;\n updates: Record<string, unknown>;\n };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const existing = await repo.findLLMProviderById(id);\n if (!existing) {\n return err(404, `LLM provider not found: ${id}`);\n }\n\n const updated = {\n ...existing,\n ...updates,\n id: existing.id,\n containerId: existing.containerId,\n createdAt: existing.createdAt,\n updatedAt: Date.now(),\n };\n\n await repo.saveLLMProvider(updated);\n return ok({ record: updated });\n }\n\n private async handleLLMDelete(params: unknown): Promise<RpcResponse> {\n const { id } = params as { id: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n await repo.deleteLLMProvider(id);\n return ok({ id });\n }\n\n private async handleLLMDefault(params: unknown): Promise<RpcResponse> {\n const { id, containerId } = params as { id?: string; containerId?: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n if (id) {\n // Set default\n await repo.setDefaultLLMProvider(id);\n return ok({ id });\n }\n if (containerId) {\n // Get default\n const record = await repo.findDefaultLLMProvider(containerId);\n return ok({ record });\n }\n return err(-32602, \"Either id or containerId is required\");\n }\n\n // ==================== Lifecycle ====================\n\n dispose(): void {\n logger.debug(\"CommandHandler disposed\");\n }\n}\n"],"mappings":"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","names":["createLogger","logger","createLogger","err"]}
|
package/dist/server-3BCYHXYA.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|