@elpapi42/pi-fleet-sdk 0.4.0 → 0.5.0
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 +5 -1
- package/dist/fleet/agent.d.ts +88 -0
- package/dist/fleet/agent.d.ts.map +1 -0
- package/dist/fleet/agent.js +44 -0
- package/dist/fleet/agent.js.map +1 -0
- package/dist/fleet/client.d.ts +19 -0
- package/dist/fleet/client.d.ts.map +1 -0
- package/dist/{client.js → fleet/client.js} +86 -51
- package/dist/fleet/client.js.map +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/{internal/pi-rpc.d.ts → pi/runtime.d.ts} +10 -3
- package/dist/pi/runtime.d.ts.map +1 -0
- package/dist/{internal/pi-rpc.js → pi/runtime.js} +19 -8
- package/dist/pi/runtime.js.map +1 -0
- package/dist/{internal/registry.d.ts → state/store.d.ts} +9 -10
- package/dist/state/store.d.ts.map +1 -0
- package/dist/{internal/registry.js → state/store.js} +25 -27
- package/dist/state/store.js.map +1 -0
- package/dist/worker/control.d.ts +20 -0
- package/dist/worker/control.d.ts.map +1 -0
- package/dist/worker/control.js +261 -0
- package/dist/worker/control.js.map +1 -0
- package/dist/worker/protocol.d.ts +86 -0
- package/dist/worker/protocol.d.ts.map +1 -0
- package/dist/worker/protocol.js.map +1 -0
- package/dist/worker/server.d.ts +2 -0
- package/dist/worker/server.d.ts.map +1 -0
- package/dist/worker/server.js +296 -0
- package/dist/worker/server.js.map +1 -0
- package/package.json +3 -3
- package/dist/agent.d.ts +0 -15
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -23
- package/dist/agent.js.map +0 -1
- package/dist/client.d.ts +0 -3
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/internal/paths.d.ts +0 -6
- package/dist/internal/paths.d.ts.map +0 -1
- package/dist/internal/paths.js +0 -25
- package/dist/internal/paths.js.map +0 -1
- package/dist/internal/pi-rpc.d.ts.map +0 -1
- package/dist/internal/pi-rpc.js.map +0 -1
- package/dist/internal/protocol.d.ts +0 -42
- package/dist/internal/protocol.d.ts.map +0 -1
- package/dist/internal/protocol.js.map +0 -1
- package/dist/internal/registry.d.ts.map +0 -1
- package/dist/internal/registry.js.map +0 -1
- package/dist/internal/worker-client.d.ts +0 -7
- package/dist/internal/worker-client.d.ts.map +0 -1
- package/dist/internal/worker-client.js +0 -94
- package/dist/internal/worker-client.js.map +0 -1
- package/dist/internal/worker-launcher.d.ts +0 -3
- package/dist/internal/worker-launcher.d.ts.map +0 -1
- package/dist/internal/worker-launcher.js +0 -13
- package/dist/internal/worker-launcher.js.map +0 -1
- package/dist/internal/worker.d.ts +0 -2
- package/dist/internal/worker.d.ts.map +0 -1
- package/dist/internal/worker.js +0 -200
- package/dist/internal/worker.js.map +0 -1
- package/dist/types.d.ts +0 -50
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -19
- package/dist/types.js.map +0 -1
- /package/dist/{internal → worker}/protocol.js +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { chmod, mkdir, realpath } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
1
3
|
import { open } from "lmdb";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const environments = new Map();
|
|
5
|
-
export class Registry {
|
|
4
|
+
const stores = new Map();
|
|
5
|
+
export class FleetStore {
|
|
6
6
|
#stateDir;
|
|
7
7
|
#shared;
|
|
8
8
|
#agents;
|
|
@@ -16,12 +16,10 @@ export class Registry {
|
|
|
16
16
|
}
|
|
17
17
|
async create(record) {
|
|
18
18
|
this.assertOpen();
|
|
19
|
-
|
|
19
|
+
return this.#names.ifNoExists(record.name, () => {
|
|
20
20
|
this.#agents.put(record.id, record, 1);
|
|
21
21
|
this.#names.put(record.name, record.id);
|
|
22
22
|
});
|
|
23
|
-
if (!created)
|
|
24
|
-
throw new AgentNameTakenError(record.name);
|
|
25
23
|
}
|
|
26
24
|
getById(id) {
|
|
27
25
|
this.assertOpen();
|
|
@@ -34,12 +32,7 @@ export class Registry {
|
|
|
34
32
|
}
|
|
35
33
|
list() {
|
|
36
34
|
this.assertOpen();
|
|
37
|
-
return [...this.#agents.getRange({})].map(({ value }) =>
|
|
38
|
-
id: value.id,
|
|
39
|
-
name: value.name,
|
|
40
|
-
cwd: value.cwd,
|
|
41
|
-
state: value.state,
|
|
42
|
-
}));
|
|
35
|
+
return [...this.#agents.getRange({})].map(({ value }) => value);
|
|
43
36
|
}
|
|
44
37
|
async markReady(id, runtimeGeneration, ready) {
|
|
45
38
|
this.assertOpen();
|
|
@@ -72,11 +65,7 @@ export class Registry {
|
|
|
72
65
|
if (entry.value.state === state)
|
|
73
66
|
return true;
|
|
74
67
|
const version = entry.version ?? 0;
|
|
75
|
-
const updated = {
|
|
76
|
-
...entry.value,
|
|
77
|
-
state,
|
|
78
|
-
updatedAt: Date.now(),
|
|
79
|
-
};
|
|
68
|
+
const updated = { ...entry.value, state, updatedAt: Date.now() };
|
|
80
69
|
if (await this.#agents.put(id, updated, version + 1, version))
|
|
81
70
|
return true;
|
|
82
71
|
}
|
|
@@ -104,8 +93,8 @@ export class Registry {
|
|
|
104
93
|
await closing;
|
|
105
94
|
}
|
|
106
95
|
finally {
|
|
107
|
-
if (
|
|
108
|
-
|
|
96
|
+
if (stores.get(this.#stateDir) === this.#shared)
|
|
97
|
+
stores.delete(this.#stateDir);
|
|
109
98
|
}
|
|
110
99
|
}
|
|
111
100
|
assertOpen() {
|
|
@@ -113,12 +102,12 @@ export class Registry {
|
|
|
113
102
|
throw new Error("The pi-fleet client is closed");
|
|
114
103
|
}
|
|
115
104
|
}
|
|
116
|
-
export async function
|
|
117
|
-
const canonicalStateDir = await
|
|
118
|
-
let shared =
|
|
105
|
+
export async function openStore(stateDir) {
|
|
106
|
+
const canonicalStateDir = await prepareStateDirectory(stateDir);
|
|
107
|
+
let shared = stores.get(canonicalStateDir);
|
|
119
108
|
if (shared?.closing) {
|
|
120
109
|
await shared.closing;
|
|
121
|
-
shared =
|
|
110
|
+
shared = stores.get(canonicalStateDir);
|
|
122
111
|
}
|
|
123
112
|
if (!shared) {
|
|
124
113
|
const root = open({ path: canonicalStateDir, maxDbs: 3 });
|
|
@@ -128,9 +117,18 @@ export async function openRegistry(stateDir) {
|
|
|
128
117
|
names: root.openDB("names", { encoding: "string" }),
|
|
129
118
|
references: 0,
|
|
130
119
|
};
|
|
131
|
-
|
|
120
|
+
stores.set(canonicalStateDir, shared);
|
|
132
121
|
}
|
|
133
122
|
shared.references += 1;
|
|
134
|
-
return new
|
|
123
|
+
return new FleetStore(canonicalStateDir, shared);
|
|
135
124
|
}
|
|
136
|
-
|
|
125
|
+
async function prepareStateDirectory(stateDir) {
|
|
126
|
+
await mkdir(stateDir, { recursive: true, mode: 0o700 });
|
|
127
|
+
await chmod(stateDir, 0o700);
|
|
128
|
+
const canonicalStateDir = await realpath(stateDir);
|
|
129
|
+
const ipcDir = join(canonicalStateDir, "ipc");
|
|
130
|
+
await mkdir(ipcDir, { recursive: true, mode: 0o700 });
|
|
131
|
+
await chmod(ipcDir, 0o700);
|
|
132
|
+
return canonicalStateDir;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
import { type AgentEvent } from "../fleet/agent.js";
|
|
3
|
+
import { type StatusResponse } from "./protocol.js";
|
|
4
|
+
export type WorkerTarget = {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
runtime?: {
|
|
8
|
+
generation: string;
|
|
9
|
+
endpoint?: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare function workerEndpoint(stateDir: string, agentId: string, generation: string): string;
|
|
13
|
+
export declare function launchWorker(stateDir: string, agentId: string, generation: string): ChildProcess;
|
|
14
|
+
export declare function stopWorker(worker: ChildProcess | undefined): Promise<void>;
|
|
15
|
+
export declare function requestStatus(record: WorkerTarget, timeoutMs?: number): Promise<NonNullable<StatusResponse["status"]>>;
|
|
16
|
+
export declare function receiveEvents(record: WorkerTarget, signal?: AbortSignal): AsyncIterable<AgentEvent>;
|
|
17
|
+
export declare function requestSend(record: WorkerTarget, message: string, delivery: "steer" | "followUp", timeoutMs?: number): Promise<{
|
|
18
|
+
acceptedAt: number;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/worker/control.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI7D,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAOL,KAAK,cAAc,EAIpB,MAAM,eAAe,CAAA;AAEtB,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAKD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAG5F;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAShG;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAgB3H;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAoEnG;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,UAAU,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB5J"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { Dealer } from "zeromq";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { AgentUnavailableError } from "../fleet/agent.js";
|
|
7
|
+
import { decode, encode, } from "./protocol.js";
|
|
8
|
+
const AGENT_STATES = new Set(["starting", "idle", "working", "stopped", "failed"]);
|
|
9
|
+
const STREAM_IDLE_PROBE_MS = 1_000;
|
|
10
|
+
export function workerEndpoint(stateDir, agentId, generation) {
|
|
11
|
+
const identity = createHash("sha256").update(`${stateDir}\0${agentId}\0${generation}`).digest("hex").slice(0, 24);
|
|
12
|
+
return `ipc://${join(stateDir, "ipc", `${identity}.sock`)}`;
|
|
13
|
+
}
|
|
14
|
+
export function launchWorker(stateDir, agentId, generation) {
|
|
15
|
+
const serverPath = fileURLToPath(new URL("./server.js", import.meta.url));
|
|
16
|
+
const child = spawn(process.execPath, [serverPath, "--state-dir", stateDir, "--agent", agentId, "--generation", generation], {
|
|
17
|
+
detached: true,
|
|
18
|
+
stdio: "ignore",
|
|
19
|
+
env: process.env,
|
|
20
|
+
});
|
|
21
|
+
child.unref();
|
|
22
|
+
return child;
|
|
23
|
+
}
|
|
24
|
+
export async function stopWorker(worker) {
|
|
25
|
+
if (!worker || worker.exitCode !== null || worker.signalCode !== null)
|
|
26
|
+
return;
|
|
27
|
+
worker.kill("SIGTERM");
|
|
28
|
+
if (await waitForExit(worker, 1_000))
|
|
29
|
+
return;
|
|
30
|
+
worker.kill("SIGKILL");
|
|
31
|
+
await waitForExit(worker, 1_000);
|
|
32
|
+
}
|
|
33
|
+
export async function requestStatus(record, timeoutMs = 1_000) {
|
|
34
|
+
const request = {
|
|
35
|
+
version: 1,
|
|
36
|
+
requestId: randomUUID(),
|
|
37
|
+
command: "status",
|
|
38
|
+
agentId: record.id,
|
|
39
|
+
runtimeGeneration: record.runtime?.generation ?? "",
|
|
40
|
+
};
|
|
41
|
+
const response = await requestWorker(record, request, timeoutMs);
|
|
42
|
+
if (!isStatusResponse(response) || response.requestId !== request.requestId || !response.ok || !response.status ||
|
|
43
|
+
response.status.id !== record.id || response.status.name !== record.name ||
|
|
44
|
+
response.status.runtimeGeneration !== record.runtime?.generation || !AGENT_STATES.has(response.status.state)) {
|
|
45
|
+
throw new AgentUnavailableError(record.name);
|
|
46
|
+
}
|
|
47
|
+
return response.status;
|
|
48
|
+
}
|
|
49
|
+
export function receiveEvents(record, signal) {
|
|
50
|
+
return {
|
|
51
|
+
[Symbol.asyncIterator]: async function* () {
|
|
52
|
+
const runtime = record.runtime;
|
|
53
|
+
if (!runtime?.endpoint)
|
|
54
|
+
throw new AgentUnavailableError(record.name);
|
|
55
|
+
const socket = new Dealer({ routingId: randomUUID(), immediate: true, linger: 0, sendTimeout: STREAM_IDLE_PROBE_MS });
|
|
56
|
+
let subscriptionId;
|
|
57
|
+
try {
|
|
58
|
+
socket.connect(runtime.endpoint);
|
|
59
|
+
const request = {
|
|
60
|
+
version: 1,
|
|
61
|
+
requestId: randomUUID(),
|
|
62
|
+
command: "subscribe",
|
|
63
|
+
agentId: record.id,
|
|
64
|
+
runtimeGeneration: runtime.generation,
|
|
65
|
+
};
|
|
66
|
+
await socket.send(encode(request));
|
|
67
|
+
const response = decode((await withTimeout(socket.receive(), STREAM_IDLE_PROBE_MS, record.name))[0]);
|
|
68
|
+
if (!isSubscribeResponse(response) || !response.ok || response.requestId !== request.requestId ||
|
|
69
|
+
response.agentId !== record.id || response.runtimeGeneration !== runtime.generation ||
|
|
70
|
+
typeof response.subscriptionId !== "string" || !response.subscriptionId) {
|
|
71
|
+
throw new AgentUnavailableError(record.name);
|
|
72
|
+
}
|
|
73
|
+
subscriptionId = response.subscriptionId;
|
|
74
|
+
let nextFrame = socket.receive();
|
|
75
|
+
void nextFrame.catch(() => { });
|
|
76
|
+
while (!signal?.aborted) {
|
|
77
|
+
const result = await awaitStreamFrame(nextFrame, signal);
|
|
78
|
+
if (result === "aborted")
|
|
79
|
+
return;
|
|
80
|
+
if (result === "idle") {
|
|
81
|
+
await requestStatus(record, STREAM_IDLE_PROBE_MS);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
nextFrame = socket.receive();
|
|
85
|
+
void nextFrame.catch(() => { });
|
|
86
|
+
const frame = decode(result[0]);
|
|
87
|
+
if (!isEventFrame(frame) || frame.agentId !== record.id || frame.runtimeGeneration !== runtime.generation ||
|
|
88
|
+
frame.subscriptionId !== subscriptionId) {
|
|
89
|
+
throw new AgentUnavailableError(record.name);
|
|
90
|
+
}
|
|
91
|
+
yield frame.event;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (signal?.aborted)
|
|
96
|
+
return;
|
|
97
|
+
if (error instanceof AgentUnavailableError)
|
|
98
|
+
throw error;
|
|
99
|
+
throw new AgentUnavailableError(record.name);
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
if (subscriptionId) {
|
|
103
|
+
const unsubscribe = {
|
|
104
|
+
version: 1,
|
|
105
|
+
requestId: randomUUID(),
|
|
106
|
+
command: "unsubscribe",
|
|
107
|
+
agentId: record.id,
|
|
108
|
+
runtimeGeneration: runtime.generation,
|
|
109
|
+
subscriptionId,
|
|
110
|
+
};
|
|
111
|
+
try {
|
|
112
|
+
await socket.send(encode(unsubscribe));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// The stream is already ending. The worker removes stale routes after a failed delivery.
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
socket.close();
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export async function requestSend(record, message, delivery, timeoutMs = 10_000) {
|
|
124
|
+
const request = {
|
|
125
|
+
version: 1,
|
|
126
|
+
requestId: randomUUID(),
|
|
127
|
+
command: "send",
|
|
128
|
+
agentId: record.id,
|
|
129
|
+
runtimeGeneration: record.runtime?.generation ?? "",
|
|
130
|
+
message,
|
|
131
|
+
delivery,
|
|
132
|
+
};
|
|
133
|
+
const response = await requestWorker(record, request, timeoutMs);
|
|
134
|
+
if (!isSendResponse(response) || response.requestId !== request.requestId || response.agentId !== record.id || response.runtimeGeneration !== record.runtime?.generation) {
|
|
135
|
+
throw new AgentUnavailableError(record.name);
|
|
136
|
+
}
|
|
137
|
+
if (!response.ok) {
|
|
138
|
+
if (typeof response.error === "string" && response.error)
|
|
139
|
+
throw new Error(response.error);
|
|
140
|
+
throw new AgentUnavailableError(record.name);
|
|
141
|
+
}
|
|
142
|
+
if (typeof response.acceptedAt !== "number")
|
|
143
|
+
throw new AgentUnavailableError(record.name);
|
|
144
|
+
return { acceptedAt: response.acceptedAt };
|
|
145
|
+
}
|
|
146
|
+
async function requestWorker(record, request, timeoutMs) {
|
|
147
|
+
const runtime = record.runtime;
|
|
148
|
+
if (!runtime?.endpoint)
|
|
149
|
+
throw new AgentUnavailableError(record.name);
|
|
150
|
+
const socket = new Dealer({ routingId: randomUUID(), immediate: true, linger: 0, sendTimeout: timeoutMs });
|
|
151
|
+
try {
|
|
152
|
+
socket.connect(runtime.endpoint);
|
|
153
|
+
await socket.send(encode(request));
|
|
154
|
+
return decode((await withTimeout(socket.receive(), timeoutMs, record.name))[0]);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (error instanceof AgentUnavailableError)
|
|
158
|
+
throw error;
|
|
159
|
+
throw new AgentUnavailableError(record.name);
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
socket.close();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function isSubscribeResponse(response) {
|
|
166
|
+
return isRecord(response) && response.version === 1 && response.command === "subscribe" &&
|
|
167
|
+
typeof response.requestId === "string" && typeof response.agentId === "string" &&
|
|
168
|
+
typeof response.runtimeGeneration === "string" && typeof response.ok === "boolean";
|
|
169
|
+
}
|
|
170
|
+
function isEventFrame(response) {
|
|
171
|
+
if (!isRecord(response) || response.version !== 1 || response.command !== "event" ||
|
|
172
|
+
typeof response.agentId !== "string" || typeof response.runtimeGeneration !== "string" ||
|
|
173
|
+
typeof response.subscriptionId !== "string")
|
|
174
|
+
return false;
|
|
175
|
+
return isAgentEvent(response.event);
|
|
176
|
+
}
|
|
177
|
+
function isAgentEvent(value) {
|
|
178
|
+
if (!isRecord(value) || typeof value.type !== "string" || typeof value.eventId !== "string" ||
|
|
179
|
+
typeof value.activityId !== "string" || typeof value.timestamp !== "number")
|
|
180
|
+
return false;
|
|
181
|
+
switch (value.type) {
|
|
182
|
+
case "thinking.started":
|
|
183
|
+
case "message.started":
|
|
184
|
+
return true;
|
|
185
|
+
case "thinking.finished":
|
|
186
|
+
return typeof value.content === "string";
|
|
187
|
+
case "message.finished":
|
|
188
|
+
return typeof value.text === "string";
|
|
189
|
+
case "tool.started":
|
|
190
|
+
return typeof value.toolName === "string" && "args" in value;
|
|
191
|
+
case "tool.finished":
|
|
192
|
+
return typeof value.toolName === "string" && typeof value.isError === "boolean";
|
|
193
|
+
default:
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async function awaitStreamFrame(nextFrame, signal) {
|
|
198
|
+
let timer;
|
|
199
|
+
let onAbort;
|
|
200
|
+
try {
|
|
201
|
+
return await Promise.race([
|
|
202
|
+
nextFrame,
|
|
203
|
+
new Promise((resolve) => {
|
|
204
|
+
timer = setTimeout(() => resolve("idle"), STREAM_IDLE_PROBE_MS);
|
|
205
|
+
}),
|
|
206
|
+
new Promise((resolve) => {
|
|
207
|
+
if (!signal)
|
|
208
|
+
return;
|
|
209
|
+
onAbort = () => resolve("aborted");
|
|
210
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
211
|
+
}),
|
|
212
|
+
]);
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
if (timer)
|
|
216
|
+
clearTimeout(timer);
|
|
217
|
+
if (onAbort)
|
|
218
|
+
signal?.removeEventListener("abort", onAbort);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function isStatusResponse(response) {
|
|
222
|
+
return isRecord(response) && response.version === 1 && typeof response.requestId === "string";
|
|
223
|
+
}
|
|
224
|
+
function isSendResponse(response) {
|
|
225
|
+
return isRecord(response) && response.version === 1 && response.command === "send" && typeof response.requestId === "string" &&
|
|
226
|
+
typeof response.agentId === "string" && typeof response.runtimeGeneration === "string" && typeof response.ok === "boolean";
|
|
227
|
+
}
|
|
228
|
+
function isRecord(value) {
|
|
229
|
+
return typeof value === "object" && value !== null;
|
|
230
|
+
}
|
|
231
|
+
async function withTimeout(promise, timeoutMs, name) {
|
|
232
|
+
let timeout;
|
|
233
|
+
try {
|
|
234
|
+
return await Promise.race([
|
|
235
|
+
promise,
|
|
236
|
+
new Promise((_, reject) => {
|
|
237
|
+
timeout = setTimeout(() => reject(new AgentUnavailableError(name)), timeoutMs);
|
|
238
|
+
}),
|
|
239
|
+
]);
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
if (timeout)
|
|
243
|
+
clearTimeout(timeout);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async function waitForExit(worker, timeoutMs) {
|
|
247
|
+
if (worker.exitCode !== null || worker.signalCode !== null)
|
|
248
|
+
return true;
|
|
249
|
+
return new Promise((resolve) => {
|
|
250
|
+
const timeout = setTimeout(() => {
|
|
251
|
+
worker.off("exit", onExit);
|
|
252
|
+
resolve(false);
|
|
253
|
+
}, timeoutMs);
|
|
254
|
+
const onExit = () => {
|
|
255
|
+
clearTimeout(timeout);
|
|
256
|
+
resolve(true);
|
|
257
|
+
};
|
|
258
|
+
worker.once("exit", onExit);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/worker/control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { AgentEvent, AgentState } from "../fleet/agent.js";
|
|
2
|
+
export type StatusRequest = {
|
|
3
|
+
version: 1;
|
|
4
|
+
requestId: string;
|
|
5
|
+
command: "status";
|
|
6
|
+
agentId: string;
|
|
7
|
+
runtimeGeneration: string;
|
|
8
|
+
};
|
|
9
|
+
export type SendRequest = {
|
|
10
|
+
version: 1;
|
|
11
|
+
requestId: string;
|
|
12
|
+
command: "send";
|
|
13
|
+
agentId: string;
|
|
14
|
+
runtimeGeneration: string;
|
|
15
|
+
message: string;
|
|
16
|
+
delivery: "steer" | "followUp";
|
|
17
|
+
};
|
|
18
|
+
export type SubscribeRequest = {
|
|
19
|
+
version: 1;
|
|
20
|
+
requestId: string;
|
|
21
|
+
command: "subscribe";
|
|
22
|
+
agentId: string;
|
|
23
|
+
runtimeGeneration: string;
|
|
24
|
+
};
|
|
25
|
+
export type UnsubscribeRequest = {
|
|
26
|
+
version: 1;
|
|
27
|
+
requestId: string;
|
|
28
|
+
command: "unsubscribe";
|
|
29
|
+
agentId: string;
|
|
30
|
+
runtimeGeneration: string;
|
|
31
|
+
subscriptionId: string;
|
|
32
|
+
};
|
|
33
|
+
export type StatusResponse = {
|
|
34
|
+
version: 1;
|
|
35
|
+
requestId: string;
|
|
36
|
+
ok: boolean;
|
|
37
|
+
status?: {
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
runtimeGeneration: string;
|
|
41
|
+
state: AgentState;
|
|
42
|
+
};
|
|
43
|
+
error?: string;
|
|
44
|
+
};
|
|
45
|
+
export type SendResponse = {
|
|
46
|
+
version: 1;
|
|
47
|
+
requestId: string;
|
|
48
|
+
command: "send";
|
|
49
|
+
ok: boolean;
|
|
50
|
+
agentId: string;
|
|
51
|
+
runtimeGeneration: string;
|
|
52
|
+
acceptedAt?: number;
|
|
53
|
+
error?: string;
|
|
54
|
+
};
|
|
55
|
+
export type SubscribeResponse = {
|
|
56
|
+
version: 1;
|
|
57
|
+
requestId: string;
|
|
58
|
+
command: "subscribe";
|
|
59
|
+
ok: boolean;
|
|
60
|
+
agentId: string;
|
|
61
|
+
runtimeGeneration: string;
|
|
62
|
+
subscriptionId?: string;
|
|
63
|
+
error?: string;
|
|
64
|
+
};
|
|
65
|
+
export type UnsubscribeResponse = {
|
|
66
|
+
version: 1;
|
|
67
|
+
requestId: string;
|
|
68
|
+
command: "unsubscribe";
|
|
69
|
+
ok: boolean;
|
|
70
|
+
agentId: string;
|
|
71
|
+
runtimeGeneration: string;
|
|
72
|
+
subscriptionId: string;
|
|
73
|
+
error?: string;
|
|
74
|
+
};
|
|
75
|
+
export type EventFrame = {
|
|
76
|
+
version: 1;
|
|
77
|
+
command: "event";
|
|
78
|
+
agentId: string;
|
|
79
|
+
runtimeGeneration: string;
|
|
80
|
+
subscriptionId: string;
|
|
81
|
+
event: AgentEvent;
|
|
82
|
+
};
|
|
83
|
+
export type WorkerMessage = StatusRequest | SendRequest | SubscribeRequest | UnsubscribeRequest | StatusResponse | SendResponse | SubscribeResponse | UnsubscribeResponse | EventFrame;
|
|
84
|
+
export declare function encode(message: WorkerMessage): string;
|
|
85
|
+
export declare function decode(text: Buffer): unknown;
|
|
86
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"AAkGA,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/worker/server.ts"],"names":[],"mappings":""}
|