@polpo-ai/node 0.12.2 → 0.13.1
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/dist/adapters/composite-spawner.d.ts +21 -0
- package/dist/adapters/composite-spawner.d.ts.map +1 -0
- package/dist/adapters/composite-spawner.js +32 -0
- package/dist/adapters/composite-spawner.js.map +1 -0
- package/dist/adapters/in-process-spawner.d.ts +43 -0
- package/dist/adapters/in-process-spawner.d.ts.map +1 -0
- package/dist/adapters/in-process-spawner.js +93 -0
- package/dist/adapters/in-process-spawner.js.map +1 -0
- package/dist/adapters/loop-engine.d.ts +7 -0
- package/dist/adapters/loop-engine.d.ts.map +1 -1
- package/dist/adapters/loop-engine.js +159 -5
- package/dist/adapters/loop-engine.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +4 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/orchestrator.d.ts +14 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +57 -1
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/run-lifecycle.d.ts +98 -0
- package/dist/core/run-lifecycle.d.ts.map +1 -0
- package/dist/core/run-lifecycle.js +247 -0
- package/dist/core/run-lifecycle.js.map +1 -0
- package/dist/core/runner.d.ts +10 -5
- package/dist/core/runner.d.ts.map +1 -1
- package/dist/core/runner.js +41 -187
- package/dist/core/runner.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared run lifecycle — executeRun().
|
|
3
|
+
*
|
|
4
|
+
* The complete lifecycle of ONE agent run (initial run record, engine spawn,
|
|
5
|
+
* transcript + activity persistence, durable-turns checkpoint sink, terminal
|
|
6
|
+
* completeRun) extracted from the subprocess runner so two hosts can execute
|
|
7
|
+
* the exact same code path:
|
|
8
|
+
*
|
|
9
|
+
* - the detached subprocess entry (core/runner.ts, spawned by NodeSpawner):
|
|
10
|
+
* builds its own store connections, pid = process.pid, SIGTERM → abort;
|
|
11
|
+
* - the InProcessSpawner (adapters/in-process-spawner.ts): reuses the
|
|
12
|
+
* orchestrator's stores, synthetic negative pid, kill() → abort.
|
|
13
|
+
*
|
|
14
|
+
* Contract:
|
|
15
|
+
* - executeRun NEVER exits the process and NEVER closes the injected
|
|
16
|
+
* stores — both lifetimes belong to the host.
|
|
17
|
+
* - Every failure path is persisted on the run record via completeRun
|
|
18
|
+
* (the in-process host must never crash because a run failed).
|
|
19
|
+
* - Abort (deps.signal) carries the subprocess SIGTERM semantics: kill
|
|
20
|
+
* the engine, force exitCode 1, mark the run "killed".
|
|
21
|
+
*/
|
|
22
|
+
import { appendFileSync, mkdirSync, existsSync } from "node:fs";
|
|
23
|
+
import { join } from "node:path";
|
|
24
|
+
import { FileMemoryStore } from "@polpo-ai/file-stores";
|
|
25
|
+
import { spawnLoopEngine } from "../adapters/loop-engine.js";
|
|
26
|
+
import { sanitizeTranscriptEntry } from "../server/security.js";
|
|
27
|
+
import { EncryptedVaultStore } from "../vault/encrypted-store.js";
|
|
28
|
+
import { NodeFileSystem } from "../adapters/node-filesystem.js";
|
|
29
|
+
import { NodeShell } from "../adapters/node-shell.js";
|
|
30
|
+
const ACTIVITY_POLL_MS = 1500;
|
|
31
|
+
export function errorResult(err) {
|
|
32
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
33
|
+
return { exitCode: 1, stdout: "", stderr: `Runner error: ${msg}`, duration: 0 };
|
|
34
|
+
}
|
|
35
|
+
/** Persistent per-run activity log (JSONL file in .polpo/logs/) */
|
|
36
|
+
export class RunActivityLog {
|
|
37
|
+
logPath;
|
|
38
|
+
lastSnapshot = "";
|
|
39
|
+
constructor(polpoDir, runId, taskId, agentName, pid) {
|
|
40
|
+
const logsDir = join(polpoDir, "logs");
|
|
41
|
+
if (!existsSync(logsDir))
|
|
42
|
+
mkdirSync(logsDir, { recursive: true });
|
|
43
|
+
this.logPath = join(logsDir, `run-${runId}.jsonl`);
|
|
44
|
+
// Write header
|
|
45
|
+
this.write({ _run: true, runId, taskId, agentName, startedAt: new Date().toISOString(), pid });
|
|
46
|
+
}
|
|
47
|
+
/** Log activity diff — only writes if something changed */
|
|
48
|
+
logActivity(activity) {
|
|
49
|
+
const snapshot = JSON.stringify(activity);
|
|
50
|
+
if (snapshot === this.lastSnapshot)
|
|
51
|
+
return;
|
|
52
|
+
this.lastSnapshot = snapshot;
|
|
53
|
+
this.write({ ts: new Date().toISOString(), event: "activity", data: activity });
|
|
54
|
+
}
|
|
55
|
+
/** Log a transcript entry from the engine (assistant text, tool_use, tool_result, etc.) */
|
|
56
|
+
logTranscript(entry) {
|
|
57
|
+
this.write({ ts: new Date().toISOString(), ...sanitizeTranscriptEntry(entry) });
|
|
58
|
+
}
|
|
59
|
+
/** Log a lifecycle event */
|
|
60
|
+
logEvent(event, data) {
|
|
61
|
+
this.write({ ts: new Date().toISOString(), event, ...(data ? { data } : {}) });
|
|
62
|
+
}
|
|
63
|
+
write(obj) {
|
|
64
|
+
try {
|
|
65
|
+
appendFileSync(this.logPath, JSON.stringify(obj) + "\n", "utf-8");
|
|
66
|
+
}
|
|
67
|
+
catch { /* best effort */ }
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Execute one agent run end-to-end against the injected stores.
|
|
72
|
+
* See module header for the host contract.
|
|
73
|
+
*/
|
|
74
|
+
export async function executeRun(config, deps) {
|
|
75
|
+
const { runStore, pid, configPath } = deps;
|
|
76
|
+
const actLog = new RunActivityLog(config.polpoDir, config.runId, config.taskId, config.agent.name, pid);
|
|
77
|
+
// When a transcript session is available (postgres/sqlite), persist the
|
|
78
|
+
// transcript to the DB. This ensures it survives sandbox destruction.
|
|
79
|
+
let logSession;
|
|
80
|
+
if (deps.createLogSession) {
|
|
81
|
+
logSession = await deps.createLogSession();
|
|
82
|
+
}
|
|
83
|
+
const now = new Date().toISOString();
|
|
84
|
+
const initialRecord = {
|
|
85
|
+
id: config.runId,
|
|
86
|
+
taskId: config.taskId,
|
|
87
|
+
pid,
|
|
88
|
+
agentName: config.agent.name,
|
|
89
|
+
status: "running",
|
|
90
|
+
startedAt: now,
|
|
91
|
+
updatedAt: now,
|
|
92
|
+
// sessionId starts at the LogStore session we just opened, so the
|
|
93
|
+
// run record is linked to its transcript from the very first poll.
|
|
94
|
+
// Without this, downstream readers (the cloud task-activity endpoint,
|
|
95
|
+
// a future dashboard, anything that joins runs to log sessions) have
|
|
96
|
+
// to guess by time-proximity — fragile on cold sandboxes where the
|
|
97
|
+
// log session is created hundreds of ms before the first stream
|
|
98
|
+
// chunk lands. In file mode this is mostly cosmetic because
|
|
99
|
+
// RunActivityLog writes a parallel JSONL side-channel; in DB mode
|
|
100
|
+
// (cloud) it's the only link that ever gets persisted.
|
|
101
|
+
activity: {
|
|
102
|
+
filesCreated: [], filesEdited: [], toolCalls: 0, totalTokens: 0, lastUpdate: now,
|
|
103
|
+
...(logSession ? { sessionId: logSession.sessionId } : {}),
|
|
104
|
+
},
|
|
105
|
+
configPath,
|
|
106
|
+
};
|
|
107
|
+
// In DB mode, run record already exists (created by spawner) — update it with PID
|
|
108
|
+
await runStore.upsertRun(initialRecord);
|
|
109
|
+
actLog.logEvent("spawning", { task: config.task.title });
|
|
110
|
+
let handle;
|
|
111
|
+
try {
|
|
112
|
+
// Use the injected vault store when available (postgres/sqlite or
|
|
113
|
+
// orchestrator-owned), fall back to file-based
|
|
114
|
+
let vaultStore = deps.vaultStore;
|
|
115
|
+
if (!vaultStore) {
|
|
116
|
+
try {
|
|
117
|
+
vaultStore = new EncryptedVaultStore(config.polpoDir);
|
|
118
|
+
}
|
|
119
|
+
catch { /* vault unavailable */ }
|
|
120
|
+
}
|
|
121
|
+
const memoryStore = deps.memoryStore ?? new FileMemoryStore(config.polpoDir);
|
|
122
|
+
const spawnCtx = {
|
|
123
|
+
polpoDir: config.polpoDir,
|
|
124
|
+
outputDir: config.outputDir,
|
|
125
|
+
emailAllowedDomains: config.emailAllowedDomains,
|
|
126
|
+
reasoning: config.reasoning,
|
|
127
|
+
vaultStore,
|
|
128
|
+
memoryStore,
|
|
129
|
+
// Per-tenant gateway for the in-process host (undefined for subprocess,
|
|
130
|
+
// which resolves the gateway from sandbox env).
|
|
131
|
+
gatewayConfig: deps.gatewayConfig,
|
|
132
|
+
// Subprocess hosts create their own fs/shell; the in-process host
|
|
133
|
+
// injects the orchestrator's instances.
|
|
134
|
+
fs: deps.fs ?? new NodeFileSystem(),
|
|
135
|
+
shell: deps.shell ?? new NodeShell(),
|
|
136
|
+
// Durable turns: resume checkpoint handed over by orphan recovery,
|
|
137
|
+
// and the per-turn checkpoint sink (one RunStore write per turn,
|
|
138
|
+
// best-effort — a flaky store must never fail a healthy run).
|
|
139
|
+
resumeState: config.resumeState,
|
|
140
|
+
onTurnCheckpoint: async (state) => {
|
|
141
|
+
try {
|
|
142
|
+
await runStore.updateResumeState?.(config.runId, state);
|
|
143
|
+
}
|
|
144
|
+
catch { /* best effort */ }
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
handle = spawnLoopEngine(config.agent, config.task, config.cwd, spawnCtx);
|
|
148
|
+
if (config.resumeState) {
|
|
149
|
+
actLog.logEvent("resuming", {
|
|
150
|
+
loopName: config.resumeState.loopName,
|
|
151
|
+
fromTurn: (config.resumeState.turn ?? -1) + 1,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// Propagate the LogStore sessionId onto the agent's activity blob so
|
|
155
|
+
// the poll loop's updateActivity() persists it on every tick. Without
|
|
156
|
+
// this the run record has activity.sessionId = undefined forever, and
|
|
157
|
+
// downstream readers (cloud task-activity endpoint, dashboards) can't
|
|
158
|
+
// resolve the transcript except via fragile time-proximity fallback.
|
|
159
|
+
if (logSession) {
|
|
160
|
+
handle.activity.sessionId = logSession.sessionId;
|
|
161
|
+
}
|
|
162
|
+
// Wire transcript persistence — every agent message gets written to the run log
|
|
163
|
+
handle.onTranscript = (entry) => {
|
|
164
|
+
actLog.logTranscript(entry);
|
|
165
|
+
// Persist transcript to DB when a log session is available
|
|
166
|
+
if (logSession) {
|
|
167
|
+
const event = entry.type === "assistant" ? "transcript:assistant"
|
|
168
|
+
: entry.type === "tool_result" ? "transcript:tool_result"
|
|
169
|
+
: entry.type === "tool_use" ? "transcript:tool_use"
|
|
170
|
+
: `transcript:${entry.type ?? "unknown"}`;
|
|
171
|
+
logSession.append({ ts: new Date().toISOString(), event, data: sanitizeTranscriptEntry(entry) })
|
|
172
|
+
.catch(() => { }); // best-effort, don't block engine
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
actLog.logEvent("spawned");
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
const result = errorResult(err);
|
|
179
|
+
actLog.logEvent("error", { message: result.stderr });
|
|
180
|
+
await runStore.completeRun(config.runId, "failed", result);
|
|
181
|
+
return { status: "failed", result, spawnError: true };
|
|
182
|
+
}
|
|
183
|
+
// Activity polling + persistent logging
|
|
184
|
+
const poll = setInterval(async () => {
|
|
185
|
+
try {
|
|
186
|
+
await runStore.updateActivity(config.runId, handle.activity);
|
|
187
|
+
actLog.logActivity({ ...handle.activity });
|
|
188
|
+
}
|
|
189
|
+
catch { /* DB temporarily locked */
|
|
190
|
+
}
|
|
191
|
+
}, ACTIVITY_POLL_MS);
|
|
192
|
+
// Abort handler: graceful kill (SIGTERM in the subprocess host,
|
|
193
|
+
// spawner.kill()/timeout in the in-process host)
|
|
194
|
+
let aborted = false;
|
|
195
|
+
const onAbort = () => {
|
|
196
|
+
aborted = true;
|
|
197
|
+
actLog.logEvent("sigterm");
|
|
198
|
+
handle.kill();
|
|
199
|
+
};
|
|
200
|
+
if (deps.signal?.aborted)
|
|
201
|
+
onAbort();
|
|
202
|
+
else
|
|
203
|
+
deps.signal?.addEventListener("abort", onAbort, { once: true });
|
|
204
|
+
try {
|
|
205
|
+
const result = await handle.done;
|
|
206
|
+
clearInterval(poll);
|
|
207
|
+
// Final activity + sessionId flush before marking terminal
|
|
208
|
+
try {
|
|
209
|
+
await runStore.updateActivity(config.runId, handle.activity);
|
|
210
|
+
}
|
|
211
|
+
catch { /* best effort */ }
|
|
212
|
+
actLog.logActivity({ ...handle.activity });
|
|
213
|
+
// Store auto-collected outcomes on the run record
|
|
214
|
+
if (handle.outcomes && handle.outcomes.length > 0) {
|
|
215
|
+
try {
|
|
216
|
+
await runStore.updateOutcomes(config.runId, handle.outcomes);
|
|
217
|
+
}
|
|
218
|
+
catch { /* best effort */ }
|
|
219
|
+
actLog.logEvent("outcomes", { count: handle.outcomes.length, types: handle.outcomes.map((o) => o.type) });
|
|
220
|
+
}
|
|
221
|
+
// If we were aborted (timeout/shutdown/kill), force exitCode=1 regardless
|
|
222
|
+
// of what the engine returned — an aborted task is not a successful task.
|
|
223
|
+
if (aborted) {
|
|
224
|
+
result.exitCode = 1;
|
|
225
|
+
result.stderr = (result.stderr ? result.stderr + "\n" : "") + "Killed by SIGTERM (timeout or shutdown)";
|
|
226
|
+
}
|
|
227
|
+
const status = aborted ? "killed" : (result.exitCode === 0 ? "completed" : "failed");
|
|
228
|
+
actLog.logEvent("done", { status, exitCode: result.exitCode, duration: result.duration });
|
|
229
|
+
await runStore.completeRun(config.runId, status, result);
|
|
230
|
+
return { status, result };
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
clearInterval(poll);
|
|
234
|
+
try {
|
|
235
|
+
await runStore.updateActivity(config.runId, handle.activity);
|
|
236
|
+
}
|
|
237
|
+
catch { /* best effort */ }
|
|
238
|
+
actLog.logEvent("error", { message: err instanceof Error ? err.message : String(err) });
|
|
239
|
+
const result = errorResult(err);
|
|
240
|
+
await runStore.completeRun(config.runId, "failed", result);
|
|
241
|
+
return { status: "failed", result };
|
|
242
|
+
}
|
|
243
|
+
finally {
|
|
244
|
+
deps.signal?.removeEventListener("abort", onAbort);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=run-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-lifecycle.js","sourceRoot":"","sources":["../../src/core/run-lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/core/runner.d.ts
CHANGED
|
@@ -3,12 +3,17 @@
|
|
|
3
3
|
* Detached subprocess runner.
|
|
4
4
|
* Spawned by the orchestrator for each agent task.
|
|
5
5
|
* Lifecycle:
|
|
6
|
-
* 1. Read --config <path> from args
|
|
6
|
+
* 1. Read --config <path> from args (or --run-id <id> --db <url> in DB mode)
|
|
7
7
|
* 2. Open own RunStore connection (Drizzle SQLite or PG)
|
|
8
|
-
* 3.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* 3. Delegate the run lifecycle to executeRun() (shared with the
|
|
9
|
+
* InProcessSpawner — see run-lifecycle.ts)
|
|
10
|
+
* 4. Cleanup & exit
|
|
11
|
+
*
|
|
12
|
+
* Exit code contract (unchanged — this file is the cloud sandbox entry,
|
|
13
|
+
* `polpo-ai/dist/core/runner.js`):
|
|
14
|
+
* - exit 1: bad CLI args, unreadable config, engine spawn failure, fatal error
|
|
15
|
+
* - exit 0: everything else — task-level failures are persisted on the
|
|
16
|
+
* run record (status failed/killed), not surfaced as a process error
|
|
12
17
|
*/
|
|
13
18
|
export {};
|
|
14
19
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/core/runner.js
CHANGED
|
@@ -3,23 +3,24 @@
|
|
|
3
3
|
* Detached subprocess runner.
|
|
4
4
|
* Spawned by the orchestrator for each agent task.
|
|
5
5
|
* Lifecycle:
|
|
6
|
-
* 1. Read --config <path> from args
|
|
6
|
+
* 1. Read --config <path> from args (or --run-id <id> --db <url> in DB mode)
|
|
7
7
|
* 2. Open own RunStore connection (Drizzle SQLite or PG)
|
|
8
|
-
* 3.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* 3. Delegate the run lifecycle to executeRun() (shared with the
|
|
9
|
+
* InProcessSpawner — see run-lifecycle.ts)
|
|
10
|
+
* 4. Cleanup & exit
|
|
11
|
+
*
|
|
12
|
+
* Exit code contract (unchanged — this file is the cloud sandbox entry,
|
|
13
|
+
* `polpo-ai/dist/core/runner.js`):
|
|
14
|
+
* - exit 1: bad CLI args, unreadable config, engine spawn failure, fatal error
|
|
15
|
+
* - exit 0: everything else — task-level failures are persisted on the
|
|
16
|
+
* run record (status failed/killed), not surfaced as a process error
|
|
12
17
|
*/
|
|
13
|
-
import { readFileSync, unlinkSync
|
|
18
|
+
import { readFileSync, unlinkSync } from "node:fs";
|
|
14
19
|
import { join } from "node:path";
|
|
15
20
|
import { FileRunStore } from "@polpo-ai/file-stores";
|
|
16
|
-
import { spawnLoopEngine } from "../adapters/loop-engine.js";
|
|
17
|
-
import { sanitizeTranscriptEntry } from "../server/security.js";
|
|
18
|
-
import { EncryptedVaultStore } from "../vault/encrypted-store.js";
|
|
19
|
-
import { FileMemoryStore } from "@polpo-ai/file-stores";
|
|
20
21
|
import { NodeFileSystem } from "../adapters/node-filesystem.js";
|
|
21
22
|
import { NodeShell } from "../adapters/node-shell.js";
|
|
22
|
-
|
|
23
|
+
import { executeRun } from "./run-lifecycle.js";
|
|
23
24
|
function readConfigFromFile() {
|
|
24
25
|
const idx = process.argv.indexOf("--config");
|
|
25
26
|
if (idx < 0 || !process.argv[idx + 1]) {
|
|
@@ -64,45 +65,6 @@ async function readConfigFromDb() {
|
|
|
64
65
|
await sql.end();
|
|
65
66
|
return run.config;
|
|
66
67
|
}
|
|
67
|
-
function errorResult(err) {
|
|
68
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
69
|
-
return { exitCode: 1, stdout: "", stderr: `Runner error: ${msg}`, duration: 0 };
|
|
70
|
-
}
|
|
71
|
-
/** Persistent per-run activity log (JSONL file in .polpo/logs/) */
|
|
72
|
-
class RunActivityLog {
|
|
73
|
-
logPath;
|
|
74
|
-
lastSnapshot = "";
|
|
75
|
-
constructor(polpoDir, runId, taskId, agentName) {
|
|
76
|
-
const logsDir = join(polpoDir, "logs");
|
|
77
|
-
if (!existsSync(logsDir))
|
|
78
|
-
mkdirSync(logsDir, { recursive: true });
|
|
79
|
-
this.logPath = join(logsDir, `run-${runId}.jsonl`);
|
|
80
|
-
// Write header
|
|
81
|
-
this.write({ _run: true, runId, taskId, agentName, startedAt: new Date().toISOString(), pid: process.pid });
|
|
82
|
-
}
|
|
83
|
-
/** Log activity diff — only writes if something changed */
|
|
84
|
-
logActivity(activity) {
|
|
85
|
-
const snapshot = JSON.stringify(activity);
|
|
86
|
-
if (snapshot === this.lastSnapshot)
|
|
87
|
-
return;
|
|
88
|
-
this.lastSnapshot = snapshot;
|
|
89
|
-
this.write({ ts: new Date().toISOString(), event: "activity", data: activity });
|
|
90
|
-
}
|
|
91
|
-
/** Log a transcript entry from the engine (assistant text, tool_use, tool_result, etc.) */
|
|
92
|
-
logTranscript(entry) {
|
|
93
|
-
this.write({ ts: new Date().toISOString(), ...sanitizeTranscriptEntry(entry) });
|
|
94
|
-
}
|
|
95
|
-
/** Log a lifecycle event */
|
|
96
|
-
logEvent(event, data) {
|
|
97
|
-
this.write({ ts: new Date().toISOString(), event, ...(data ? { data } : {}) });
|
|
98
|
-
}
|
|
99
|
-
write(obj) {
|
|
100
|
-
try {
|
|
101
|
-
appendFileSync(this.logPath, JSON.stringify(obj) + "\n", "utf-8");
|
|
102
|
-
}
|
|
103
|
-
catch { /* best effort */ }
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
68
|
async function createStores(config) {
|
|
107
69
|
if (config.storage === "postgres" && config.databaseUrl) {
|
|
108
70
|
const { createPgStores } = await import("@polpo-ai/drizzle");
|
|
@@ -142,150 +104,42 @@ async function main() {
|
|
|
142
104
|
const { setProviderOverrides } = await import("@polpo-ai/llm");
|
|
143
105
|
setProviderOverrides(config.providers);
|
|
144
106
|
}
|
|
145
|
-
const { runStore, logStore, vaultStore
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
updatedAt: now,
|
|
162
|
-
// sessionId starts at the LogStore session we just opened, so the
|
|
163
|
-
// run record is linked to its transcript from the very first poll.
|
|
164
|
-
// Without this, downstream readers (the cloud task-activity endpoint,
|
|
165
|
-
// a future dashboard, anything that joins runs to log sessions) have
|
|
166
|
-
// to guess by time-proximity — fragile on cold sandboxes where the
|
|
167
|
-
// log session is created hundreds of ms before the first stream
|
|
168
|
-
// chunk lands. In file mode this is mostly cosmetic because
|
|
169
|
-
// RunActivityLog writes a parallel JSONL side-channel; in DB mode
|
|
170
|
-
// (cloud) it's the only link that ever gets persisted.
|
|
171
|
-
activity: {
|
|
172
|
-
filesCreated: [], filesEdited: [], toolCalls: 0, totalTokens: 0, lastUpdate: now,
|
|
173
|
-
...(logSessionId ? { sessionId: logSessionId } : {}),
|
|
174
|
-
},
|
|
175
|
-
configPath: isDbMode ? `db://${config.runId}` : join(process.argv[process.argv.indexOf("--config") + 1]),
|
|
176
|
-
};
|
|
177
|
-
// In DB mode, run record already exists (created by spawner) — update it with PID
|
|
178
|
-
await runStore.upsertRun(initialRecord);
|
|
179
|
-
actLog.logEvent("spawning", { task: config.task.title });
|
|
180
|
-
let handle;
|
|
181
|
-
try {
|
|
182
|
-
// Use Drizzle vault store when available (postgres/sqlite), fall back to file-based
|
|
183
|
-
let vaultStore = drizzleVaultStore;
|
|
184
|
-
if (!vaultStore) {
|
|
185
|
-
try {
|
|
186
|
-
vaultStore = new EncryptedVaultStore(config.polpoDir);
|
|
187
|
-
}
|
|
188
|
-
catch { /* vault unavailable */ }
|
|
189
|
-
}
|
|
190
|
-
const memoryStore = drizzleMemoryStore ?? new FileMemoryStore(config.polpoDir);
|
|
191
|
-
const spawnCtx = {
|
|
192
|
-
polpoDir: config.polpoDir,
|
|
193
|
-
outputDir: config.outputDir,
|
|
194
|
-
emailAllowedDomains: config.emailAllowedDomains,
|
|
195
|
-
reasoning: config.reasoning,
|
|
196
|
-
vaultStore,
|
|
197
|
-
memoryStore,
|
|
198
|
-
// Runner is a subprocess — creates its own fs/shell instances
|
|
199
|
-
fs: new NodeFileSystem(),
|
|
200
|
-
shell: new NodeShell(),
|
|
201
|
-
};
|
|
202
|
-
handle = spawnLoopEngine(config.agent, config.task, config.cwd, spawnCtx);
|
|
203
|
-
// Propagate the LogStore sessionId onto the agent's activity blob so
|
|
204
|
-
// the poll loop's updateActivity() persists it on every tick. Without
|
|
205
|
-
// this the run record has activity.sessionId = undefined forever, and
|
|
206
|
-
// downstream readers (cloud task-activity endpoint, dashboards) can't
|
|
207
|
-
// resolve the transcript except via fragile time-proximity fallback.
|
|
208
|
-
if (logSessionId) {
|
|
209
|
-
handle.activity.sessionId = logSessionId;
|
|
210
|
-
}
|
|
211
|
-
// Wire transcript persistence — every agent message gets written to the run log
|
|
212
|
-
handle.onTranscript = (entry) => {
|
|
213
|
-
actLog.logTranscript(entry);
|
|
214
|
-
// Persist transcript to DB when LogStore is available
|
|
215
|
-
if (logStore && logSessionId) {
|
|
216
|
-
const event = entry.type === "assistant" ? "transcript:assistant"
|
|
217
|
-
: entry.type === "tool_result" ? "transcript:tool_result"
|
|
218
|
-
: entry.type === "tool_use" ? "transcript:tool_use"
|
|
219
|
-
: `transcript:${entry.type ?? "unknown"}`;
|
|
220
|
-
logStore.append({ ts: new Date().toISOString(), event, data: sanitizeTranscriptEntry(entry) })
|
|
221
|
-
.catch(() => { }); // best-effort, don't block engine
|
|
107
|
+
const { runStore, logStore, vaultStore, memoryStore } = await createStores(config);
|
|
108
|
+
// SIGTERM handler: graceful kill (executeRun marks the run "killed")
|
|
109
|
+
const abort = new AbortController();
|
|
110
|
+
process.on("SIGTERM", () => abort.abort());
|
|
111
|
+
const configPath = isDbMode
|
|
112
|
+
? `db://${config.runId}`
|
|
113
|
+
: join(process.argv[process.argv.indexOf("--config") + 1]);
|
|
114
|
+
const outcome = await executeRun(config, {
|
|
115
|
+
runStore,
|
|
116
|
+
// The runner owns a private LogStore instance, so a per-run session is
|
|
117
|
+
// simply startSession() on it (postgres/sqlite only — file mode keeps
|
|
118
|
+
// the JSONL activity log as the sole transcript side-channel).
|
|
119
|
+
createLogSession: logStore
|
|
120
|
+
? async () => {
|
|
121
|
+
const sessionId = await logStore.startSession();
|
|
122
|
+
return { sessionId, append: (entry) => logStore.append(entry) };
|
|
222
123
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
124
|
+
: undefined,
|
|
125
|
+
vaultStore,
|
|
126
|
+
memoryStore,
|
|
127
|
+
// Runner is a subprocess — creates its own fs/shell instances
|
|
128
|
+
fs: new NodeFileSystem(),
|
|
129
|
+
shell: new NodeShell(),
|
|
130
|
+
pid: process.pid,
|
|
131
|
+
configPath,
|
|
132
|
+
signal: abort.signal,
|
|
133
|
+
});
|
|
134
|
+
// Engine spawn failure is the one lifecycle path that exits non-zero.
|
|
135
|
+
if (outcome.spawnError) {
|
|
230
136
|
await runStore.close();
|
|
231
137
|
process.exit(1);
|
|
232
138
|
}
|
|
233
|
-
// Activity polling + persistent logging
|
|
234
|
-
const poll = setInterval(async () => {
|
|
235
|
-
try {
|
|
236
|
-
await runStore.updateActivity(config.runId, handle.activity);
|
|
237
|
-
actLog.logActivity({ ...handle.activity });
|
|
238
|
-
}
|
|
239
|
-
catch { /* DB temporarily locked */
|
|
240
|
-
}
|
|
241
|
-
}, ACTIVITY_POLL_MS);
|
|
242
|
-
// SIGTERM handler: graceful kill
|
|
243
|
-
let sigterm = false;
|
|
244
|
-
process.on("SIGTERM", () => {
|
|
245
|
-
sigterm = true;
|
|
246
|
-
actLog.logEvent("sigterm");
|
|
247
|
-
handle.kill();
|
|
248
|
-
});
|
|
249
|
-
try {
|
|
250
|
-
const result = await handle.done;
|
|
251
|
-
clearInterval(poll);
|
|
252
|
-
// Final activity + sessionId flush before marking terminal
|
|
253
|
-
try {
|
|
254
|
-
await runStore.updateActivity(config.runId, handle.activity);
|
|
255
|
-
}
|
|
256
|
-
catch { /* best effort */ }
|
|
257
|
-
actLog.logActivity({ ...handle.activity });
|
|
258
|
-
// Store auto-collected outcomes on the run record
|
|
259
|
-
if (handle.outcomes && handle.outcomes.length > 0) {
|
|
260
|
-
try {
|
|
261
|
-
await runStore.updateOutcomes(config.runId, handle.outcomes);
|
|
262
|
-
}
|
|
263
|
-
catch { /* best effort */ }
|
|
264
|
-
actLog.logEvent("outcomes", { count: handle.outcomes.length, types: handle.outcomes.map((o) => o.type) });
|
|
265
|
-
}
|
|
266
|
-
// If we received SIGTERM (timeout/shutdown), force exitCode=1 regardless of
|
|
267
|
-
// what the engine returned — an aborted task is not a successful task.
|
|
268
|
-
if (sigterm) {
|
|
269
|
-
result.exitCode = 1;
|
|
270
|
-
result.stderr = (result.stderr ? result.stderr + "\n" : "") + "Killed by SIGTERM (timeout or shutdown)";
|
|
271
|
-
}
|
|
272
|
-
const status = sigterm ? "killed" : (result.exitCode === 0 ? "completed" : "failed");
|
|
273
|
-
actLog.logEvent("done", { status, exitCode: result.exitCode, duration: result.duration });
|
|
274
|
-
await runStore.completeRun(config.runId, status, result);
|
|
275
|
-
}
|
|
276
|
-
catch (err) {
|
|
277
|
-
clearInterval(poll);
|
|
278
|
-
try {
|
|
279
|
-
await runStore.updateActivity(config.runId, handle.activity);
|
|
280
|
-
}
|
|
281
|
-
catch { /* best effort */ }
|
|
282
|
-
actLog.logEvent("error", { message: err instanceof Error ? err.message : String(err) });
|
|
283
|
-
await runStore.completeRun(config.runId, "failed", errorResult(err));
|
|
284
|
-
}
|
|
285
139
|
// Cleanup config file (only in file mode, not DB mode)
|
|
286
140
|
if (!isDbMode) {
|
|
287
141
|
try {
|
|
288
|
-
unlinkSync(
|
|
142
|
+
unlinkSync(configPath);
|
|
289
143
|
}
|
|
290
144
|
catch { /* already gone */ }
|
|
291
145
|
}
|
package/dist/core/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export * from "./core/index.js";
|
|
2
2
|
export { FileTaskStore, FileRunStore, JsonTaskStore } from "@polpo-ai/file-stores";
|
|
3
3
|
export { spawnLoopEngine } from "./adapters/loop-engine.js";
|
|
4
|
+
export { NodeSpawner } from "./adapters/node-spawner.js";
|
|
5
|
+
export { InProcessSpawner } from "./adapters/in-process-spawner.js";
|
|
6
|
+
export { CompositeSpawner } from "./adapters/composite-spawner.js";
|
|
7
|
+
export type { InProcessSpawnerDeps } from "./adapters/in-process-spawner.js";
|
|
8
|
+
export { executeRun } from "./core/run-lifecycle.js";
|
|
9
|
+
export type { ExecuteRunDeps, ExecuteRunOutcome, TranscriptSession } from "./core/run-lifecycle.js";
|
|
4
10
|
export { assessTask, runCheck, runMetric } from "./assessment/assessor.js";
|
|
5
11
|
export { runLLMReview, computeWeightedScore, buildRubricSection, DEFAULT_DIMENSIONS, validateReviewPayload, ReviewPayloadSchema, findLogForTask, buildExecutionSummary } from "./assessment/index.js";
|
|
6
12
|
export type { LLMQueryFn } from "./assessment/llm-review.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtM,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1H,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtM,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1H,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,11 @@ export * from "./core/index.js";
|
|
|
5
5
|
export { FileTaskStore, FileRunStore, JsonTaskStore } from "@polpo-ai/file-stores";
|
|
6
6
|
// Engine
|
|
7
7
|
export { spawnLoopEngine } from "./adapters/loop-engine.js";
|
|
8
|
+
// Spawners — subprocess (default) and in-process (settings.taskExecution: "in-process")
|
|
9
|
+
export { NodeSpawner } from "./adapters/node-spawner.js";
|
|
10
|
+
export { InProcessSpawner } from "./adapters/in-process-spawner.js";
|
|
11
|
+
export { CompositeSpawner } from "./adapters/composite-spawner.js";
|
|
12
|
+
export { executeRun } from "./core/run-lifecycle.js";
|
|
8
13
|
// Assessment
|
|
9
14
|
export { assessTask, runCheck, runMetric } from "./assessment/assessor.js";
|
|
10
15
|
export { runLLMReview, computeWeightedScore, buildRubricSection, DEFAULT_DIMENSIONS, validateReviewPayload, ReviewPayloadSchema, findLogForTask, buildExecutionSummary } from "./assessment/index.js";
|