@agent-relay/fleet 8.7.2
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 +76 -0
- package/dist/index.d.ts +187 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +263 -0
- package/dist/index.js.map +1 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# @agent-relay/fleet
|
|
2
|
+
|
|
3
|
+
Fleet node SDK for Agent Relay. Define a **node** — a named host that advertises typed
|
|
4
|
+
**capabilities** (actions and spawners) and reacts to channel messages via **triggers** — then
|
|
5
|
+
serve it with the `agent-relay fleet` CLI.
|
|
6
|
+
|
|
7
|
+
Use `@agent-relay/fleet` when you want to expose local capabilities (run a command, spawn a
|
|
8
|
+
harness, answer a request) to a relay workspace as a long-lived node. Use `@agent-relay/sdk`
|
|
9
|
+
for plain agent messaging and `@agent-relay/harness-driver` to start and supervise local
|
|
10
|
+
harness processes directly.
|
|
11
|
+
|
|
12
|
+
Full docs: [agentrelay.com/docs](https://agentrelay.com/docs).
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @agent-relay/fleet zod
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick start
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import { defineNode, action, spawn, onMessage } from '@agent-relay/fleet';
|
|
24
|
+
import { z } from 'zod';
|
|
25
|
+
|
|
26
|
+
export default defineNode({
|
|
27
|
+
name: 'builder',
|
|
28
|
+
capabilities: {
|
|
29
|
+
'run:test': action({ input: z.object({ suite: z.string() }) }, async ({ input }) => {
|
|
30
|
+
// ...run the suite...
|
|
31
|
+
return { ok: true, suite: input.suite };
|
|
32
|
+
}),
|
|
33
|
+
'spawn:claude': spawn({ harness: 'claude' }),
|
|
34
|
+
},
|
|
35
|
+
triggers: [
|
|
36
|
+
// When a message matching the pattern lands in #deploys, invoke run:test.
|
|
37
|
+
onMessage({ channel: '#deploys', match: /[Ss]hip/ }, 'run:test'),
|
|
38
|
+
],
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Serve it:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
agent-relay fleet serve ./builder.node.ts
|
|
46
|
+
agent-relay fleet nodes # list registered nodes
|
|
47
|
+
agent-relay fleet status # show node + capability health
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Concepts
|
|
51
|
+
|
|
52
|
+
- **Node** — a named host registered with the workspace. `defineNode` validates the manifest
|
|
53
|
+
up front and returns a `FleetNodeDefinition`.
|
|
54
|
+
- **Capability** — a typed operation keyed by name. Build one with `action(...)` (a handler
|
|
55
|
+
with an optional Zod input schema) or `spawn(...)` (a capability that launches a harness).
|
|
56
|
+
- **Trigger** — a rule that invokes a capability in response to a channel message. Create one
|
|
57
|
+
with `onMessage({ channel?, match?, mention? }, actionName)`.
|
|
58
|
+
|
|
59
|
+
## Triggers and `match`
|
|
60
|
+
|
|
61
|
+
`match` accepts a string (substring/exact match) or a `RegExp`. The pattern is serialized to
|
|
62
|
+
the relay and matched broker-side.
|
|
63
|
+
|
|
64
|
+
> **Regex flags are not supported yet.** `defineNode` **rejects** a trigger whose `match` is a
|
|
65
|
+
> flagged `RegExp` (e.g. `/ship/i`, `/ship/m`) rather than silently dropping the flag — a
|
|
66
|
+
> silently stripped flag would change matching semantics without warning. Until flag support
|
|
67
|
+
> lands, encode case-insensitivity with character classes:
|
|
68
|
+
>
|
|
69
|
+
> ```ts
|
|
70
|
+
> onMessage({ match: /[Ss]hip/ }, 'run:test'); // ✅ case-insensitive via character class
|
|
71
|
+
> onMessage({ match: /ship/i }, 'run:test'); // ❌ throws at defineNode validation
|
|
72
|
+
> ```
|
|
73
|
+
|
|
74
|
+
## License
|
|
75
|
+
|
|
76
|
+
Apache-2.0
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { PtyHarness } from '@agent-relay/harnesses';
|
|
3
|
+
import { type StaticPtyHarnessDefinition } from '@agent-relay/harness-driver';
|
|
4
|
+
import type { AgentSpec, MessageInjectionMode, NodeManifest, RestartPolicy, JsonValue } from '@agent-relay/harness-driver/protocol';
|
|
5
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
6
|
+
export interface FleetNodeInfo {
|
|
7
|
+
name: string;
|
|
8
|
+
maxAgents?: number;
|
|
9
|
+
capabilities: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface FleetRelaySendMessageInput {
|
|
12
|
+
to: string;
|
|
13
|
+
text: string;
|
|
14
|
+
from?: string;
|
|
15
|
+
threadId?: string;
|
|
16
|
+
workspaceId?: string;
|
|
17
|
+
workspaceAlias?: string;
|
|
18
|
+
mode?: MessageInjectionMode;
|
|
19
|
+
data?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export interface FleetScopedRelayClient {
|
|
22
|
+
sendMessage(input: FleetRelaySendMessageInput): Promise<unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface FleetSpawnAgentInput {
|
|
25
|
+
agent: AgentSpec;
|
|
26
|
+
initialTask?: string;
|
|
27
|
+
skipRelayPrompt?: boolean;
|
|
28
|
+
invocationId?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface FleetActionContext {
|
|
31
|
+
node: FleetNodeInfo;
|
|
32
|
+
relay: FleetScopedRelayClient;
|
|
33
|
+
invocationId?: string;
|
|
34
|
+
spawnAgent(input: FleetSpawnAgentInput): Promise<unknown>;
|
|
35
|
+
}
|
|
36
|
+
export type FleetActionHandler<TInput = unknown, TOutput = unknown> = (input: TInput, ctx: FleetActionContext) => MaybePromise<TOutput>;
|
|
37
|
+
export interface FleetActionDefinition<TInput = unknown, TOutput = unknown> {
|
|
38
|
+
readonly kind: 'action';
|
|
39
|
+
readonly input?: ZodLikeSchema<TInput>;
|
|
40
|
+
readonly handler: FleetActionHandler<TInput, TOutput>;
|
|
41
|
+
readonly metadata?: Record<string, JsonValue>;
|
|
42
|
+
}
|
|
43
|
+
export interface FleetSpawnDefinition<TInput = SpawnInput, TOutput = unknown> extends FleetActionDefinition<TInput, TOutput> {
|
|
44
|
+
readonly kind: 'action';
|
|
45
|
+
readonly fleetKind: 'spawn';
|
|
46
|
+
readonly harness: StaticPtyHarnessDefinition;
|
|
47
|
+
}
|
|
48
|
+
export type FleetCapabilityValue = FleetActionDefinition | FleetSpawnDefinition | FleetActionHandler;
|
|
49
|
+
export interface FleetNodeDefinitionInput {
|
|
50
|
+
name: string;
|
|
51
|
+
maxAgents?: number;
|
|
52
|
+
capabilities: Record<string, FleetCapabilityValue>;
|
|
53
|
+
triggers?: FleetTriggerDescriptor[];
|
|
54
|
+
tags?: string[];
|
|
55
|
+
version?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface FleetNodeDefinition {
|
|
58
|
+
readonly __agentRelayFleetNode: true;
|
|
59
|
+
readonly name: string;
|
|
60
|
+
readonly maxAgents?: number;
|
|
61
|
+
readonly capabilities: Record<string, FleetCapability>;
|
|
62
|
+
readonly triggers: FleetTriggerDescriptor[];
|
|
63
|
+
readonly tags?: string[];
|
|
64
|
+
readonly version?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface FleetCapability<TInput = unknown, TOutput = unknown> {
|
|
67
|
+
name: string;
|
|
68
|
+
kind: 'action' | 'spawn';
|
|
69
|
+
input?: ZodLikeSchema<TInput>;
|
|
70
|
+
handler: FleetActionHandler<TInput, TOutput>;
|
|
71
|
+
metadata?: Record<string, JsonValue>;
|
|
72
|
+
}
|
|
73
|
+
export interface OnMessageTriggerInput {
|
|
74
|
+
channel?: string;
|
|
75
|
+
match?: RegExp | string;
|
|
76
|
+
mention?: boolean | string;
|
|
77
|
+
}
|
|
78
|
+
export interface FleetTriggerDescriptor {
|
|
79
|
+
type: 'message';
|
|
80
|
+
channel?: string;
|
|
81
|
+
match?: RegExp | string;
|
|
82
|
+
mention?: boolean | string;
|
|
83
|
+
actionName: string;
|
|
84
|
+
}
|
|
85
|
+
export interface RelayTriggerSyncInput {
|
|
86
|
+
channel?: string;
|
|
87
|
+
pattern?: string;
|
|
88
|
+
mention?: boolean | string;
|
|
89
|
+
actionName: string;
|
|
90
|
+
enabled: boolean;
|
|
91
|
+
}
|
|
92
|
+
export type ZodLikeSchema<T = unknown> = Pick<z.ZodType<T>, 'safeParse'> & {
|
|
93
|
+
description?: string;
|
|
94
|
+
};
|
|
95
|
+
declare const spawnInputSchema: z.ZodEffects<z.ZodObject<{
|
|
96
|
+
name: z.ZodOptional<z.ZodString>;
|
|
97
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
98
|
+
model: z.ZodOptional<z.ZodString>;
|
|
99
|
+
session_ref: z.ZodOptional<z.ZodString>;
|
|
100
|
+
task: z.ZodOptional<z.ZodString>;
|
|
101
|
+
channels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
102
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
103
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
104
|
+
team: z.ZodOptional<z.ZodString>;
|
|
105
|
+
skip_relay_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
107
|
+
name: z.ZodOptional<z.ZodString>;
|
|
108
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
109
|
+
model: z.ZodOptional<z.ZodString>;
|
|
110
|
+
session_ref: z.ZodOptional<z.ZodString>;
|
|
111
|
+
task: z.ZodOptional<z.ZodString>;
|
|
112
|
+
channels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
113
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
114
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
115
|
+
team: z.ZodOptional<z.ZodString>;
|
|
116
|
+
skip_relay_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
117
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
118
|
+
name: z.ZodOptional<z.ZodString>;
|
|
119
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
120
|
+
model: z.ZodOptional<z.ZodString>;
|
|
121
|
+
session_ref: z.ZodOptional<z.ZodString>;
|
|
122
|
+
task: z.ZodOptional<z.ZodString>;
|
|
123
|
+
channels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
124
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
125
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
126
|
+
team: z.ZodOptional<z.ZodString>;
|
|
127
|
+
skip_relay_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
128
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
129
|
+
name: z.ZodOptional<z.ZodString>;
|
|
130
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
131
|
+
model: z.ZodOptional<z.ZodString>;
|
|
132
|
+
session_ref: z.ZodOptional<z.ZodString>;
|
|
133
|
+
task: z.ZodOptional<z.ZodString>;
|
|
134
|
+
channels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
135
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
136
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
137
|
+
team: z.ZodOptional<z.ZodString>;
|
|
138
|
+
skip_relay_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
139
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
140
|
+
name: z.ZodOptional<z.ZodString>;
|
|
141
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
142
|
+
model: z.ZodOptional<z.ZodString>;
|
|
143
|
+
session_ref: z.ZodOptional<z.ZodString>;
|
|
144
|
+
task: z.ZodOptional<z.ZodString>;
|
|
145
|
+
channels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
146
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
147
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
148
|
+
team: z.ZodOptional<z.ZodString>;
|
|
149
|
+
skip_relay_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
150
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
151
|
+
export type SpawnInput = z.infer<typeof spawnInputSchema>;
|
|
152
|
+
export interface SpawnHandlerOptions {
|
|
153
|
+
model?: string;
|
|
154
|
+
args?: string[];
|
|
155
|
+
channels?: string[];
|
|
156
|
+
cwd?: string;
|
|
157
|
+
team?: string;
|
|
158
|
+
skipRelayPrompt?: boolean;
|
|
159
|
+
restartPolicy?: RestartPolicy;
|
|
160
|
+
metadata?: Record<string, JsonValue>;
|
|
161
|
+
}
|
|
162
|
+
export declare function defineNode(input: FleetNodeDefinitionInput): FleetNodeDefinition;
|
|
163
|
+
export declare function isFleetNodeDefinition(value: unknown): value is FleetNodeDefinition;
|
|
164
|
+
export declare function action<TInput = unknown, TOutput = unknown>(options: {
|
|
165
|
+
input?: ZodLikeSchema<TInput>;
|
|
166
|
+
metadata?: Record<string, JsonValue>;
|
|
167
|
+
}, handler: FleetActionHandler<TInput, TOutput>): FleetActionDefinition<TInput, TOutput>;
|
|
168
|
+
export declare function spawn(harness: StaticPtyHarnessDefinition | PtyHarness, options?: SpawnHandlerOptions): FleetSpawnDefinition<SpawnInput, unknown>;
|
|
169
|
+
export declare function onMessage(input: OnMessageTriggerInput, actionName: string): FleetTriggerDescriptor;
|
|
170
|
+
export declare function nodeInfo(definition: FleetNodeDefinition): FleetNodeInfo;
|
|
171
|
+
export declare function nodeManifest(definition: FleetNodeDefinition, overrides?: {
|
|
172
|
+
name?: string;
|
|
173
|
+
maxAgents?: number;
|
|
174
|
+
}): NodeManifest;
|
|
175
|
+
export declare function invokeNodeHandler(definition: FleetNodeDefinition, name: string, input: unknown, ctx: FleetActionContext): Promise<unknown>;
|
|
176
|
+
export declare function triggerSyncInputs(definition: FleetNodeDefinition): RelayTriggerSyncInput[];
|
|
177
|
+
export declare function defineDefaultLocalNode(input: {
|
|
178
|
+
name: string;
|
|
179
|
+
maxAgents?: number;
|
|
180
|
+
teams?: {
|
|
181
|
+
agents?: Array<{
|
|
182
|
+
cli?: string;
|
|
183
|
+
}>;
|
|
184
|
+
} | null;
|
|
185
|
+
}): FleetNodeDefinition;
|
|
186
|
+
export {};
|
|
187
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// Namespace import sidesteps bun --compile's named-import validation against the
|
|
3
|
+
// package .d.ts (see packages/cli .../fleet-sidecar.ts).
|
|
4
|
+
import * as harnessDefs from '@agent-relay/harnesses';
|
|
5
|
+
const { claude, codex, definePtyHarness, gemini } = harnessDefs;
|
|
6
|
+
import { resolveStaticHarnessConfig } from '@agent-relay/harness-driver';
|
|
7
|
+
const spawnInputSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
name: z.string().min(1).optional(),
|
|
10
|
+
agent: z.string().min(1).optional(),
|
|
11
|
+
model: z.string().min(1).optional(),
|
|
12
|
+
session_ref: z.string().min(1).optional(),
|
|
13
|
+
task: z.string().optional(),
|
|
14
|
+
channels: z.array(z.string().min(1)).optional(),
|
|
15
|
+
cwd: z.string().min(1).optional(),
|
|
16
|
+
args: z.array(z.string()).optional(),
|
|
17
|
+
team: z.string().min(1).optional(),
|
|
18
|
+
skip_relay_prompt: z.boolean().optional(),
|
|
19
|
+
})
|
|
20
|
+
.passthrough()
|
|
21
|
+
.refine((input) => Boolean(input.name ?? input.agent), {
|
|
22
|
+
message: 'spawn input requires name or agent',
|
|
23
|
+
path: ['name'],
|
|
24
|
+
});
|
|
25
|
+
export function defineNode(input) {
|
|
26
|
+
const name = nonEmpty(input.name, 'node name');
|
|
27
|
+
const capabilityEntries = Object.entries(input.capabilities ?? {});
|
|
28
|
+
if (capabilityEntries.length === 0) {
|
|
29
|
+
throw new Error('defineNode requires at least one capability');
|
|
30
|
+
}
|
|
31
|
+
if (input.maxAgents !== undefined && (!Number.isInteger(input.maxAgents) || input.maxAgents <= 0)) {
|
|
32
|
+
throw new Error('maxAgents must be a positive integer');
|
|
33
|
+
}
|
|
34
|
+
const capabilities = {};
|
|
35
|
+
const seenCapabilityNames = new Set();
|
|
36
|
+
for (const [rawName, value] of capabilityEntries) {
|
|
37
|
+
const capabilityName = nonEmpty(rawName, 'capability name');
|
|
38
|
+
if (seenCapabilityNames.has(capabilityName)) {
|
|
39
|
+
throw new Error(`defineNode requires unique capability names; duplicate "${capabilityName}" after trimming`);
|
|
40
|
+
}
|
|
41
|
+
seenCapabilityNames.add(capabilityName);
|
|
42
|
+
capabilities[capabilityName] = normalizeCapability(capabilityName, value);
|
|
43
|
+
}
|
|
44
|
+
const triggers = input.triggers ?? [];
|
|
45
|
+
for (const trigger of triggers) {
|
|
46
|
+
if (!capabilities[trigger.actionName]) {
|
|
47
|
+
throw new Error(`Trigger references unknown action "${trigger.actionName}"`);
|
|
48
|
+
}
|
|
49
|
+
if (trigger.match instanceof RegExp && trigger.match.flags) {
|
|
50
|
+
throw new Error(`trigger regex flags are not supported yet; match is case-sensitive — use character classes like [Ss]hip (got /${trigger.match.source}/${trigger.match.flags} for action "${trigger.actionName}")`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
__agentRelayFleetNode: true,
|
|
55
|
+
name,
|
|
56
|
+
...(input.maxAgents !== undefined ? { maxAgents: input.maxAgents } : {}),
|
|
57
|
+
capabilities,
|
|
58
|
+
triggers: [...triggers],
|
|
59
|
+
...(input.tags ? { tags: [...input.tags] } : {}),
|
|
60
|
+
...(input.version ? { version: input.version } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function isFleetNodeDefinition(value) {
|
|
64
|
+
return Boolean(value &&
|
|
65
|
+
typeof value === 'object' &&
|
|
66
|
+
value.__agentRelayFleetNode === true);
|
|
67
|
+
}
|
|
68
|
+
export function action(options, handler) {
|
|
69
|
+
if (typeof handler !== 'function') {
|
|
70
|
+
throw new Error('action handler must be a function');
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
kind: 'action',
|
|
74
|
+
...(options.input ? { input: options.input } : {}),
|
|
75
|
+
handler,
|
|
76
|
+
...(options.metadata ? { metadata: { ...options.metadata } } : {}),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function spawn(harness, options = {}) {
|
|
80
|
+
const definition = normalizePtyHarness(harness);
|
|
81
|
+
const handler = async (rawInput, ctx) => {
|
|
82
|
+
const input = parseWithSchema(spawnInputSchema, rawInput);
|
|
83
|
+
const name = input.name ?? input.agent;
|
|
84
|
+
if (!name) {
|
|
85
|
+
throw new Error('spawn input requires name or agent');
|
|
86
|
+
}
|
|
87
|
+
const model = input.model ?? options.model;
|
|
88
|
+
const rawArgs = [...(options.args ?? []), ...(input.args ?? [])];
|
|
89
|
+
const cwd = input.cwd ?? options.cwd ?? definition.cwd;
|
|
90
|
+
const channels = input.channels ?? options.channels;
|
|
91
|
+
const task = input.task;
|
|
92
|
+
const harnessConfig = resolveStaticHarnessConfig({
|
|
93
|
+
name,
|
|
94
|
+
cli: definition.command,
|
|
95
|
+
definition,
|
|
96
|
+
args: rawArgs,
|
|
97
|
+
task,
|
|
98
|
+
model,
|
|
99
|
+
cwd,
|
|
100
|
+
});
|
|
101
|
+
if (input.session_ref && harnessConfig.runtime === 'pty') {
|
|
102
|
+
harnessConfig.sessionId = input.session_ref;
|
|
103
|
+
}
|
|
104
|
+
const agent = {
|
|
105
|
+
name,
|
|
106
|
+
runtime: 'pty',
|
|
107
|
+
cli: definition.command,
|
|
108
|
+
...(model ? { model } : {}),
|
|
109
|
+
...(rawArgs.length > 0 ? { args: rawArgs } : {}),
|
|
110
|
+
...(channels ? { channels } : {}),
|
|
111
|
+
...(cwd ? { cwd } : {}),
|
|
112
|
+
...((input.team ?? options.team) ? { team: input.team ?? options.team } : {}),
|
|
113
|
+
...(input.session_ref ? { session_id: input.session_ref } : {}),
|
|
114
|
+
...(options.restartPolicy ? { restart_policy: options.restartPolicy } : {}),
|
|
115
|
+
harness_config: harnessConfig,
|
|
116
|
+
};
|
|
117
|
+
return ctx.spawnAgent({
|
|
118
|
+
agent,
|
|
119
|
+
...(task !== undefined ? { initialTask: task } : {}),
|
|
120
|
+
skipRelayPrompt: input.skip_relay_prompt ?? options.skipRelayPrompt ?? false,
|
|
121
|
+
invocationId: ctx.invocationId,
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
kind: 'action',
|
|
126
|
+
fleetKind: 'spawn',
|
|
127
|
+
input: spawnInputSchema,
|
|
128
|
+
handler,
|
|
129
|
+
harness: definition,
|
|
130
|
+
metadata: {
|
|
131
|
+
cli: definition.command,
|
|
132
|
+
runtime: definition.runtime,
|
|
133
|
+
...(definition.metadata ?? {}),
|
|
134
|
+
...(options.metadata ?? {}),
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function onMessage(input, actionName) {
|
|
139
|
+
return {
|
|
140
|
+
type: 'message',
|
|
141
|
+
...(input.channel ? { channel: input.channel } : {}),
|
|
142
|
+
...(input.match ? { match: input.match } : {}),
|
|
143
|
+
...(input.mention !== undefined ? { mention: input.mention } : {}),
|
|
144
|
+
actionName: nonEmpty(actionName, 'action name'),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export function nodeInfo(definition) {
|
|
148
|
+
return {
|
|
149
|
+
name: definition.name,
|
|
150
|
+
...(definition.maxAgents !== undefined ? { maxAgents: definition.maxAgents } : {}),
|
|
151
|
+
capabilities: Object.keys(definition.capabilities),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
export function nodeManifest(definition, overrides = {}) {
|
|
155
|
+
const name = overrides.name ? nonEmpty(overrides.name, 'node name') : definition.name;
|
|
156
|
+
const maxAgents = overrides.maxAgents ?? definition.maxAgents;
|
|
157
|
+
const capabilities = Object.values(definition.capabilities).map((capability) => ({
|
|
158
|
+
name: capability.name,
|
|
159
|
+
kind: capability.kind,
|
|
160
|
+
...(capability.metadata ? { metadata: capability.metadata } : {}),
|
|
161
|
+
}));
|
|
162
|
+
return {
|
|
163
|
+
name,
|
|
164
|
+
capabilities,
|
|
165
|
+
...(maxAgents !== undefined ? { max_agents: maxAgents } : {}),
|
|
166
|
+
...(definition.tags ? { tags: [...definition.tags] } : {}),
|
|
167
|
+
...(definition.version ? { version: definition.version } : {}),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
export async function invokeNodeHandler(definition, name, input, ctx) {
|
|
171
|
+
const capability = definition.capabilities[name];
|
|
172
|
+
if (!capability) {
|
|
173
|
+
throw new Error(`Unknown fleet handler "${name}"`);
|
|
174
|
+
}
|
|
175
|
+
const parsedInput = capability.input ? parseWithSchema(capability.input, input) : input;
|
|
176
|
+
return capability.handler(parsedInput, ctx);
|
|
177
|
+
}
|
|
178
|
+
export function triggerSyncInputs(definition) {
|
|
179
|
+
return definition.triggers.map((trigger) => ({
|
|
180
|
+
...(trigger.channel ? { channel: trigger.channel } : {}),
|
|
181
|
+
...(trigger.match
|
|
182
|
+
? { pattern: trigger.match instanceof RegExp ? trigger.match.source : trigger.match }
|
|
183
|
+
: {}),
|
|
184
|
+
...(trigger.mention !== undefined ? { mention: trigger.mention } : {}),
|
|
185
|
+
actionName: trigger.actionName,
|
|
186
|
+
enabled: true,
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
export function defineDefaultLocalNode(input) {
|
|
190
|
+
const harnesses = new Map([
|
|
191
|
+
['claude', claude],
|
|
192
|
+
['codex', codex],
|
|
193
|
+
['gemini', gemini],
|
|
194
|
+
]);
|
|
195
|
+
for (const agent of input.teams?.agents ?? []) {
|
|
196
|
+
const cli = agent.cli?.trim();
|
|
197
|
+
if (cli && !harnesses.has(cli)) {
|
|
198
|
+
harnesses.set(cli, definePtyHarness({ runtime: 'pty', command: cli }));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const capabilities = {};
|
|
202
|
+
for (const [cli, harness] of harnesses) {
|
|
203
|
+
capabilities[`spawn:${cli}`] = spawn(harness);
|
|
204
|
+
}
|
|
205
|
+
return defineNode({
|
|
206
|
+
name: input.name,
|
|
207
|
+
...(input.maxAgents !== undefined ? { maxAgents: input.maxAgents } : {}),
|
|
208
|
+
capabilities,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
function normalizeCapability(name, value) {
|
|
212
|
+
if (isFleetActionDefinition(value)) {
|
|
213
|
+
return {
|
|
214
|
+
name,
|
|
215
|
+
kind: isFleetSpawnDefinition(value) ? 'spawn' : 'action',
|
|
216
|
+
...(value.input ? { input: value.input } : {}),
|
|
217
|
+
handler: value.handler,
|
|
218
|
+
...(value.metadata ? { metadata: { ...value.metadata } } : {}),
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
if (typeof value === 'function') {
|
|
222
|
+
return {
|
|
223
|
+
name,
|
|
224
|
+
kind: 'action',
|
|
225
|
+
handler: value,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
throw new Error(`Capability "${name}" must be an action, spawn handler, or async function`);
|
|
229
|
+
}
|
|
230
|
+
function isFleetActionDefinition(value) {
|
|
231
|
+
return Boolean(value && typeof value === 'object' && value.kind === 'action');
|
|
232
|
+
}
|
|
233
|
+
function isFleetSpawnDefinition(value) {
|
|
234
|
+
return value.fleetKind === 'spawn';
|
|
235
|
+
}
|
|
236
|
+
function normalizePtyHarness(harness) {
|
|
237
|
+
if (!harness || typeof harness !== 'object') {
|
|
238
|
+
throw new Error('spawn requires a PTY harness definition');
|
|
239
|
+
}
|
|
240
|
+
if (harness.runtime !== 'pty' || typeof harness.command !== 'string' || harness.command.trim() === '') {
|
|
241
|
+
throw new Error('spawn requires a PTY harness with a command');
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
...harness,
|
|
245
|
+
command: harness.command.trim(),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function nonEmpty(value, label) {
|
|
249
|
+
const trimmed = value?.trim();
|
|
250
|
+
if (!trimmed) {
|
|
251
|
+
throw new Error(`${label} is required`);
|
|
252
|
+
}
|
|
253
|
+
return trimmed;
|
|
254
|
+
}
|
|
255
|
+
function parseWithSchema(schema, input) {
|
|
256
|
+
const parsed = schema.safeParse(input);
|
|
257
|
+
if (parsed.success) {
|
|
258
|
+
return parsed.data;
|
|
259
|
+
}
|
|
260
|
+
const message = 'error' in parsed ? parsed.error.message : 'input validation failed';
|
|
261
|
+
throw new Error(message);
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agent-relay/fleet",
|
|
3
|
+
"version": "8.7.2",
|
|
4
|
+
"description": "Fleet node SDK for Agent Relay.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"package.json"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.json",
|
|
22
|
+
"check": "tsc -p tsconfig.json --noEmit",
|
|
23
|
+
"test": "vitest run"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@agent-relay/harness-driver": "8.7.2",
|
|
27
|
+
"@agent-relay/harnesses": "8.7.2",
|
|
28
|
+
"@agent-relay/sdk": "8.7.2",
|
|
29
|
+
"zod": "^3.23.8"
|
|
30
|
+
},
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/AgentWorkforce/relay.git",
|
|
37
|
+
"directory": "packages/fleet"
|
|
38
|
+
},
|
|
39
|
+
"license": "Apache-2.0"
|
|
40
|
+
}
|