@kadi.build/core 0.0.1-alpha.2 → 0.0.1-alpha.4
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 +1122 -216
- package/dist/KadiClient.d.ts +303 -0
- package/dist/KadiClient.d.ts.map +1 -0
- package/dist/KadiClient.js +1162 -0
- package/dist/KadiClient.js.map +1 -0
- package/dist/errors/error-codes.d.ts +215 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +295 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/loadAbility.d.ts +65 -0
- package/dist/loadAbility.d.ts.map +1 -0
- package/dist/loadAbility.js +335 -0
- package/dist/loadAbility.js.map +1 -0
- package/dist/messages/BrokerMessages.d.ts +84 -0
- package/dist/messages/BrokerMessages.d.ts.map +1 -0
- package/dist/messages/BrokerMessages.js +127 -0
- package/dist/messages/BrokerMessages.js.map +1 -0
- package/dist/messages/MessageBuilder.d.ts +83 -0
- package/dist/messages/MessageBuilder.d.ts.map +1 -0
- package/dist/messages/MessageBuilder.js +144 -0
- package/dist/messages/MessageBuilder.js.map +1 -0
- package/dist/schemas/events.schemas.d.ts +177 -0
- package/dist/schemas/events.schemas.d.ts.map +1 -0
- package/dist/schemas/events.schemas.js +265 -0
- package/dist/schemas/events.schemas.js.map +1 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +4 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/kadi.schemas.d.ts +70 -0
- package/dist/schemas/kadi.schemas.d.ts.map +1 -0
- package/dist/schemas/kadi.schemas.js +120 -0
- package/dist/schemas/kadi.schemas.js.map +1 -0
- package/dist/transports/BrokerTransport.d.ts +96 -0
- package/dist/transports/BrokerTransport.d.ts.map +1 -0
- package/dist/transports/BrokerTransport.js +145 -0
- package/dist/transports/BrokerTransport.js.map +1 -0
- package/dist/transports/NativeTransport.d.ts +92 -0
- package/dist/transports/NativeTransport.d.ts.map +1 -0
- package/dist/transports/NativeTransport.js +221 -0
- package/dist/transports/NativeTransport.js.map +1 -0
- package/dist/transports/StdioTransport.d.ts +112 -0
- package/dist/transports/StdioTransport.d.ts.map +1 -0
- package/dist/transports/StdioTransport.js +440 -0
- package/dist/transports/StdioTransport.js.map +1 -0
- package/dist/transports/Transport.d.ts +93 -0
- package/dist/transports/Transport.d.ts.map +1 -0
- package/dist/transports/Transport.js +13 -0
- package/dist/transports/Transport.js.map +1 -0
- package/dist/types/broker.d.ts +31 -0
- package/dist/types/broker.d.ts.map +1 -0
- package/dist/types/broker.js +6 -0
- package/dist/types/broker.js.map +1 -0
- package/dist/types/core.d.ts +138 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +26 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/events.d.ts +186 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +16 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +13 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/protocol.d.ts +160 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +5 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/utils/agentUtils.d.ts +102 -0
- package/dist/utils/agentUtils.d.ts.map +1 -0
- package/dist/utils/agentUtils.js +166 -0
- package/dist/utils/agentUtils.js.map +1 -0
- package/dist/utils/commandUtils.d.ts +45 -0
- package/dist/utils/commandUtils.d.ts.map +1 -0
- package/dist/utils/commandUtils.js +145 -0
- package/dist/utils/commandUtils.js.map +1 -0
- package/dist/utils/configUtils.d.ts +55 -0
- package/dist/utils/configUtils.d.ts.map +1 -0
- package/dist/utils/configUtils.js +100 -0
- package/dist/utils/configUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +59 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +122 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pathUtils.d.ts +48 -0
- package/dist/utils/pathUtils.d.ts.map +1 -0
- package/dist/utils/pathUtils.js +128 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/package.json +58 -5
- package/agent.json +0 -18
- package/broker.js +0 -214
- package/index.js +0 -382
- package/ipc.js +0 -220
- package/ipcInterfaces/pythonAbilityIPC.py +0 -177
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.schemas.js","sourceRoot":"","sources":["../../src/schemas/events.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const NetworkIdSchema: z.ZodString;
|
|
3
|
+
export declare const ToolNameSchema: z.ZodString;
|
|
4
|
+
export declare const ToolSchema: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
title: z.ZodOptional<z.ZodString>;
|
|
7
|
+
description: z.ZodOptional<z.ZodString>;
|
|
8
|
+
version: z.ZodOptional<z.ZodString>;
|
|
9
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
10
|
+
inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
11
|
+
networks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export declare const MailboxModeSchema: z.ZodEnum<{
|
|
14
|
+
volatile: "volatile";
|
|
15
|
+
persistent: "persistent";
|
|
16
|
+
}>;
|
|
17
|
+
export declare const AgentIdSchema: z.ZodString;
|
|
18
|
+
export declare const KadiRegisterParamsSchema: z.ZodObject<{
|
|
19
|
+
tools: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
20
|
+
name: z.ZodString;
|
|
21
|
+
title: z.ZodOptional<z.ZodString>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
version: z.ZodOptional<z.ZodString>;
|
|
24
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
25
|
+
inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
26
|
+
networks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
+
}, z.core.$strip>>>>;
|
|
28
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
29
|
+
mailboxMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
30
|
+
volatile: "volatile";
|
|
31
|
+
persistent: "persistent";
|
|
32
|
+
}>>>;
|
|
33
|
+
networks: z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>;
|
|
34
|
+
parentAgentId: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
export type KadiRegisterParams = z.infer<typeof KadiRegisterParamsSchema>;
|
|
37
|
+
export declare const KadiRegisterResultSchema: z.ZodObject<{
|
|
38
|
+
agentId: z.ZodString;
|
|
39
|
+
registered: z.ZodNumber;
|
|
40
|
+
networks: z.ZodArray<z.ZodString>;
|
|
41
|
+
mailbox: z.ZodString;
|
|
42
|
+
mailboxMode: z.ZodEnum<{
|
|
43
|
+
volatile: "volatile";
|
|
44
|
+
persistent: "persistent";
|
|
45
|
+
}>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export type KadiRegisterResult = z.infer<typeof KadiRegisterResultSchema>;
|
|
48
|
+
export declare const KadiToolListParamsSchema: z.ZodObject<{
|
|
49
|
+
networks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
50
|
+
}, z.core.$strip>;
|
|
51
|
+
export type KadiToolListParams = z.infer<typeof KadiToolListParamsSchema>;
|
|
52
|
+
export declare const KadiToolInvokeParamsSchema: z.ZodObject<{
|
|
53
|
+
toolName: z.ZodString;
|
|
54
|
+
toolInput: z.ZodOptional<z.ZodUnknown>;
|
|
55
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
56
|
+
timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
57
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
58
|
+
}, z.core.$strip>;
|
|
59
|
+
export type KadiToolInvokeParams = z.infer<typeof KadiToolInvokeParamsSchema>;
|
|
60
|
+
export declare const KadiToolResultParamsSchema: z.ZodObject<{
|
|
61
|
+
requestId: z.ZodString;
|
|
62
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
63
|
+
error: z.ZodOptional<z.ZodUnknown>;
|
|
64
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
export type KadiToolResultParams = z.infer<typeof KadiToolResultParamsSchema>;
|
|
67
|
+
export declare class ValidationMiddleware {
|
|
68
|
+
static validateParams<T>(method: string, params: unknown): T;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=kadi.schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kadi.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/kadi.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,eAAe,aAKK,CAAC;AAMlC,eAAO,MAAM,cAAc,aAmB2B,CAAC;AAGvD,eAAO,MAAM,UAAU;;;;;;;;iBAWrB,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;EAAqC,CAAC;AAGpE,eAAO,MAAM,aAAa,aAKK,CAAC;AAOhC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;iBAiBjC,CAAC;AAEL,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG1E,eAAO,MAAM,wBAAwB;;;;;;;;;iBAMnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG1E,eAAO,MAAM,wBAAwB;;iBAEnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG1E,eAAO,MAAM,0BAA0B;;;;;;iBAMrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAG9E,eAAO,MAAM,0BAA0B;;;;;iBAKrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC;CAc7D"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// NETWORK VALIDATION SCHEMAS
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Network ID validation
|
|
6
|
+
export const NetworkIdSchema = z
|
|
7
|
+
.string()
|
|
8
|
+
.min(1)
|
|
9
|
+
.max(128)
|
|
10
|
+
.regex(/^[a-z0-9][a-z0-9-_.]*$/i)
|
|
11
|
+
.describe('Network identifier');
|
|
12
|
+
// Tool name validation - Supports both legacy and namespaced formats
|
|
13
|
+
// Namespaced format: <namespace>/<name>@<major>[.<minor>]
|
|
14
|
+
// Legacy format: simple name (will be auto-normalized)
|
|
15
|
+
// Examples: 'data/analyze_dataset@1', 'kadi/echo@1.0', 'legacy_tool'
|
|
16
|
+
export const ToolNameSchema = z
|
|
17
|
+
.string()
|
|
18
|
+
.min(1)
|
|
19
|
+
.max(128)
|
|
20
|
+
.refine((val) => {
|
|
21
|
+
// Allow legacy format (simple names)
|
|
22
|
+
const legacyRegex = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
|
|
23
|
+
// Strict namespaced format
|
|
24
|
+
const namespacedRegex = /^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*@\d+(?:\.\d+)?$/;
|
|
25
|
+
return legacyRegex.test(val) || namespacedRegex.test(val);
|
|
26
|
+
}, {
|
|
27
|
+
message: 'Tool name must be either legacy format (alphanumeric) or namespaced format (<namespace>/<name>@<version>)'
|
|
28
|
+
})
|
|
29
|
+
.describe('Tool name - legacy or namespaced format');
|
|
30
|
+
// Tool schema with networks, namespace, and versioning
|
|
31
|
+
export const ToolSchema = z.object({
|
|
32
|
+
name: ToolNameSchema, // Now supports namespace/name@version format
|
|
33
|
+
title: z.string().min(1).max(128).optional(), // Human-readable title
|
|
34
|
+
description: z.string().optional(),
|
|
35
|
+
version: z
|
|
36
|
+
.string()
|
|
37
|
+
.regex(/^\d+\.\d+\.\d+$/)
|
|
38
|
+
.optional(), // Semantic version
|
|
39
|
+
tags: z.array(z.string()).optional(), // Routing hints like ['cpu-heavy', 'batch']
|
|
40
|
+
inputSchema: z.record(z.string(), z.unknown()).optional(),
|
|
41
|
+
networks: z.array(NetworkIdSchema).optional()
|
|
42
|
+
});
|
|
43
|
+
// Mailbox mode validation
|
|
44
|
+
export const MailboxModeSchema = z.enum(['volatile', 'persistent']);
|
|
45
|
+
// Agent ID validation
|
|
46
|
+
export const AgentIdSchema = z
|
|
47
|
+
.string()
|
|
48
|
+
.min(1)
|
|
49
|
+
.max(64)
|
|
50
|
+
.regex(/^[a-z0-9]+$/i)
|
|
51
|
+
.describe('Agent identifier');
|
|
52
|
+
// ============================================================================
|
|
53
|
+
// KADI PROTOCOL MESSAGE SCHEMAS
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// Registration Schema - Updated to use 'networks' instead of 'scopes'
|
|
56
|
+
export const KadiRegisterParamsSchema = z
|
|
57
|
+
.object({
|
|
58
|
+
tools: z.array(ToolSchema).optional().default([]),
|
|
59
|
+
displayName: z.string().min(1).max(64).optional(),
|
|
60
|
+
mailboxMode: MailboxModeSchema.optional().default('volatile'),
|
|
61
|
+
networks: z
|
|
62
|
+
.union([
|
|
63
|
+
// Changed from 'scopes'
|
|
64
|
+
NetworkIdSchema,
|
|
65
|
+
z.array(NetworkIdSchema)
|
|
66
|
+
])
|
|
67
|
+
.transform((val) => (Array.isArray(val) ? val : [val])),
|
|
68
|
+
parentAgentId: AgentIdSchema.optional()
|
|
69
|
+
})
|
|
70
|
+
.refine((data) => data.networks.length > 0, {
|
|
71
|
+
message: 'At least one network must be specified',
|
|
72
|
+
path: ['networks']
|
|
73
|
+
});
|
|
74
|
+
// Registration Result
|
|
75
|
+
export const KadiRegisterResultSchema = z.object({
|
|
76
|
+
agentId: z.string(),
|
|
77
|
+
registered: z.number(),
|
|
78
|
+
networks: z.array(NetworkIdSchema),
|
|
79
|
+
mailbox: z.string(),
|
|
80
|
+
mailboxMode: MailboxModeSchema
|
|
81
|
+
});
|
|
82
|
+
// Tool List params - Changed from 'scopes'
|
|
83
|
+
export const KadiToolListParamsSchema = z.object({
|
|
84
|
+
networks: z.array(NetworkIdSchema).optional() // Filter by networks
|
|
85
|
+
});
|
|
86
|
+
// Tool invocation params
|
|
87
|
+
export const KadiToolInvokeParamsSchema = z.object({
|
|
88
|
+
toolName: ToolNameSchema,
|
|
89
|
+
toolInput: z.unknown().optional(),
|
|
90
|
+
requestId: z.string().optional(),
|
|
91
|
+
timeout: z.number().min(1000).max(300000).optional().default(30000),
|
|
92
|
+
metadata: z.record(z.string(), z.unknown()).optional().default({})
|
|
93
|
+
});
|
|
94
|
+
// Tool result params
|
|
95
|
+
export const KadiToolResultParamsSchema = z.object({
|
|
96
|
+
requestId: z.string(),
|
|
97
|
+
result: z.unknown().optional(),
|
|
98
|
+
error: z.unknown().optional(),
|
|
99
|
+
metadata: z.record(z.string(), z.unknown()).optional().default({})
|
|
100
|
+
});
|
|
101
|
+
// ============================================================================
|
|
102
|
+
// VALIDATION MIDDLEWARE
|
|
103
|
+
// ============================================================================
|
|
104
|
+
export class ValidationMiddleware {
|
|
105
|
+
static validateParams(method, params) {
|
|
106
|
+
switch (method) {
|
|
107
|
+
case 'kadi.agent.register':
|
|
108
|
+
return KadiRegisterParamsSchema.parse(params);
|
|
109
|
+
case 'kadi.ability.list':
|
|
110
|
+
return KadiToolListParamsSchema.parse(params);
|
|
111
|
+
case 'kadi.ability.invoke':
|
|
112
|
+
return KadiToolInvokeParamsSchema.parse(params);
|
|
113
|
+
case 'kadi.ability.result':
|
|
114
|
+
return KadiToolResultParamsSchema.parse(params);
|
|
115
|
+
default:
|
|
116
|
+
return params;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=kadi.schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kadi.schemas.js","sourceRoot":"","sources":["../../src/schemas/kadi.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrokerTransport - Handles communication with remote abilities via broker
|
|
3
|
+
*
|
|
4
|
+
* This transport connects to a broker (WebSocket server) to invoke methods
|
|
5
|
+
* on remote agents/abilities. Unlike Native and Stdio transports which load
|
|
6
|
+
* local code, BrokerTransport is purely a client that calls remote services.
|
|
7
|
+
*
|
|
8
|
+
* The broker acts as a message router, allowing agents to discover and
|
|
9
|
+
* invoke each other's methods across network boundaries.
|
|
10
|
+
*
|
|
11
|
+
* Communication Flow:
|
|
12
|
+
* 1. Connect to broker via WebSocket
|
|
13
|
+
* 2. Authenticate and join networks
|
|
14
|
+
* 3. Discover available methods from target agent
|
|
15
|
+
* 4. Send method invocations through broker
|
|
16
|
+
* 5. Receive results back through broker
|
|
17
|
+
*/
|
|
18
|
+
import { EventEmitter } from 'events';
|
|
19
|
+
import { Transport, TransportOptions } from './Transport.js';
|
|
20
|
+
/**
|
|
21
|
+
* Options specific to BrokerTransport
|
|
22
|
+
*/
|
|
23
|
+
interface BrokerTransportOptions extends TransportOptions {
|
|
24
|
+
/**
|
|
25
|
+
* The target agent name we want to call methods on
|
|
26
|
+
* This is the remote agent that has the methods we want to invoke
|
|
27
|
+
*/
|
|
28
|
+
targetAgent: string;
|
|
29
|
+
/**
|
|
30
|
+
* WebSocket URL of the broker
|
|
31
|
+
*/
|
|
32
|
+
brokerUrl: string;
|
|
33
|
+
/**
|
|
34
|
+
* Networks to join for discovering agents
|
|
35
|
+
*/
|
|
36
|
+
networks?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* Whether to spawn the ability locally first (not used for client-only mode)
|
|
39
|
+
*/
|
|
40
|
+
spawnAbility?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* BrokerTransport - Client for invoking methods on remote agents
|
|
44
|
+
*
|
|
45
|
+
* This transport is a thin wrapper around KadiClient's broker functionality.
|
|
46
|
+
* It creates an ephemeral KadiClient instance that connects to the broker
|
|
47
|
+
* solely for the purpose of calling methods on a remote agent.
|
|
48
|
+
*
|
|
49
|
+
* Unlike serving mode (where an agent registers its own methods),
|
|
50
|
+
* this transport is purely a consumer of remote methods.
|
|
51
|
+
*/
|
|
52
|
+
export declare class BrokerTransport extends EventEmitter implements Transport {
|
|
53
|
+
private options;
|
|
54
|
+
private logger;
|
|
55
|
+
private client?;
|
|
56
|
+
private targetAgent;
|
|
57
|
+
private connected;
|
|
58
|
+
constructor(options: BrokerTransportOptions);
|
|
59
|
+
/**
|
|
60
|
+
* Connect to the broker and discover target agent's methods
|
|
61
|
+
*
|
|
62
|
+
* This creates an ephemeral KadiClient that connects to the broker
|
|
63
|
+
* as a client (not serving any methods of its own).
|
|
64
|
+
*/
|
|
65
|
+
connect(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Invoke a method on the remote agent
|
|
68
|
+
*
|
|
69
|
+
* Sends the method invocation through the broker to the target agent.
|
|
70
|
+
*/
|
|
71
|
+
invoke(method: string, params: unknown): Promise<unknown>;
|
|
72
|
+
/**
|
|
73
|
+
* Get list of discovered methods
|
|
74
|
+
*
|
|
75
|
+
* Returns empty array as broker transport doesn't do method discovery.
|
|
76
|
+
*/
|
|
77
|
+
getMethods(): string[];
|
|
78
|
+
/**
|
|
79
|
+
* Disconnect from the broker
|
|
80
|
+
*
|
|
81
|
+
* Closes the WebSocket connection and cleans up resources.
|
|
82
|
+
*/
|
|
83
|
+
disconnect(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Check if transport is connected
|
|
86
|
+
*/
|
|
87
|
+
isConnected(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Get the target agent name
|
|
90
|
+
*
|
|
91
|
+
* Useful for debugging and logging
|
|
92
|
+
*/
|
|
93
|
+
getTargetAgent(): string;
|
|
94
|
+
}
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=BrokerTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrokerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BrokerTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAI7D;;GAEG;AACH,UAAU,sBAAuB,SAAQ,gBAAgB;IACvD;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,YAAa,YAAW,SAAS;IAMxD,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEN,OAAO,EAAE,sBAAsB;IAWnD;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD9B;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B/D;;;;OAIG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrokerTransport - Handles communication with remote abilities via broker
|
|
3
|
+
*
|
|
4
|
+
* This transport connects to a broker (WebSocket server) to invoke methods
|
|
5
|
+
* on remote agents/abilities. Unlike Native and Stdio transports which load
|
|
6
|
+
* local code, BrokerTransport is purely a client that calls remote services.
|
|
7
|
+
*
|
|
8
|
+
* The broker acts as a message router, allowing agents to discover and
|
|
9
|
+
* invoke each other's methods across network boundaries.
|
|
10
|
+
*
|
|
11
|
+
* Communication Flow:
|
|
12
|
+
* 1. Connect to broker via WebSocket
|
|
13
|
+
* 2. Authenticate and join networks
|
|
14
|
+
* 3. Discover available methods from target agent
|
|
15
|
+
* 4. Send method invocations through broker
|
|
16
|
+
* 5. Receive results back through broker
|
|
17
|
+
*/
|
|
18
|
+
import { EventEmitter } from 'events';
|
|
19
|
+
import { KadiClient } from '../KadiClient.js';
|
|
20
|
+
import { createComponentLogger } from '../utils/logger.js';
|
|
21
|
+
/**
|
|
22
|
+
* BrokerTransport - Client for invoking methods on remote agents
|
|
23
|
+
*
|
|
24
|
+
* This transport is a thin wrapper around KadiClient's broker functionality.
|
|
25
|
+
* It creates an ephemeral KadiClient instance that connects to the broker
|
|
26
|
+
* solely for the purpose of calling methods on a remote agent.
|
|
27
|
+
*
|
|
28
|
+
* Unlike serving mode (where an agent registers its own methods),
|
|
29
|
+
* this transport is purely a consumer of remote methods.
|
|
30
|
+
*/
|
|
31
|
+
export class BrokerTransport extends EventEmitter {
|
|
32
|
+
options;
|
|
33
|
+
logger;
|
|
34
|
+
client;
|
|
35
|
+
targetAgent;
|
|
36
|
+
connected = false;
|
|
37
|
+
constructor(options) {
|
|
38
|
+
super();
|
|
39
|
+
this.options = options;
|
|
40
|
+
this.targetAgent = options.targetAgent || options.abilityName;
|
|
41
|
+
this.logger = createComponentLogger('BrokerTransport');
|
|
42
|
+
this.logger.lifecycle('constructor', `Creating broker transport for target: ${this.targetAgent}`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Connect to the broker and discover target agent's methods
|
|
46
|
+
*
|
|
47
|
+
* This creates an ephemeral KadiClient that connects to the broker
|
|
48
|
+
* as a client (not serving any methods of its own).
|
|
49
|
+
*/
|
|
50
|
+
async connect() {
|
|
51
|
+
this.logger.lifecycle('connect', `Connecting to broker for target agent: ${this.targetAgent}`);
|
|
52
|
+
// Create an ephemeral client with a unique name
|
|
53
|
+
// This client doesn't serve any methods - it's just for calling remote methods
|
|
54
|
+
this.client = new KadiClient({
|
|
55
|
+
name: `client-for-${this.targetAgent}-${Date.now()}`,
|
|
56
|
+
role: 'agent',
|
|
57
|
+
protocol: 'broker',
|
|
58
|
+
networks: this.options.networks || ['global'],
|
|
59
|
+
brokerUrls: [this.options.brokerUrl]
|
|
60
|
+
});
|
|
61
|
+
// Forward events from the client
|
|
62
|
+
this.client.on('connected', () => {
|
|
63
|
+
this.logger.debug('connect', 'KadiClient connected to broker');
|
|
64
|
+
});
|
|
65
|
+
this.client.on('error', (error) => {
|
|
66
|
+
this.logger.error('connect', 'KadiClient error', error);
|
|
67
|
+
this.emit('error', error);
|
|
68
|
+
});
|
|
69
|
+
this.client.on('disconnected', () => {
|
|
70
|
+
this.logger.debug('connect', 'KadiClient disconnected from broker');
|
|
71
|
+
this.connected = false;
|
|
72
|
+
this.emit('disconnected');
|
|
73
|
+
});
|
|
74
|
+
try {
|
|
75
|
+
// Connect to the broker
|
|
76
|
+
await this.client.connectToBrokers([this.options.brokerUrl]);
|
|
77
|
+
this.logger.info('connect', `Connected to broker at ${this.options.brokerUrl}`);
|
|
78
|
+
this.connected = true;
|
|
79
|
+
this.logger.lifecycle('connect', `Broker transport connected to ${this.targetAgent}`);
|
|
80
|
+
this.emit('connected');
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
this.logger.error('connect', `Failed to connect to broker: ${error}`);
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Invoke a method on the remote agent
|
|
89
|
+
*
|
|
90
|
+
* Sends the method invocation through the broker to the target agent.
|
|
91
|
+
*/
|
|
92
|
+
async invoke(method, params) {
|
|
93
|
+
if (!this.connected || !this.client) {
|
|
94
|
+
throw new Error('Not connected to broker');
|
|
95
|
+
}
|
|
96
|
+
this.logger.trace('invoke', `Invoking ${this.targetAgent}.${method}`);
|
|
97
|
+
try {
|
|
98
|
+
// Use KadiClient's remote tool invocation
|
|
99
|
+
const result = await this.client.callTool(this.targetAgent, method, params);
|
|
100
|
+
this.logger.trace('invoke', `Method ${method} completed successfully`);
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
this.logger.error('invoke', `Failed to invoke ${this.targetAgent}.${method}: ${error}`);
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get list of discovered methods
|
|
110
|
+
*
|
|
111
|
+
* Returns empty array as broker transport doesn't do method discovery.
|
|
112
|
+
*/
|
|
113
|
+
getMethods() {
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Disconnect from the broker
|
|
118
|
+
*
|
|
119
|
+
* Closes the WebSocket connection and cleans up resources.
|
|
120
|
+
*/
|
|
121
|
+
async disconnect() {
|
|
122
|
+
this.logger.lifecycle('disconnect', 'Disconnecting broker transport');
|
|
123
|
+
if (this.client) {
|
|
124
|
+
await this.client.disconnect();
|
|
125
|
+
this.client = undefined;
|
|
126
|
+
}
|
|
127
|
+
this.connected = false;
|
|
128
|
+
this.emit('disconnected');
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if transport is connected
|
|
132
|
+
*/
|
|
133
|
+
isConnected() {
|
|
134
|
+
return this.connected;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get the target agent name
|
|
138
|
+
*
|
|
139
|
+
* Useful for debugging and logging
|
|
140
|
+
*/
|
|
141
|
+
getTargetAgent() {
|
|
142
|
+
return this.targetAgent;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=BrokerTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrokerTransport.js","sourceRoot":"","sources":["../../src/transports/BrokerTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NativeTransport - Handles direct in-process ability loading
|
|
3
|
+
*
|
|
4
|
+
* This transport loads abilities directly into the same process,
|
|
5
|
+
* allowing for zero-overhead method invocation. It's used when
|
|
6
|
+
* you want to load local JavaScript/TypeScript modules as abilities.
|
|
7
|
+
*
|
|
8
|
+
* The native protocol is the fastest but requires the ability code
|
|
9
|
+
* to be trusted since it runs in the same process.
|
|
10
|
+
*/
|
|
11
|
+
import { EventEmitter } from 'events';
|
|
12
|
+
import { Transport, TransportOptions } from './Transport.js';
|
|
13
|
+
/**
|
|
14
|
+
* Options specific to NativeTransport
|
|
15
|
+
*/
|
|
16
|
+
interface NativeTransportOptions extends TransportOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Directory where the ability code is located
|
|
19
|
+
*/
|
|
20
|
+
abilityDir: string;
|
|
21
|
+
/**
|
|
22
|
+
* Manifest containing ability metadata
|
|
23
|
+
*/
|
|
24
|
+
manifest?: {
|
|
25
|
+
interfaces?: {
|
|
26
|
+
native?: {
|
|
27
|
+
entry?: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* NativeTransport - Loads and executes abilities in the same process
|
|
34
|
+
*
|
|
35
|
+
* This transport provides the fastest execution since there's no
|
|
36
|
+
* serialization or IPC overhead. The ability code runs directly
|
|
37
|
+
* in the Node.js process.
|
|
38
|
+
*/
|
|
39
|
+
export declare class NativeTransport extends EventEmitter implements Transport {
|
|
40
|
+
private options;
|
|
41
|
+
private logger;
|
|
42
|
+
private ability;
|
|
43
|
+
private methodHandlers;
|
|
44
|
+
private connected;
|
|
45
|
+
constructor(options: NativeTransportOptions);
|
|
46
|
+
/**
|
|
47
|
+
* Connect by loading the ability module into memory
|
|
48
|
+
*
|
|
49
|
+
* This method dynamically imports the ability's JavaScript/TypeScript
|
|
50
|
+
* module and extracts all available methods.
|
|
51
|
+
*/
|
|
52
|
+
connect(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Extract methods from the loaded module
|
|
55
|
+
*
|
|
56
|
+
* Handles different export formats:
|
|
57
|
+
* - KadiClient/KadiAbility instances
|
|
58
|
+
* - Plain objects with function properties
|
|
59
|
+
* - Class constructors
|
|
60
|
+
*/
|
|
61
|
+
private extractMethods;
|
|
62
|
+
/**
|
|
63
|
+
* Invoke a method on the loaded ability
|
|
64
|
+
*
|
|
65
|
+
* Since this is native, we just call the function directly
|
|
66
|
+
* with no serialization overhead.
|
|
67
|
+
*/
|
|
68
|
+
invoke(method: string, params: unknown): Promise<unknown>;
|
|
69
|
+
/**
|
|
70
|
+
* Get list of available methods
|
|
71
|
+
*/
|
|
72
|
+
getMethods(): string[];
|
|
73
|
+
/**
|
|
74
|
+
* Get schema for a specific method (if available)
|
|
75
|
+
*/
|
|
76
|
+
getMethodSchema(method: string): {
|
|
77
|
+
inputSchema?: unknown;
|
|
78
|
+
outputSchema?: unknown;
|
|
79
|
+
} | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Disconnect and cleanup
|
|
82
|
+
*
|
|
83
|
+
* Releases references to the loaded module to allow garbage collection
|
|
84
|
+
*/
|
|
85
|
+
disconnect(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Check if transport is connected
|
|
88
|
+
*/
|
|
89
|
+
isConnected(): boolean;
|
|
90
|
+
}
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=NativeTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/NativeTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAI7D;;GAEG;AACH,UAAU,sBAAuB,SAAQ,gBAAgB;IACvD;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE;gBACP,KAAK,CAAC,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAOD;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,YAAa,YAAW,SAAS;IAMxD,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,SAAS,CAAS;gBAEN,OAAO,EAAE,sBAAsB;IAUnD;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D9B;;;;;;;OAOG;YACW,cAAc;IAoG5B;;;;;OAKG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB/D;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,GACb;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS;IAQhE;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB"}
|