agent-relay-server 0.5.0 → 0.6.1

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/src/types.ts CHANGED
@@ -1,6 +1,9 @@
1
+ export type AgentKind = "provider" | "channel" | "orchestrator" | "system" | "user";
2
+
1
3
  export interface AgentCard {
2
4
  id: string;
3
5
  name: string;
6
+ kind: AgentKind;
4
7
  label?: string; // human-friendly alias; acts as a fan-out target ("label:foo")
5
8
  tags: string[];
6
9
  machine?: string;
@@ -15,13 +18,19 @@ export interface AgentCard {
15
18
  createdAt: number;
16
19
  }
17
20
 
18
- export type MessageType = "message" | "system";
21
+ export type MessageKind =
22
+ | "chat"
23
+ | "channel.event"
24
+ | "task"
25
+ | "pair"
26
+ | "control"
27
+ | "system";
19
28
 
20
29
  export interface Message {
21
30
  id: number;
22
31
  from: string;
23
32
  to: string; // agent-id | "tag:<name>" | "broadcast" | "cap:<name>"
24
- type: MessageType;
33
+ kind: MessageKind;
25
34
  channel?: string;
26
35
  subject?: string;
27
36
  body: string;
@@ -32,6 +41,7 @@ export interface Message {
32
41
  claimedAt?: number;
33
42
  claimExpiresAt?: number;
34
43
  idempotencyKey?: string;
44
+ payload: Record<string, unknown>;
35
45
  meta?: Record<string, unknown>;
36
46
  readBy: string[];
37
47
  createdAt: number;
@@ -40,16 +50,71 @@ export interface Message {
40
50
  export interface SendMessageInput {
41
51
  from: string;
42
52
  to: string;
43
- type?: MessageType;
53
+ kind?: MessageKind;
44
54
  channel?: string;
45
55
  subject?: string;
46
56
  body: string;
47
57
  replyTo?: number;
48
58
  claimable?: boolean;
49
59
  idempotencyKey?: string;
60
+ payload?: Record<string, unknown>;
50
61
  meta?: Record<string, unknown>;
51
62
  }
52
63
 
64
+ export type ConnectorKind = "channel" | "event" | "provider" | "orchestrator";
65
+ export type ConnectorAction = "install" | "uninstall" | "enable" | "disable" | "start" | "stop" | "restart" | "status" | "doctor";
66
+
67
+ export interface ConnectorManifest {
68
+ schema: "agent-relay.connector.v1";
69
+ id: string;
70
+ kind: ConnectorKind;
71
+ packageName?: string;
72
+ binary: string;
73
+ displayName: string;
74
+ description?: string;
75
+ version: string;
76
+ capabilities: string[];
77
+ commands: Partial<Record<ConnectorAction, string[]>>;
78
+ configSchema?: Record<string, unknown>;
79
+ }
80
+
81
+ interface ConnectorRuntime {
82
+ installed: boolean;
83
+ enabled?: boolean;
84
+ running?: boolean;
85
+ status?: "ok" | "warn" | "error" | "unknown";
86
+ detail?: string;
87
+ updatedAt?: string;
88
+ raw?: unknown;
89
+ }
90
+
91
+ export interface ConnectorSummary {
92
+ id: string;
93
+ kind: ConnectorKind;
94
+ displayName: string;
95
+ description?: string;
96
+ version: string;
97
+ packageName?: string;
98
+ binary: string;
99
+ capabilities: string[];
100
+ registryPath: string;
101
+ manifest: ConnectorManifest;
102
+ config?: Record<string, unknown>;
103
+ state?: Record<string, unknown>;
104
+ runtime: ConnectorRuntime;
105
+ }
106
+
107
+ export interface ConnectorActionResult {
108
+ connectorId: string;
109
+ action: ConnectorAction;
110
+ command?: string[];
111
+ ok: boolean;
112
+ exitCode?: number | null;
113
+ stdout?: string;
114
+ stderr?: string;
115
+ parsed?: unknown;
116
+ }
117
+
53
118
  export type PairStatus = "pending" | "active" | "ended" | "rejected" | "expired";
54
119
 
55
120
  export interface PairSession {
@@ -99,6 +164,7 @@ export interface PollQuery {
99
164
  export interface RegisterAgentInput {
100
165
  id: string;
101
166
  name: string;
167
+ kind?: AgentKind;
102
168
  label?: string | null;
103
169
  tags?: string[];
104
170
  machine?: string;
@@ -203,16 +269,56 @@ export interface IntegrationSummary {
203
269
 
204
270
  export type ChannelDirection = "inbound" | "outbound" | "bidirectional";
205
271
 
272
+ export type ChannelRouteTarget =
273
+ | { type: "agent"; id: string }
274
+ | { type: "label"; id: string }
275
+ | { type: "tag"; id: string }
276
+ | { type: "capability"; id: string }
277
+ | { type: "broadcast" }
278
+ | { type: "orchestrator"; id: string };
279
+
280
+ export type ChannelBindingMode = "exclusive" | "claimable" | "broadcast";
281
+
282
+ export interface ChannelBinding {
283
+ id: string;
284
+ channelId: string;
285
+ conversationId?: string;
286
+ target: ChannelRouteTarget;
287
+ mode: ChannelBindingMode;
288
+ priority: number;
289
+ createdAt: number;
290
+ updatedAt: number;
291
+ }
292
+
293
+ export interface ChannelTargetHealth {
294
+ status: "ok" | "warning" | "error";
295
+ detail: string;
296
+ target: ChannelRouteTarget;
297
+ matches: Array<{
298
+ id: string;
299
+ name: string;
300
+ status: AgentCard["status"];
301
+ ready: boolean;
302
+ lastSeen: number;
303
+ label?: string;
304
+ tags: string[];
305
+ capabilities: string[];
306
+ }>;
307
+ }
308
+
206
309
  export interface ChannelSummary {
207
310
  id: string;
208
311
  name: string;
209
312
  type: string;
210
313
  transport: string;
211
314
  agentId: string;
315
+ accountId: string;
212
316
  status: AgentCard["status"];
213
317
  ready: boolean;
214
318
  direction: ChannelDirection;
215
319
  target?: string;
320
+ binding?: ChannelBinding;
321
+ targetHealth?: ChannelTargetHealth;
216
322
  topicChannels: string[];
217
323
  capabilities: string[];
218
324
  tags: string[];