@elpapi42/pi-fleet-sdk 0.2.2 → 0.4.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 +8 -4
- package/dist/agent.d.ts +3 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +3 -0
- package/dist/agent.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -3
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/pi-rpc.d.ts +10 -4
- package/dist/internal/pi-rpc.d.ts.map +1 -1
- package/dist/internal/pi-rpc.js +139 -59
- package/dist/internal/pi-rpc.js.map +1 -1
- package/dist/internal/protocol.d.ts +20 -1
- package/dist/internal/protocol.d.ts.map +1 -1
- package/dist/internal/protocol.js.map +1 -1
- package/dist/internal/registry.d.ts +1 -1
- package/dist/internal/registry.d.ts.map +1 -1
- package/dist/internal/registry.js +18 -0
- package/dist/internal/registry.js.map +1 -1
- package/dist/internal/worker-client.d.ts +3 -0
- package/dist/internal/worker-client.d.ts.map +1 -1
- package/dist/internal/worker-client.js +56 -22
- package/dist/internal/worker-client.js.map +1 -1
- package/dist/internal/worker.js +107 -21
- package/dist/internal/worker.js.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,15 +13,13 @@ const client = await connectPiFleet()
|
|
|
13
13
|
const agent = await client.create({
|
|
14
14
|
name: "researcher",
|
|
15
15
|
cwd: process.cwd(),
|
|
16
|
-
instructions: "Give concise answers.",
|
|
17
16
|
})
|
|
18
17
|
|
|
18
|
+
await agent.send("Investigate the database schema")
|
|
19
19
|
console.log(await agent.status())
|
|
20
20
|
await client.close()
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
`instructions` adds durable system instructions. It does not send initial work.
|
|
24
|
-
|
|
25
23
|
`piArgs` passes Pi options through unchanged. Pi-fleet adds `--mode rpc` and rejects `--mode` and `--no-session`. User session selectors remain authoritative:
|
|
26
24
|
|
|
27
25
|
```ts
|
|
@@ -42,4 +40,10 @@ const client = await connectPiFleet({ stateDir: "/path/to/pi-fleet-state" })
|
|
|
42
40
|
|
|
43
41
|
`client.get(name)` and `client.list()` discover agents created by another local client. `client.close()` only closes this SDK client. It does not stop an agent worker.
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
`agent.send(message)` starts work when Pi is idle. During active work, it uses `steer` by default. Use `followUp` to deliver after the current work settles:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
await agent.send("Summarize the findings", { delivery: "followUp" })
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`send()` resolves after Pi accepts or queues the instruction. It does not wait for completion. Slice 2 supports Unix-like hosts with ZeroMQ `ipc://` support. It provides create, get, list, status, and send. Event streaming, recovery, retirement, compact, and destroy come in later slices.
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { Agent, AgentStatus } from "./types.js";
|
|
1
|
+
import type { Agent, AgentStatus, SendOptions, SendResult } from "./types.js";
|
|
2
2
|
type AgentClient = {
|
|
3
3
|
status(id: string, name: string): Promise<AgentStatus>;
|
|
4
|
+
send(id: string, name: string, message: string, options?: SendOptions): Promise<SendResult>;
|
|
4
5
|
};
|
|
5
6
|
export declare class AgentHandle implements Agent {
|
|
6
7
|
#private;
|
|
@@ -8,6 +9,7 @@ export declare class AgentHandle implements Agent {
|
|
|
8
9
|
get id(): string;
|
|
9
10
|
get name(): string;
|
|
10
11
|
status(): Promise<AgentStatus>;
|
|
12
|
+
send(message: string, options?: SendOptions): Promise<SendResult>;
|
|
11
13
|
}
|
|
12
14
|
export {};
|
|
13
15
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE7E,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACtD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC5F,CAAA;AAED,qBAAa,WAAY,YAAW,KAAK;;gBAK3B,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMzD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAGlE"}
|
package/dist/agent.js
CHANGED
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,WAAW;IACb,OAAO,CAAa;IACpB,GAAG,CAAQ;IACX,KAAK,CAAQ;IAEtB,YAAY,MAAmB,EAAE,EAAU,EAAE,IAAY;QACvD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAqB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC;CACF"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuE,KAAK,cAAc,EAA2B,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuE,KAAK,cAAc,EAA2B,KAAK,aAAa,EAAwD,MAAM,YAAY,CAAA;AA+FxN,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAIzF"}
|
package/dist/client.js
CHANGED
|
@@ -7,7 +7,7 @@ import { AgentNotFoundError } from "./types.js";
|
|
|
7
7
|
import { resolveStateDir, workerEndpoint } from "./internal/paths.js";
|
|
8
8
|
import { openRegistry } from "./internal/registry.js";
|
|
9
9
|
import { launchWorker } from "./internal/worker-launcher.js";
|
|
10
|
-
import { requestStatus } from "./internal/worker-client.js";
|
|
10
|
+
import { requestSend, requestStatus } from "./internal/worker-client.js";
|
|
11
11
|
const STARTUP_TIMEOUT_MS = 10_000;
|
|
12
12
|
const OWNED_PI_OPTIONS = new Set(["--mode", "--no-session"]);
|
|
13
13
|
class PiFleetClientImpl {
|
|
@@ -28,7 +28,6 @@ class PiFleetClientImpl {
|
|
|
28
28
|
id,
|
|
29
29
|
name: input.name,
|
|
30
30
|
cwd: input.cwd,
|
|
31
|
-
instructions: input.instructions,
|
|
32
31
|
piArgs: input.piArgs,
|
|
33
32
|
state: "starting",
|
|
34
33
|
runtime: {
|
|
@@ -72,6 +71,18 @@ class PiFleetClientImpl {
|
|
|
72
71
|
const status = await requestStatus(record);
|
|
73
72
|
return { id: status.id, name: status.name, state: status.state };
|
|
74
73
|
}
|
|
74
|
+
async send(id, name, message, options = {}) {
|
|
75
|
+
this.assertOpen();
|
|
76
|
+
const record = this.#registry.getById(id);
|
|
77
|
+
if (!record || record.name !== name)
|
|
78
|
+
throw new AgentNotFoundError(name);
|
|
79
|
+
if (typeof message !== "string" || !message.trim())
|
|
80
|
+
throw new TypeError("Message must not be empty");
|
|
81
|
+
const delivery = options.delivery ?? "steer";
|
|
82
|
+
if (!isSendDelivery(delivery))
|
|
83
|
+
throw new TypeError(`Invalid delivery: ${String(delivery)}`);
|
|
84
|
+
return requestSend(record, message, delivery);
|
|
85
|
+
}
|
|
75
86
|
close() {
|
|
76
87
|
if (this.#closed)
|
|
77
88
|
return Promise.resolve();
|
|
@@ -89,6 +100,9 @@ export async function connectPiFleet(options = {}) {
|
|
|
89
100
|
const stateDir = resolveStateDir(options);
|
|
90
101
|
return new PiFleetClientImpl(await openRegistry(stateDir), stateDir);
|
|
91
102
|
}
|
|
103
|
+
function isSendDelivery(value) {
|
|
104
|
+
return value === "steer" || value === "followUp";
|
|
105
|
+
}
|
|
92
106
|
async function validateCreateOptions(options) {
|
|
93
107
|
const name = options.name?.trim();
|
|
94
108
|
if (!name)
|
|
@@ -106,7 +120,7 @@ async function validateCreateOptions(options) {
|
|
|
106
120
|
throw new TypeError(`Pi argument ${JSON.stringify(arg)} is managed by pi-fleet`);
|
|
107
121
|
}
|
|
108
122
|
}
|
|
109
|
-
return { name, cwd,
|
|
123
|
+
return { name, cwd, piArgs };
|
|
110
124
|
}
|
|
111
125
|
async function waitForWorkerReady(record, worker, timeoutMs) {
|
|
112
126
|
let onExit = () => { };
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const version = "0.
|
|
1
|
+
export declare const version = "0.4.0";
|
|
2
2
|
export { connectPiFleet } from "./client.js";
|
|
3
3
|
export { AgentNameTakenError, AgentNotFoundError, AgentUnavailableError, } from "./types.js";
|
|
4
|
-
export type { Agent, AgentState, AgentStatus, AgentSummary, ConnectOptions, CreateAgentOptions, PiFleetClient, } from "./types.js";
|
|
4
|
+
export type { Agent, AgentState, AgentStatus, AgentSummary, ConnectOptions, CreateAgentOptions, PiFleetClient, SendDelivery, SendOptions, SendResult, } from "./types.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,16 @@ export type PiState = {
|
|
|
4
4
|
sessionFile: string;
|
|
5
5
|
sessionId: string;
|
|
6
6
|
};
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
export
|
|
7
|
+
export type PiDelivery = "steer" | "followUp";
|
|
8
|
+
export type PiEventHandler = (event: unknown) => void;
|
|
9
|
+
export type PiProcess = {
|
|
10
10
|
process: ChildProcessWithoutNullStreams;
|
|
11
11
|
state: PiState;
|
|
12
|
-
|
|
12
|
+
send(message: string, delivery: PiDelivery, timeoutMs?: number): Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
export declare class PiStartupError extends Error {
|
|
15
|
+
}
|
|
16
|
+
export declare class PiRequestError extends Error {
|
|
17
|
+
}
|
|
18
|
+
export declare function startPi(record: AgentRecord, timeoutMs?: number, onEvent?: PiEventHandler): Promise<PiProcess>;
|
|
13
19
|
//# sourceMappingURL=pi-rpc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-rpc.d.ts","sourceRoot":"","sources":["../../src/internal/pi-rpc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pi-rpc.d.ts","sourceRoot":"","sources":["../../src/internal/pi-rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,CAAA;AAC7C,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAErD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,8BAA8B,CAAA;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/E,CAAA;AAED,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAC5C,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAmJ5C,wBAAsB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BnH"}
|
package/dist/internal/pi-rpc.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
1
2
|
import { spawn } from "node:child_process";
|
|
2
3
|
import { StringDecoder } from "node:string_decoder";
|
|
3
4
|
export class PiStartupError extends Error {
|
|
4
5
|
}
|
|
6
|
+
export class PiRequestError extends Error {
|
|
7
|
+
}
|
|
5
8
|
const USER_SESSION_SELECTORS = new Set([
|
|
6
9
|
"--session",
|
|
7
10
|
"--session-id",
|
|
@@ -11,11 +14,132 @@ const USER_SESSION_SELECTORS = new Set([
|
|
|
11
14
|
"-r",
|
|
12
15
|
"--fork",
|
|
13
16
|
]);
|
|
14
|
-
|
|
17
|
+
class PiRpcClient {
|
|
18
|
+
#process;
|
|
19
|
+
#onEvent;
|
|
20
|
+
#pending = new Map();
|
|
21
|
+
#decoder = new StringDecoder("utf8");
|
|
22
|
+
#buffer = "";
|
|
23
|
+
#closed = false;
|
|
24
|
+
constructor(process, onEvent) {
|
|
25
|
+
this.#process = process;
|
|
26
|
+
this.#onEvent = onEvent;
|
|
27
|
+
process.stdout.on("data", this.onStdout);
|
|
28
|
+
process.once("exit", this.onExit);
|
|
29
|
+
process.once("error", this.onError);
|
|
30
|
+
process.stdin.once("error", this.onStdinError);
|
|
31
|
+
}
|
|
32
|
+
async getState(timeoutMs) {
|
|
33
|
+
const response = await this.request({ type: "get_state" }, timeoutMs);
|
|
34
|
+
const data = response.data;
|
|
35
|
+
if (!isRecord(data) || typeof data.sessionFile !== "string" || typeof data.sessionId !== "string") {
|
|
36
|
+
throw new PiStartupError("Pi returned an invalid get_state response");
|
|
37
|
+
}
|
|
38
|
+
return { sessionFile: data.sessionFile, sessionId: data.sessionId };
|
|
39
|
+
}
|
|
40
|
+
async send(message, delivery, timeoutMs = 10_000) {
|
|
41
|
+
await this.request({ type: "prompt", message, streamingBehavior: delivery }, timeoutMs);
|
|
42
|
+
}
|
|
43
|
+
close() {
|
|
44
|
+
this.#closed = true;
|
|
45
|
+
this.#process.stdout.off("data", this.onStdout);
|
|
46
|
+
this.#process.off("exit", this.onExit);
|
|
47
|
+
this.#process.off("error", this.onError);
|
|
48
|
+
this.#process.stdin.off("error", this.onStdinError);
|
|
49
|
+
this.rejectPending(new PiStartupError("Pi RPC client closed"));
|
|
50
|
+
}
|
|
51
|
+
request(command, timeoutMs) {
|
|
52
|
+
if (this.#closed || this.#process.exitCode !== null || this.#process.signalCode !== null || this.#process.stdin.destroyed) {
|
|
53
|
+
return Promise.reject(new PiStartupError("Pi is not available"));
|
|
54
|
+
}
|
|
55
|
+
const id = randomUUID();
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
const timeout = setTimeout(() => {
|
|
58
|
+
this.#pending.delete(id);
|
|
59
|
+
reject(new PiRequestError("Pi did not answer before the request deadline"));
|
|
60
|
+
}, timeoutMs);
|
|
61
|
+
this.#pending.set(id, { resolve, reject, timeout });
|
|
62
|
+
try {
|
|
63
|
+
this.#process.stdin.write(`${JSON.stringify({ id, ...command })}\n`);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
this.rejectRequest(id, error instanceof Error ? error : new Error(String(error)));
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
onStdout = (chunk) => {
|
|
71
|
+
this.#buffer += this.#decoder.write(chunk);
|
|
72
|
+
while (true) {
|
|
73
|
+
const newline = this.#buffer.indexOf("\n");
|
|
74
|
+
if (newline < 0)
|
|
75
|
+
return;
|
|
76
|
+
const line = this.#buffer.slice(0, newline).replace(/\r$/, "");
|
|
77
|
+
this.#buffer = this.#buffer.slice(newline + 1);
|
|
78
|
+
if (!line)
|
|
79
|
+
continue;
|
|
80
|
+
this.handleLine(line);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
handleLine(line) {
|
|
84
|
+
let message;
|
|
85
|
+
try {
|
|
86
|
+
message = JSON.parse(line);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (!isRecord(message))
|
|
92
|
+
return;
|
|
93
|
+
if (message.type === "response") {
|
|
94
|
+
if (typeof message.id === "string" && this.#pending.has(message.id)) {
|
|
95
|
+
if (message.success === true)
|
|
96
|
+
this.resolveRequest(message.id, message);
|
|
97
|
+
else
|
|
98
|
+
this.rejectRequest(message.id, new PiRequestError(typeof message.error === "string" ? message.error : "Pi rejected the request"));
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.#onEvent?.(message);
|
|
103
|
+
}
|
|
104
|
+
onExit = (code) => {
|
|
105
|
+
this.#closed = true;
|
|
106
|
+
this.rejectPending(new PiStartupError(`Pi exited before completing the request (code ${code ?? "signal"})`));
|
|
107
|
+
};
|
|
108
|
+
onError = (error) => {
|
|
109
|
+
this.#closed = true;
|
|
110
|
+
this.rejectPending(new PiStartupError(`Pi failed: ${error.message}`));
|
|
111
|
+
};
|
|
112
|
+
onStdinError = (error) => {
|
|
113
|
+
this.#closed = true;
|
|
114
|
+
this.rejectPending(new PiStartupError(`Pi stdin failed: ${error.message}`));
|
|
115
|
+
};
|
|
116
|
+
resolveRequest(id, response) {
|
|
117
|
+
const pending = this.#pending.get(id);
|
|
118
|
+
if (!pending)
|
|
119
|
+
return;
|
|
120
|
+
this.#pending.delete(id);
|
|
121
|
+
clearTimeout(pending.timeout);
|
|
122
|
+
pending.resolve(response);
|
|
123
|
+
}
|
|
124
|
+
rejectRequest(id, error) {
|
|
125
|
+
const pending = this.#pending.get(id);
|
|
126
|
+
if (!pending)
|
|
127
|
+
return;
|
|
128
|
+
this.#pending.delete(id);
|
|
129
|
+
clearTimeout(pending.timeout);
|
|
130
|
+
pending.reject(error);
|
|
131
|
+
}
|
|
132
|
+
rejectPending(error) {
|
|
133
|
+
for (const [id, pending] of this.#pending) {
|
|
134
|
+
this.#pending.delete(id);
|
|
135
|
+
clearTimeout(pending.timeout);
|
|
136
|
+
pending.reject(error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export async function startPi(record, timeoutMs = 10_000, onEvent) {
|
|
15
141
|
const command = process.env.PI_FLEET_PI_COMMAND ?? "pi";
|
|
16
142
|
const args = ["--mode", "rpc", ...record.piArgs];
|
|
17
|
-
if (record.instructions)
|
|
18
|
-
args.push("--append-system-prompt", record.instructions);
|
|
19
143
|
if (record.sessionPath && !record.piArgs.some((arg) => USER_SESSION_SELECTORS.has(arg))) {
|
|
20
144
|
args.push("--session", record.sessionPath);
|
|
21
145
|
}
|
|
@@ -24,17 +148,21 @@ export async function startPi(record, timeoutMs = 10_000) {
|
|
|
24
148
|
child.stderr.on("data", (chunk) => {
|
|
25
149
|
stderr = `${stderr}${chunk.toString("utf8")}`.slice(-4_096);
|
|
26
150
|
});
|
|
151
|
+
const rpc = new PiRpcClient(child, onEvent);
|
|
27
152
|
try {
|
|
28
|
-
const state = await getState(
|
|
29
|
-
|
|
30
|
-
|
|
153
|
+
const state = await rpc.getState(timeoutMs);
|
|
154
|
+
return {
|
|
155
|
+
process: child,
|
|
156
|
+
state,
|
|
157
|
+
send: (message, delivery, requestTimeoutMs) => rpc.send(message, delivery, requestTimeoutMs),
|
|
158
|
+
};
|
|
31
159
|
}
|
|
32
160
|
catch (error) {
|
|
161
|
+
rpc.close();
|
|
33
162
|
await terminate(child);
|
|
34
163
|
const detail = stderr.trim();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
throw error;
|
|
164
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
165
|
+
throw new PiStartupError(detail ? `${message}: ${detail}` : message);
|
|
38
166
|
}
|
|
39
167
|
}
|
|
40
168
|
async function terminate(child) {
|
|
@@ -61,55 +189,7 @@ async function waitForExit(child, timeoutMs) {
|
|
|
61
189
|
child.once("exit", onExit);
|
|
62
190
|
});
|
|
63
191
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const decoder = new StringDecoder("utf8");
|
|
67
|
-
let pending = "";
|
|
68
|
-
return new Promise((resolve, reject) => {
|
|
69
|
-
const timeout = setTimeout(() => fail(new PiStartupError("Pi did not answer get_state before the startup deadline")), timeoutMs);
|
|
70
|
-
const onError = (error) => fail(new PiStartupError(`Pi failed to start: ${error.message}`));
|
|
71
|
-
const onExit = (code) => fail(new PiStartupError(`Pi exited before readiness (code ${code ?? "signal"})`));
|
|
72
|
-
const onData = (chunk) => {
|
|
73
|
-
pending += decoder.write(chunk);
|
|
74
|
-
while (true) {
|
|
75
|
-
const newline = pending.indexOf("\n");
|
|
76
|
-
if (newline < 0)
|
|
77
|
-
return;
|
|
78
|
-
const line = pending.slice(0, newline).replace(/\r$/, "");
|
|
79
|
-
pending = pending.slice(newline + 1);
|
|
80
|
-
if (!line)
|
|
81
|
-
continue;
|
|
82
|
-
try {
|
|
83
|
-
const message = JSON.parse(line);
|
|
84
|
-
if (message.type === "response" && message.id === id) {
|
|
85
|
-
if (!message.success)
|
|
86
|
-
return fail(new PiStartupError("Pi rejected get_state"));
|
|
87
|
-
const { sessionFile, sessionId } = message.data ?? {};
|
|
88
|
-
if (typeof sessionFile !== "string" || typeof sessionId !== "string")
|
|
89
|
-
return fail(new PiStartupError("Pi returned an invalid get_state response"));
|
|
90
|
-
cleanup();
|
|
91
|
-
resolve({ sessionFile, sessionId });
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Pi events and diagnostics may share stdout. Only a matching response matters here.
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
const cleanup = () => {
|
|
100
|
-
clearTimeout(timeout);
|
|
101
|
-
child.stdout.off("data", onData);
|
|
102
|
-
child.off("error", onError);
|
|
103
|
-
child.off("exit", onExit);
|
|
104
|
-
};
|
|
105
|
-
const fail = (error) => {
|
|
106
|
-
cleanup();
|
|
107
|
-
reject(error);
|
|
108
|
-
};
|
|
109
|
-
child.stdout.on("data", onData);
|
|
110
|
-
child.once("error", onError);
|
|
111
|
-
child.once("exit", onExit);
|
|
112
|
-
child.stdin.write(`${JSON.stringify({ id, type: "get_state" })}\n`);
|
|
113
|
-
});
|
|
192
|
+
function isRecord(value) {
|
|
193
|
+
return typeof value === "object" && value !== null;
|
|
114
194
|
}
|
|
115
195
|
//# sourceMappingURL=pi-rpc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-rpc.js","sourceRoot":"","sources":["../../src/internal/pi-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"pi-rpc.js","sourceRoot":"","sources":["../../src/internal/pi-rpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,15 @@ export type StatusRequest = {
|
|
|
6
6
|
agentId: string;
|
|
7
7
|
runtimeGeneration: string;
|
|
8
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
|
+
};
|
|
9
18
|
export type StatusResponse = {
|
|
10
19
|
version: 1;
|
|
11
20
|
requestId: string;
|
|
@@ -18,6 +27,16 @@ export type StatusResponse = {
|
|
|
18
27
|
};
|
|
19
28
|
error?: string;
|
|
20
29
|
};
|
|
21
|
-
export
|
|
30
|
+
export type SendResponse = {
|
|
31
|
+
version: 1;
|
|
32
|
+
requestId: string;
|
|
33
|
+
command: "send";
|
|
34
|
+
ok: boolean;
|
|
35
|
+
agentId: string;
|
|
36
|
+
runtimeGeneration: string;
|
|
37
|
+
acceptedAt?: number;
|
|
38
|
+
error?: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function encode(message: StatusRequest | SendRequest | StatusResponse | SendResponse): string;
|
|
22
41
|
export declare function decode(text: Buffer): unknown;
|
|
23
42
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/internal/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,QAAQ,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,CAAC,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAA;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/internal/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,QAAQ,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,CAAC,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,GAAG,UAAU,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,CAAC,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAA;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,CAAC,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAEnG;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/internal/protocol.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/internal/protocol.ts"],"names":[],"mappings":"AAuCA,MAAM,UAAU,MAAM,CAAC,OAAoE;IACzF,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"}
|
|
@@ -4,7 +4,6 @@ export type AgentRecord = {
|
|
|
4
4
|
id: string;
|
|
5
5
|
name: string;
|
|
6
6
|
cwd: string;
|
|
7
|
-
instructions?: string;
|
|
8
7
|
piArgs: string[];
|
|
9
8
|
sessionPath?: string;
|
|
10
9
|
sessionId?: string;
|
|
@@ -37,6 +36,7 @@ export declare class Registry {
|
|
|
37
36
|
getByName(name: string): AgentRecord | undefined;
|
|
38
37
|
list(): AgentSummary[];
|
|
39
38
|
markReady(id: string, runtimeGeneration: string, ready: Pick<NonNullable<AgentRecord["runtime"]>, "workerPid" | "endpoint"> & Pick<AgentRecord, "sessionPath" | "sessionId">): Promise<boolean>;
|
|
39
|
+
updateState(id: string, runtimeGeneration: string, state: "working" | "idle"): Promise<boolean>;
|
|
40
40
|
rollbackCreation(id: string, name: string, runtimeGeneration: string): Promise<void>;
|
|
41
41
|
close(): Promise<void>;
|
|
42
42
|
private assertOpen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG3D,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG3D,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,UAAU,CAAA;IACjB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,UAAU,GAAG,OAAO,CAAA;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,WAAW,GAAG,YAAY,CAAA;AAC/B,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACrC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB,CAAA;AAID,qBAAa,QAAQ;;gBAOP,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB;IAOjD,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAK5C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAMhD,IAAI,IAAI,YAAY,EAAE;IAUhB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB/L,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB/F,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,UAAU;CAGnB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmBtE"}
|
|
@@ -63,6 +63,24 @@ export class Registry {
|
|
|
63
63
|
const version = entry.version ?? 0;
|
|
64
64
|
return this.#agents.put(id, record, version + 1, version);
|
|
65
65
|
}
|
|
66
|
+
async updateState(id, runtimeGeneration, state) {
|
|
67
|
+
this.assertOpen();
|
|
68
|
+
while (true) {
|
|
69
|
+
const entry = this.#agents.getEntry(id);
|
|
70
|
+
if (!entry || entry.value.runtime?.generation !== runtimeGeneration)
|
|
71
|
+
return false;
|
|
72
|
+
if (entry.value.state === state)
|
|
73
|
+
return true;
|
|
74
|
+
const version = entry.version ?? 0;
|
|
75
|
+
const updated = {
|
|
76
|
+
...entry.value,
|
|
77
|
+
state,
|
|
78
|
+
updatedAt: Date.now(),
|
|
79
|
+
};
|
|
80
|
+
if (await this.#agents.put(id, updated, version + 1, version))
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
66
84
|
async rollbackCreation(id, name, runtimeGeneration) {
|
|
67
85
|
this.assertOpen();
|
|
68
86
|
await this.#names.transaction(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoC,MAAM,MAAM,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { type StatusResponse } from "./protocol.js";
|
|
2
2
|
import type { AgentRecord } from "./registry.js";
|
|
3
3
|
export declare function requestStatus(record: AgentRecord, timeoutMs?: number): Promise<NonNullable<StatusResponse["status"]>>;
|
|
4
|
+
export declare function requestSend(record: AgentRecord, message: string, delivery: "steer" | "followUp", timeoutMs?: number): Promise<{
|
|
5
|
+
acceptedAt: number;
|
|
6
|
+
}>;
|
|
4
7
|
//# sourceMappingURL=worker-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/internal/worker-client.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/internal/worker-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2E,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAC5H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAuB1H;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,UAAU,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB3J"}
|
|
@@ -1,37 +1,61 @@
|
|
|
1
|
-
import { Dealer } from "zeromq";
|
|
2
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { Dealer } from "zeromq";
|
|
3
3
|
import { AgentUnavailableError } from "../types.js";
|
|
4
4
|
import { decode, encode } from "./protocol.js";
|
|
5
5
|
const AGENT_STATES = new Set(["starting", "idle", "working", "stopped", "failed"]);
|
|
6
6
|
export async function requestStatus(record, timeoutMs = 1_000) {
|
|
7
|
+
const request = {
|
|
8
|
+
version: 1,
|
|
9
|
+
requestId: randomUUID(),
|
|
10
|
+
command: "status",
|
|
11
|
+
agentId: record.id,
|
|
12
|
+
runtimeGeneration: record.runtime?.generation ?? "",
|
|
13
|
+
};
|
|
14
|
+
const response = await requestWorker(record, request, timeoutMs);
|
|
15
|
+
if (!isStatusResponse(response) ||
|
|
16
|
+
response.requestId !== request.requestId ||
|
|
17
|
+
!response.ok ||
|
|
18
|
+
!response.status ||
|
|
19
|
+
response.status.id !== record.id ||
|
|
20
|
+
response.status.name !== record.name ||
|
|
21
|
+
response.status.runtimeGeneration !== record.runtime?.generation ||
|
|
22
|
+
!AGENT_STATES.has(response.status.state)) {
|
|
23
|
+
throw new AgentUnavailableError(record.name);
|
|
24
|
+
}
|
|
25
|
+
return response.status;
|
|
26
|
+
}
|
|
27
|
+
export async function requestSend(record, message, delivery, timeoutMs = 10_000) {
|
|
28
|
+
const request = {
|
|
29
|
+
version: 1,
|
|
30
|
+
requestId: randomUUID(),
|
|
31
|
+
command: "send",
|
|
32
|
+
agentId: record.id,
|
|
33
|
+
runtimeGeneration: record.runtime?.generation ?? "",
|
|
34
|
+
message,
|
|
35
|
+
delivery,
|
|
36
|
+
};
|
|
37
|
+
const response = await requestWorker(record, request, timeoutMs);
|
|
38
|
+
if (!isSendResponse(response) || response.requestId !== request.requestId || response.agentId !== record.id || response.runtimeGeneration !== record.runtime?.generation) {
|
|
39
|
+
throw new AgentUnavailableError(record.name);
|
|
40
|
+
}
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
if (typeof response.error === "string" && response.error)
|
|
43
|
+
throw new Error(response.error);
|
|
44
|
+
throw new AgentUnavailableError(record.name);
|
|
45
|
+
}
|
|
46
|
+
if (typeof response.acceptedAt !== "number")
|
|
47
|
+
throw new AgentUnavailableError(record.name);
|
|
48
|
+
return { acceptedAt: response.acceptedAt };
|
|
49
|
+
}
|
|
50
|
+
async function requestWorker(record, request, timeoutMs) {
|
|
7
51
|
const runtime = record.runtime;
|
|
8
52
|
if (!runtime?.endpoint)
|
|
9
53
|
throw new AgentUnavailableError(record.name);
|
|
10
54
|
const socket = new Dealer({ routingId: randomUUID(), immediate: true, linger: 0, sendTimeout: timeoutMs });
|
|
11
55
|
try {
|
|
12
56
|
socket.connect(runtime.endpoint);
|
|
13
|
-
const request = {
|
|
14
|
-
version: 1,
|
|
15
|
-
requestId: randomUUID(),
|
|
16
|
-
command: "status",
|
|
17
|
-
agentId: record.id,
|
|
18
|
-
runtimeGeneration: runtime.generation,
|
|
19
|
-
};
|
|
20
57
|
await socket.send(encode(request));
|
|
21
|
-
|
|
22
|
-
const response = decode(frames[0]);
|
|
23
|
-
if (!response ||
|
|
24
|
-
response.version !== 1 ||
|
|
25
|
-
response.requestId !== request.requestId ||
|
|
26
|
-
!response.ok ||
|
|
27
|
-
!response.status ||
|
|
28
|
-
response.status.id !== record.id ||
|
|
29
|
-
response.status.name !== record.name ||
|
|
30
|
-
response.status.runtimeGeneration !== runtime.generation ||
|
|
31
|
-
!AGENT_STATES.has(response.status.state)) {
|
|
32
|
-
throw new AgentUnavailableError(record.name);
|
|
33
|
-
}
|
|
34
|
-
return response.status;
|
|
58
|
+
return decode((await withTimeout(socket.receive(), timeoutMs, record.name))[0]);
|
|
35
59
|
}
|
|
36
60
|
catch (error) {
|
|
37
61
|
if (error instanceof AgentUnavailableError)
|
|
@@ -42,6 +66,16 @@ export async function requestStatus(record, timeoutMs = 1_000) {
|
|
|
42
66
|
socket.close();
|
|
43
67
|
}
|
|
44
68
|
}
|
|
69
|
+
function isStatusResponse(response) {
|
|
70
|
+
return isRecord(response) && response.version === 1 && typeof response.requestId === "string";
|
|
71
|
+
}
|
|
72
|
+
function isSendResponse(response) {
|
|
73
|
+
return isRecord(response) && response.version === 1 && response.command === "send" && typeof response.requestId === "string" &&
|
|
74
|
+
typeof response.agentId === "string" && typeof response.runtimeGeneration === "string" && typeof response.ok === "boolean";
|
|
75
|
+
}
|
|
76
|
+
function isRecord(value) {
|
|
77
|
+
return typeof value === "object" && value !== null;
|
|
78
|
+
}
|
|
45
79
|
async function withTimeout(promise, timeoutMs, name) {
|
|
46
80
|
let timeout;
|
|
47
81
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/internal/worker-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/internal/worker-client.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/worker.js
CHANGED
|
@@ -14,19 +14,52 @@ async function main() {
|
|
|
14
14
|
await createStateDirectories(stateDir);
|
|
15
15
|
const router = new Router({ mandatory: true, immediate: true, linger: 0, sendTimeout: 1_000 });
|
|
16
16
|
let routerClosed = false;
|
|
17
|
+
let state = record.state;
|
|
18
|
+
let pi;
|
|
19
|
+
let stateUpdates = Promise.resolve();
|
|
20
|
+
let replies = Promise.resolve();
|
|
21
|
+
const handlers = new Set();
|
|
17
22
|
const closeRouter = () => {
|
|
18
23
|
if (routerClosed)
|
|
19
24
|
return;
|
|
20
25
|
routerClosed = true;
|
|
21
26
|
router.close();
|
|
22
27
|
};
|
|
23
|
-
let pi;
|
|
24
28
|
const stop = () => closeRouter();
|
|
29
|
+
const queueStateUpdate = (nextState) => {
|
|
30
|
+
stateUpdates = stateUpdates.then(async () => {
|
|
31
|
+
const updated = await registry.updateState(agentId, generation, nextState);
|
|
32
|
+
if (!updated) {
|
|
33
|
+
closeRouter();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
state = nextState;
|
|
37
|
+
}).catch(() => closeRouter());
|
|
38
|
+
};
|
|
39
|
+
const queueReply = (route, response) => {
|
|
40
|
+
replies = replies.then(async () => {
|
|
41
|
+
try {
|
|
42
|
+
await router.send([route, encode(response)]);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (!isUnreachablePeer(error))
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
}).catch(() => closeRouter());
|
|
49
|
+
};
|
|
50
|
+
const onPiEvent = (event) => {
|
|
51
|
+
if (!isRecord(event))
|
|
52
|
+
return;
|
|
53
|
+
if (event.type === "agent_start")
|
|
54
|
+
queueStateUpdate("working");
|
|
55
|
+
if (event.type === "agent_settled")
|
|
56
|
+
queueStateUpdate("idle");
|
|
57
|
+
};
|
|
25
58
|
process.once("SIGTERM", stop);
|
|
26
59
|
process.once("SIGINT", stop);
|
|
27
60
|
try {
|
|
28
61
|
await router.bind(record.runtime.endpoint);
|
|
29
|
-
pi = await startPi(record);
|
|
62
|
+
pi = await startPi(record, 10_000, onPiEvent);
|
|
30
63
|
pi.process.once("exit", closeRouter);
|
|
31
64
|
const markedReady = await registry.markReady(agentId, generation, {
|
|
32
65
|
workerPid: process.pid,
|
|
@@ -36,15 +69,14 @@ async function main() {
|
|
|
36
69
|
});
|
|
37
70
|
if (!markedReady)
|
|
38
71
|
throw new Error("Worker claim is no longer current");
|
|
72
|
+
state = "idle";
|
|
39
73
|
for await (const [route, frame] of router) {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
74
|
+
const handler = handleRequest(route, frame, record, generation, pi, () => state, queueReply);
|
|
75
|
+
handlers.add(handler);
|
|
76
|
+
void handler.then(() => handlers.delete(handler), () => {
|
|
77
|
+
handlers.delete(handler);
|
|
78
|
+
closeRouter();
|
|
79
|
+
});
|
|
48
80
|
}
|
|
49
81
|
}
|
|
50
82
|
finally {
|
|
@@ -53,9 +85,72 @@ async function main() {
|
|
|
53
85
|
pi?.process.off("exit", closeRouter);
|
|
54
86
|
closeRouter();
|
|
55
87
|
await stopPi(pi?.process);
|
|
88
|
+
await Promise.allSettled(handlers);
|
|
89
|
+
await stateUpdates;
|
|
90
|
+
await replies;
|
|
56
91
|
await registry.close();
|
|
57
92
|
}
|
|
58
93
|
}
|
|
94
|
+
async function handleRequest(route, frame, record, generation, pi, getState, reply) {
|
|
95
|
+
const request = decodeRequest(frame);
|
|
96
|
+
if (!request || request.agentId !== record.id || request.runtimeGeneration !== generation) {
|
|
97
|
+
reply(route, invalidResponse(request, record.id, generation));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (request.command === "status") {
|
|
101
|
+
reply(route, {
|
|
102
|
+
version: 1,
|
|
103
|
+
requestId: request.requestId,
|
|
104
|
+
ok: true,
|
|
105
|
+
status: { id: record.id, name: record.name, runtimeGeneration: generation, state: getState() },
|
|
106
|
+
});
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (!request.message.trim()) {
|
|
110
|
+
reply(route, sendResponse(request, record.id, generation, "Message must not be empty"));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (request.delivery !== "steer" && request.delivery !== "followUp") {
|
|
114
|
+
reply(route, sendResponse(request, record.id, generation, "Invalid delivery"));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
await pi.send(request.message, request.delivery);
|
|
119
|
+
reply(route, sendResponse(request, record.id, generation, undefined, Date.now()));
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
reply(route, sendResponse(request, record.id, generation, error instanceof Error ? error.message : String(error)));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function decodeRequest(frame) {
|
|
126
|
+
try {
|
|
127
|
+
const request = decode(frame);
|
|
128
|
+
if (!isRecord(request) || request.version !== 1 || typeof request.requestId !== "string" || typeof request.agentId !== "string" || typeof request.runtimeGeneration !== "string")
|
|
129
|
+
return undefined;
|
|
130
|
+
if (request.command === "status")
|
|
131
|
+
return request;
|
|
132
|
+
if (request.command === "send" && typeof request.message === "string" && typeof request.delivery === "string")
|
|
133
|
+
return request;
|
|
134
|
+
}
|
|
135
|
+
catch { }
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
function invalidResponse(request, agentId, generation) {
|
|
139
|
+
if (request?.command === "send")
|
|
140
|
+
return sendResponse(request, agentId, generation, "Worker identity does not match the request");
|
|
141
|
+
return { version: 1, requestId: request?.requestId ?? "", ok: false, error: "Worker identity does not match the request" };
|
|
142
|
+
}
|
|
143
|
+
function sendResponse(request, agentId, generation, error, acceptedAt) {
|
|
144
|
+
return {
|
|
145
|
+
version: 1,
|
|
146
|
+
requestId: request.requestId,
|
|
147
|
+
command: "send",
|
|
148
|
+
ok: error === undefined,
|
|
149
|
+
agentId,
|
|
150
|
+
runtimeGeneration: generation,
|
|
151
|
+
...(error === undefined ? { acceptedAt } : { error }),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
59
154
|
async function stopPi(pi) {
|
|
60
155
|
if (!pi || pi.exitCode !== null || pi.signalCode !== null)
|
|
61
156
|
return;
|
|
@@ -80,17 +175,8 @@ async function waitForExit(pi, timeoutMs) {
|
|
|
80
175
|
pi.once("exit", onExit);
|
|
81
176
|
});
|
|
82
177
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
const request = decode(frame);
|
|
86
|
-
if (request.version !== 1 || request.command !== "status" || request.agentId !== agentId || request.runtimeGeneration !== generation) {
|
|
87
|
-
return { version: 1, requestId: request?.requestId ?? "", ok: false, error: "Worker identity does not match the request" };
|
|
88
|
-
}
|
|
89
|
-
return { version: 1, requestId: request.requestId, ok: true, status: { id: agentId, name, runtimeGeneration: generation, state: "idle" } };
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return { version: 1, requestId: "", ok: false, error: "Invalid request" };
|
|
93
|
-
}
|
|
178
|
+
function isRecord(value) {
|
|
179
|
+
return typeof value === "object" && value !== null;
|
|
94
180
|
}
|
|
95
181
|
function isUnreachablePeer(error) {
|
|
96
182
|
return typeof error === "object" && error !== null && "code" in error &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/internal/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/internal/worker.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export type ConnectOptions = {
|
|
|
6
6
|
export type CreateAgentOptions = {
|
|
7
7
|
name: string;
|
|
8
8
|
cwd: string;
|
|
9
|
-
instructions?: string;
|
|
10
9
|
piArgs?: string[];
|
|
11
10
|
};
|
|
12
11
|
export type AgentSummary = {
|
|
@@ -20,10 +19,18 @@ export type AgentStatus = {
|
|
|
20
19
|
name: string;
|
|
21
20
|
state: AgentState;
|
|
22
21
|
};
|
|
22
|
+
export type SendDelivery = "steer" | "followUp";
|
|
23
|
+
export type SendOptions = {
|
|
24
|
+
delivery?: SendDelivery;
|
|
25
|
+
};
|
|
26
|
+
export type SendResult = {
|
|
27
|
+
acceptedAt: number;
|
|
28
|
+
};
|
|
23
29
|
export interface Agent {
|
|
24
30
|
readonly id: string;
|
|
25
31
|
readonly name: string;
|
|
26
32
|
status(): Promise<AgentStatus>;
|
|
33
|
+
send(message: string, options?: SendOptions): Promise<SendResult>;
|
|
27
34
|
}
|
|
28
35
|
export interface PiFleetClient {
|
|
29
36
|
create(options: CreateAgentOptions): Promise<Agent>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE/E,MAAM,MAAM,cAAc,GAAG;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE/E,MAAM,MAAM,cAAc,GAAG;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,CAAA;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACnD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,IAAI,EAAE,MAAM;CAIzB"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAkDA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,IAAY;QACtB,KAAK,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,IAAY;QACtB,KAAK,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,IAAY;QACtB,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACrD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF"}
|