@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 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
@@ -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
+ }