@agent-relay/factory 0.1.16 → 0.1.18
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 +36 -10
- package/dist/cli/fleet.d.ts +2 -0
- package/dist/cli/fleet.d.ts.map +1 -1
- package/dist/cli/fleet.js +1 -1
- package/dist/cli/fleet.js.map +1 -1
- package/dist/fleet/create-fleet.d.ts +2 -0
- package/dist/fleet/create-fleet.d.ts.map +1 -1
- package/dist/fleet/create-fleet.js +5 -1
- package/dist/fleet/create-fleet.js.map +1 -1
- package/dist/fleet/internal-fleet-client.d.ts +1 -0
- package/dist/fleet/internal-fleet-client.d.ts.map +1 -1
- package/dist/fleet/internal-fleet-client.js +41 -1
- package/dist/fleet/internal-fleet-client.js.map +1 -1
- package/dist/fleet/relay-fleet-client.d.ts +52 -63
- package/dist/fleet/relay-fleet-client.d.ts.map +1 -1
- package/dist/fleet/relay-fleet-client.js +316 -323
- package/dist/fleet/relay-fleet-client.js.map +1 -1
- package/dist/fleet/relay-workspace-key.d.ts +5 -0
- package/dist/fleet/relay-workspace-key.d.ts.map +1 -1
- package/dist/fleet/relay-workspace-key.js +7 -0
- package/dist/fleet/relay-workspace-key.js.map +1 -1
- package/dist/mount/relayfile-cloud-mount-client.js +3 -1
- package/dist/mount/relayfile-cloud-mount-client.js.map +1 -1
- package/dist/node/factory-node.d.ts.map +1 -1
- package/dist/node/factory-node.js +14 -0
- package/dist/node/factory-node.js.map +1 -1
- package/dist/orchestrator/factory.d.ts.map +1 -1
- package/dist/orchestrator/factory.js +203 -22
- package/dist/orchestrator/factory.js.map +1 -1
- package/dist/ports/fleet.d.ts +12 -0
- package/dist/ports/fleet.d.ts.map +1 -1
- package/dist/testing/fakes.d.ts +16 -0
- package/dist/testing/fakes.d.ts.map +1 -1
- package/dist/testing/fakes.js +22 -0
- package/dist/testing/fakes.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -7
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AgentMessage, Capability, FleetClient, RosterEntry, SendInput, SpawnInput, SpawnResult } from '../ports/index.js';
|
|
2
|
+
import type { RelayMessaging } from '@agent-relay/sdk';
|
|
2
3
|
type AgentExitListener = (name: string, reason?: string) => void;
|
|
3
4
|
type DeliveryFailedListener = (info: {
|
|
4
5
|
to: string;
|
|
@@ -6,80 +7,68 @@ type DeliveryFailedListener = (info: {
|
|
|
6
7
|
reason?: string;
|
|
7
8
|
}) => void;
|
|
8
9
|
type AgentMessageListener = (message: AgentMessage) => void;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
method?: string;
|
|
15
|
-
headers?: Record<string, string>;
|
|
16
|
-
body?: string;
|
|
17
|
-
}) => Promise<{
|
|
18
|
-
ok: boolean;
|
|
19
|
-
status: number;
|
|
20
|
-
statusText: string;
|
|
21
|
-
json(): Promise<unknown>;
|
|
22
|
-
text(): Promise<string>;
|
|
23
|
-
}>;
|
|
24
|
-
export type RelayInvocationStatus = 'pending' | 'dispatched' | 'invoked' | 'completed' | 'failed' | 'denied' | string;
|
|
25
|
-
export interface RelayActionAck {
|
|
26
|
-
invocationId: string;
|
|
27
|
-
actionName: string;
|
|
28
|
-
status?: RelayInvocationStatus;
|
|
29
|
-
dispatchedNodeId?: string | null;
|
|
30
|
-
input?: Record<string, unknown>;
|
|
10
|
+
export interface TrackedAgent {
|
|
11
|
+
invocationId?: string;
|
|
12
|
+
node?: string;
|
|
13
|
+
spawnedAtMs: number;
|
|
14
|
+
nodeOfflineSinceMs?: number;
|
|
31
15
|
}
|
|
32
|
-
export interface
|
|
33
|
-
|
|
34
|
-
error?: string | null;
|
|
35
|
-
completedAt?: string | null;
|
|
16
|
+
export interface RelayClientLike {
|
|
17
|
+
messaging: RelayMessaging;
|
|
36
18
|
}
|
|
37
|
-
export interface
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
capabilities?: Array<string | {
|
|
42
|
-
name?: string;
|
|
43
|
-
}>;
|
|
44
|
-
}
|
|
45
|
-
export interface RelayFleetAgent {
|
|
46
|
-
name: string;
|
|
47
|
-
}
|
|
48
|
-
export interface RelayFleetTransport {
|
|
49
|
-
invokeAction(actionName: string, input: Record<string, unknown>, opts: {
|
|
50
|
-
invocationId: string;
|
|
51
|
-
}): Promise<RelayActionAck>;
|
|
52
|
-
getInvocation(actionName: string, invocationId: string): Promise<RelayActionInvocation>;
|
|
53
|
-
listAgents(): Promise<RelayFleetAgent[]>;
|
|
54
|
-
listNodes(): Promise<RelayFleetNode[]>;
|
|
55
|
-
sendMessage(input: SendInput): Promise<{
|
|
56
|
-
eventId?: string;
|
|
57
|
-
targets?: string[];
|
|
58
|
-
}>;
|
|
59
|
-
waitForDelivery?(eventId: string, opts?: {
|
|
60
|
-
timeoutMs?: number;
|
|
61
|
-
}): Promise<{
|
|
62
|
-
eventId: string;
|
|
63
|
-
targets: string[];
|
|
64
|
-
}>;
|
|
65
|
-
onEvent?(listener: RelayFleetEventListener): () => void;
|
|
66
|
-
dispose?(): Promise<void> | void;
|
|
19
|
+
export interface RelayClientFactoryOptions {
|
|
20
|
+
workspaceKey?: string;
|
|
21
|
+
agentToken?: string;
|
|
22
|
+
baseUrl?: string;
|
|
67
23
|
}
|
|
68
24
|
export interface RelayFleetClientOptions {
|
|
69
|
-
|
|
70
|
-
|
|
25
|
+
/** Agent-scoped messaging surface. When provided, identity bootstrap is skipped. */
|
|
26
|
+
messaging?: RelayMessaging;
|
|
71
27
|
workspaceKey?: string;
|
|
72
28
|
agentToken?: string;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
29
|
+
/** Workspace agent identity the factory registers/rotates for itself. */
|
|
30
|
+
agentName?: string;
|
|
31
|
+
/** Engine base URL override. Absent means the SDK default (cast.agentrelay.com). */
|
|
32
|
+
baseUrl?: string;
|
|
33
|
+
/** Timeout for a spawn/release invocation to reach a terminal ack status. */
|
|
34
|
+
spawnAckTimeoutMs?: number;
|
|
76
35
|
pollIntervalMs?: number;
|
|
77
|
-
|
|
36
|
+
/** Queue TTL passed to placement when no eligible node is currently live. */
|
|
37
|
+
placementTtlMs?: number;
|
|
38
|
+
createRelay?: (options: RelayClientFactoryOptions) => RelayClientLike;
|
|
39
|
+
/**
|
|
40
|
+
* Credential environment. Providing one makes resolution hermetic: only the
|
|
41
|
+
* given env is consulted, never the on-disk cloud workspace store.
|
|
42
|
+
*/
|
|
43
|
+
env?: NodeJS.ProcessEnv;
|
|
44
|
+
/** Cadence of the roster-reconciliation exit watcher. */
|
|
45
|
+
exitWatchIntervalMs?: number;
|
|
46
|
+
/** How long a tracked agent's node must be dead before synthesizing an exit. */
|
|
47
|
+
nodeOfflineGraceMs?: number;
|
|
48
|
+
/** How long a freshly spawned agent may be absent from the roster before it counts as exited. */
|
|
49
|
+
registrationGraceMs?: number;
|
|
50
|
+
now?: () => number;
|
|
78
51
|
sleep?: (ms: number) => Promise<void>;
|
|
52
|
+
log?: (message: string) => void;
|
|
79
53
|
}
|
|
80
54
|
export declare class RelayFleetClient implements FleetClient {
|
|
81
55
|
#private;
|
|
82
56
|
constructor(options?: RelayFleetClientOptions);
|
|
57
|
+
/** Agents spawned through this client that have not exited or been released. */
|
|
58
|
+
trackedAgents(): ReadonlyMap<string, TrackedAgent>;
|
|
59
|
+
/** Re-adopt agents recorded in the in-flight registry after a restart. */
|
|
60
|
+
hydrateTracked(agents: Array<{
|
|
61
|
+
name: string;
|
|
62
|
+
invocationId?: string;
|
|
63
|
+
node?: string;
|
|
64
|
+
}>): void;
|
|
65
|
+
/**
|
|
66
|
+
* Reconcile tracked agents against the engine roster, synthesizing exits for
|
|
67
|
+
* agents that went offline (or whose node died) without a push signal. The
|
|
68
|
+
* exit watcher runs this on an interval; callers may invoke it directly for
|
|
69
|
+
* a deterministic sweep (startup recovery, tests).
|
|
70
|
+
*/
|
|
71
|
+
reconcileTrackedAgents(): Promise<void>;
|
|
83
72
|
spawn(input: SpawnInput): Promise<SpawnResult>;
|
|
84
73
|
resume(input: {
|
|
85
74
|
name?: string;
|
|
@@ -90,7 +79,7 @@ export declare class RelayFleetClient implements FleetClient {
|
|
|
90
79
|
release(name: string, reason?: string): Promise<void>;
|
|
91
80
|
roster(): Promise<RosterEntry>;
|
|
92
81
|
sendMessage(input: SendInput): Promise<void>;
|
|
93
|
-
waitForInjected(input: SendInput,
|
|
82
|
+
waitForInjected(input: SendInput, _opts?: {
|
|
94
83
|
timeoutMs?: number;
|
|
95
84
|
}): Promise<{
|
|
96
85
|
eventId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-fleet-client.d.ts","sourceRoot":"","sources":["../../src/fleet/relay-fleet-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relay-fleet-client.d.ts","sourceRoot":"","sources":["../../src/fleet/relay-fleet-client.ts"],"names":[],"mappings":"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"}
|