@junctionpanel/server 0.1.82 → 0.1.84
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/server/client/daemon-client.d.ts +10 -0
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +58 -0
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/agent-checkpoint-storage.d.ts +126 -0
- package/dist/server/server/agent/agent-checkpoint-storage.d.ts.map +1 -0
- package/dist/server/server/agent/agent-checkpoint-storage.js +203 -0
- package/dist/server/server/agent/agent-checkpoint-storage.js.map +1 -0
- package/dist/server/server/agent/agent-manager.d.ts +12 -0
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +276 -3
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
- package/dist/server/server/agent/agent-projections.js +5 -0
- package/dist/server/server/agent/agent-projections.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +2 -2
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
- package/dist/server/server/agent/agent-storage.d.ts +42 -42
- package/dist/server/server/agent/harness/context.d.ts +2 -1
- package/dist/server/server/agent/harness/context.d.ts.map +1 -1
- package/dist/server/server/agent/harness/context.js +44 -0
- package/dist/server/server/agent/harness/context.js.map +1 -1
- package/dist/server/server/agent/harness/memory.d.ts.map +1 -1
- package/dist/server/server/agent/harness/memory.js +38 -8
- package/dist/server/server/agent/harness/memory.js.map +1 -1
- package/dist/server/server/agent/harness/types.d.ts +66 -2
- package/dist/server/server/agent/harness/types.d.ts.map +1 -1
- package/dist/server/server/agent/harness/types.js +1 -1
- package/dist/server/server/agent/harness/types.js.map +1 -1
- package/dist/server/server/agent/providers/gemini-agent.js +2 -1
- package/dist/server/server/agent/providers/gemini-agent.js.map +1 -1
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +2 -2
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
- package/dist/server/server/bootstrap.d.ts +1 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +4 -0
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/config.d.ts.map +1 -1
- package/dist/server/server/config.js +1 -0
- package/dist/server/server/config.js.map +1 -1
- package/dist/server/server/exports.d.ts +1 -0
- package/dist/server/server/exports.d.ts.map +1 -1
- package/dist/server/server/exports.js +1 -0
- package/dist/server/server/exports.js.map +1 -1
- package/dist/server/server/persisted-config.d.ts +6 -6
- package/dist/server/server/session.d.ts +2 -0
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +94 -0
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/shared/messages.d.ts +9700 -6855
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +115 -0
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/shared/switchboard.d.ts +174 -0
- package/dist/server/shared/switchboard.d.ts.map +1 -0
- package/dist/server/shared/switchboard.js +172 -0
- package/dist/server/shared/switchboard.js.map +1 -0
- package/dist/server/utils/worktree-metadata.d.ts +6 -6
- package/package.json +2 -2
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { promisify } from "node:util";
|
|
2
|
+
import { execFile } from "node:child_process";
|
|
3
|
+
import { promises as fs } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
7
|
+
const CheckpointWorkspaceEntrySchema = z.object({
|
|
8
|
+
path: z.string(),
|
|
9
|
+
state: z.enum(["present", "deleted"]),
|
|
10
|
+
contentBase64: z.string().optional(),
|
|
11
|
+
mode: z.number().int().nonnegative().optional(),
|
|
12
|
+
});
|
|
13
|
+
const AgentCheckpointRecordSchema = z.object({
|
|
14
|
+
id: z.string(),
|
|
15
|
+
agentId: z.string(),
|
|
16
|
+
provider: z.string(),
|
|
17
|
+
cwd: z.string(),
|
|
18
|
+
repoRoot: z.string(),
|
|
19
|
+
headCommit: z.string(),
|
|
20
|
+
createdAt: z.string(),
|
|
21
|
+
kind: z.enum(["pre_mutation", "turn_final"]),
|
|
22
|
+
objective: z.string(),
|
|
23
|
+
summary: z.string().nullable(),
|
|
24
|
+
changedFiles: z.array(z.string()),
|
|
25
|
+
restorable: z.boolean(),
|
|
26
|
+
turnStartSeq: z.number().int().nonnegative(),
|
|
27
|
+
turnEndSeq: z.number().int().nonnegative(),
|
|
28
|
+
workspaceEntries: z.array(CheckpointWorkspaceEntrySchema),
|
|
29
|
+
harness: z.record(z.unknown()),
|
|
30
|
+
});
|
|
31
|
+
async function execGit(cwd, args) {
|
|
32
|
+
const { stdout } = await execFileAsync("git", args, { cwd, maxBuffer: 16 * 1024 * 1024 });
|
|
33
|
+
return stdout;
|
|
34
|
+
}
|
|
35
|
+
async function pathExists(filePath) {
|
|
36
|
+
try {
|
|
37
|
+
await fs.access(filePath);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function uniqueSorted(values) {
|
|
45
|
+
return Array.from(new Set(values)).sort((left, right) => left.localeCompare(right));
|
|
46
|
+
}
|
|
47
|
+
async function listWorkspaceCandidatePaths(repoRoot) {
|
|
48
|
+
const dirtyTrackedOutput = await execGit(repoRoot, ["diff", "--name-only", "-z", "HEAD", "--"]);
|
|
49
|
+
const untrackedOutput = await execGit(repoRoot, ["ls-files", "--others", "--exclude-standard", "-z"]);
|
|
50
|
+
return uniqueSorted([...dirtyTrackedOutput.split("\u0000"), ...untrackedOutput.split("\u0000")].filter(Boolean));
|
|
51
|
+
}
|
|
52
|
+
async function collectWorkspaceSnapshotEntries(cwd) {
|
|
53
|
+
const repoRoot = (await execGit(cwd, ["rev-parse", "--show-toplevel"])).trim();
|
|
54
|
+
const headCommit = (await execGit(repoRoot, ["rev-parse", "HEAD"])).trim();
|
|
55
|
+
const candidatePaths = await listWorkspaceCandidatePaths(repoRoot);
|
|
56
|
+
const entries = [];
|
|
57
|
+
for (const relativePath of candidatePaths) {
|
|
58
|
+
const absolutePath = path.join(repoRoot, relativePath);
|
|
59
|
+
if (await pathExists(absolutePath)) {
|
|
60
|
+
const content = await fs.readFile(absolutePath);
|
|
61
|
+
const stats = await fs.stat(absolutePath);
|
|
62
|
+
entries.push({
|
|
63
|
+
path: relativePath,
|
|
64
|
+
state: "present",
|
|
65
|
+
contentBase64: content.toString("base64"),
|
|
66
|
+
mode: stats.mode & 0o777,
|
|
67
|
+
});
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
entries.push({
|
|
71
|
+
path: relativePath,
|
|
72
|
+
state: "deleted",
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
repoRoot,
|
|
77
|
+
headCommit,
|
|
78
|
+
entries,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async function gitPathExistsAtCommit(repoRoot, commit, relativePath) {
|
|
82
|
+
try {
|
|
83
|
+
await execGit(repoRoot, ["cat-file", "-e", `${commit}:${relativePath}`]);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function restoreFileFromCommit(repoRoot, commit, relativePath) {
|
|
91
|
+
await execGit(repoRoot, ["restore", "--source", commit, "--worktree", "--", relativePath]);
|
|
92
|
+
}
|
|
93
|
+
async function removeFileIfPresent(filePath) {
|
|
94
|
+
await fs.rm(filePath, { recursive: true, force: true });
|
|
95
|
+
}
|
|
96
|
+
export class AgentCheckpointStorage {
|
|
97
|
+
constructor(baseDir, logger) {
|
|
98
|
+
this.baseDir = baseDir;
|
|
99
|
+
this.logger = logger.child({ module: "agent", component: "agent-checkpoint-storage" });
|
|
100
|
+
}
|
|
101
|
+
async capture(input) {
|
|
102
|
+
const workspace = await collectWorkspaceSnapshotEntries(input.cwd);
|
|
103
|
+
this.logger.debug({ agentId: input.agentId, checkpointId: input.id, kind: input.kind }, "Capturing Junction harness checkpoint");
|
|
104
|
+
const record = {
|
|
105
|
+
id: input.id,
|
|
106
|
+
agentId: input.agentId,
|
|
107
|
+
provider: input.provider,
|
|
108
|
+
cwd: input.cwd,
|
|
109
|
+
repoRoot: workspace.repoRoot,
|
|
110
|
+
headCommit: workspace.headCommit,
|
|
111
|
+
createdAt: new Date().toISOString(),
|
|
112
|
+
kind: input.kind,
|
|
113
|
+
objective: input.objective,
|
|
114
|
+
summary: input.summary,
|
|
115
|
+
changedFiles: [...input.changedFiles],
|
|
116
|
+
restorable: true,
|
|
117
|
+
turnStartSeq: input.turnStartSeq,
|
|
118
|
+
turnEndSeq: input.turnEndSeq,
|
|
119
|
+
workspaceEntries: workspace.entries,
|
|
120
|
+
harness: input.harness,
|
|
121
|
+
};
|
|
122
|
+
await this.put(record);
|
|
123
|
+
return record;
|
|
124
|
+
}
|
|
125
|
+
async list(agentId) {
|
|
126
|
+
const agentDir = path.join(this.baseDir, agentId);
|
|
127
|
+
if (!(await pathExists(agentDir))) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
const files = (await fs.readdir(agentDir))
|
|
131
|
+
.filter((entry) => entry.endsWith(".json"))
|
|
132
|
+
.sort((left, right) => right.localeCompare(left));
|
|
133
|
+
const records = await Promise.all(files.map(async (entry) => {
|
|
134
|
+
const raw = JSON.parse(await fs.readFile(path.join(agentDir, entry), "utf8"));
|
|
135
|
+
const parsed = AgentCheckpointRecordSchema.parse(raw);
|
|
136
|
+
return parsed;
|
|
137
|
+
}));
|
|
138
|
+
return records.sort((left, right) => right.createdAt.localeCompare(left.createdAt));
|
|
139
|
+
}
|
|
140
|
+
async get(agentId, checkpointId) {
|
|
141
|
+
const filePath = this.getRecordPath(agentId, checkpointId);
|
|
142
|
+
if (!(await pathExists(filePath))) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const raw = JSON.parse(await fs.readFile(filePath, "utf8"));
|
|
146
|
+
return AgentCheckpointRecordSchema.parse(raw);
|
|
147
|
+
}
|
|
148
|
+
async put(record) {
|
|
149
|
+
const filePath = this.getRecordPath(record.agentId, record.id);
|
|
150
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
151
|
+
await fs.writeFile(filePath, JSON.stringify(record, null, 2), "utf8");
|
|
152
|
+
}
|
|
153
|
+
async restore(record) {
|
|
154
|
+
this.logger.debug({ agentId: record.agentId, checkpointId: record.id, kind: record.kind }, "Restoring Junction harness checkpoint");
|
|
155
|
+
const currentHeadCommit = (await execGit(record.repoRoot, ["rev-parse", "HEAD"])).trim();
|
|
156
|
+
if (currentHeadCommit !== record.headCommit) {
|
|
157
|
+
throw new Error(`Checkpoint ${record.id} was created on ${record.headCommit}, but the workspace is now at ${currentHeadCommit}.`);
|
|
158
|
+
}
|
|
159
|
+
const candidatePaths = uniqueSorted([
|
|
160
|
+
...(await listWorkspaceCandidatePaths(record.repoRoot)),
|
|
161
|
+
...record.workspaceEntries.map((entry) => entry.path),
|
|
162
|
+
].filter(Boolean));
|
|
163
|
+
const entriesByPath = new Map(record.workspaceEntries.map((entry) => [entry.path, entry]));
|
|
164
|
+
for (const relativePath of candidatePaths) {
|
|
165
|
+
const absolutePath = path.join(record.repoRoot, relativePath);
|
|
166
|
+
const entry = entriesByPath.get(relativePath) ?? null;
|
|
167
|
+
if (entry?.state === "present" && entry.contentBase64) {
|
|
168
|
+
await fs.mkdir(path.dirname(absolutePath), { recursive: true });
|
|
169
|
+
await fs.writeFile(absolutePath, Buffer.from(entry.contentBase64, "base64"));
|
|
170
|
+
if (typeof entry.mode === "number") {
|
|
171
|
+
await fs.chmod(absolutePath, entry.mode);
|
|
172
|
+
}
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (entry?.state === "deleted") {
|
|
176
|
+
await removeFileIfPresent(absolutePath);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (await gitPathExistsAtCommit(record.repoRoot, record.headCommit, relativePath)) {
|
|
180
|
+
await restoreFileFromCommit(record.repoRoot, record.headCommit, relativePath);
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
await removeFileIfPresent(absolutePath);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
toSummary(record) {
|
|
187
|
+
return {
|
|
188
|
+
id: record.id,
|
|
189
|
+
kind: record.kind,
|
|
190
|
+
createdAt: record.createdAt,
|
|
191
|
+
objective: record.objective,
|
|
192
|
+
summary: record.summary,
|
|
193
|
+
changedFiles: [...record.changedFiles],
|
|
194
|
+
restorable: record.restorable,
|
|
195
|
+
turnStartSeq: record.turnStartSeq,
|
|
196
|
+
turnEndSeq: record.turnEndSeq,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
getRecordPath(agentId, checkpointId) {
|
|
200
|
+
return path.join(this.baseDir, agentId, `${checkpointId}.json`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=agent-checkpoint-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-checkpoint-storage.js","sourceRoot":"","sources":["../../../../src/server/agent/agent-checkpoint-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AGENT_LIFECYCLE_STATUSES, type AgentLifecycleStatus } from "../../shared/agent-lifecycle.js";
|
|
2
2
|
import type { Logger } from "pino";
|
|
3
3
|
import type { AgentCapabilityFlags, AgentClient, AgentSlashCommand, AgentMode, AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentPromptInput, AgentProvider, AgentRunOptions, AgentRunResult, AgentSession, AgentSessionConfig, AgentStreamEvent, AgentTimelineItem, AgentTimelineImageAttachment, AgentUsage, AgentRuntimeInfo, ListPersistedAgentsOptions, ReadPersistedAgentOptions, PersistedAgentDescriptor } from "./agent-sdk-types.js";
|
|
4
|
+
import { AgentCheckpointStorage } from "./agent-checkpoint-storage.js";
|
|
4
5
|
import type { AgentStorage } from "./agent-storage.js";
|
|
6
|
+
import type { HarnessCheckpointSummary } from "./harness/types.js";
|
|
5
7
|
export { AGENT_LIFECYCLE_STATUSES, type AgentLifecycleStatus };
|
|
6
8
|
export type AgentManagerEvent = {
|
|
7
9
|
type: "agent_state";
|
|
@@ -36,6 +38,7 @@ export type AgentManagerOptions = {
|
|
|
36
38
|
maxTimelineItems?: number;
|
|
37
39
|
idFactory?: () => string;
|
|
38
40
|
registry?: AgentStorage;
|
|
41
|
+
checkpointStorage?: AgentCheckpointStorage;
|
|
39
42
|
onAgentAttention?: AgentAttentionCallback;
|
|
40
43
|
logger: Logger;
|
|
41
44
|
};
|
|
@@ -161,6 +164,7 @@ export declare class AgentManager {
|
|
|
161
164
|
private readonly maxTimelineItems;
|
|
162
165
|
private readonly idFactory;
|
|
163
166
|
private readonly registry?;
|
|
167
|
+
private readonly checkpointStorage?;
|
|
164
168
|
private readonly previousStatuses;
|
|
165
169
|
private readonly suppressedPermissionAttentionKeys;
|
|
166
170
|
private readonly pendingUserInterruptAgents;
|
|
@@ -305,8 +309,16 @@ export declare class AgentManager {
|
|
|
305
309
|
private dispatch;
|
|
306
310
|
private normalizeConfig;
|
|
307
311
|
private resolveRunOptions;
|
|
312
|
+
private recordHarnessEvent;
|
|
313
|
+
private upsertCheckpointSummary;
|
|
314
|
+
private deriveHarnessWorkers;
|
|
315
|
+
private captureCheckpoint;
|
|
316
|
+
private publishCapturedCheckpoint;
|
|
317
|
+
private isLiveAgent;
|
|
308
318
|
private prepareHarnessForRun;
|
|
309
319
|
private finalizeHarnessTurn;
|
|
320
|
+
listAgentCheckpoints(agentId: string): Promise<HarnessCheckpointSummary[]>;
|
|
321
|
+
restoreAgentCheckpoint(agentId: string, checkpointId: string): Promise<ManagedAgent>;
|
|
310
322
|
private requireClient;
|
|
311
323
|
private requireAgent;
|
|
312
324
|
private startLiveEventPump;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-manager.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/agent-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-manager.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/agent-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -225,6 +225,7 @@ export class AgentManager {
|
|
|
225
225
|
: null;
|
|
226
226
|
this.idFactory = options?.idFactory ?? (() => randomUUID());
|
|
227
227
|
this.registry = options?.registry;
|
|
228
|
+
this.checkpointStorage = options?.checkpointStorage;
|
|
228
229
|
this.onAgentAttention = options?.onAgentAttention;
|
|
229
230
|
this.logger = options.logger.child({ module: "agent", component: "agent-manager" });
|
|
230
231
|
if (options?.clients) {
|
|
@@ -2174,6 +2175,122 @@ export class AgentManager {
|
|
|
2174
2175
|
},
|
|
2175
2176
|
};
|
|
2176
2177
|
}
|
|
2178
|
+
recordHarnessEvent(agent, input) {
|
|
2179
|
+
const item = {
|
|
2180
|
+
type: "harness_event",
|
|
2181
|
+
kind: input.kind,
|
|
2182
|
+
summary: input.summary,
|
|
2183
|
+
...(input.checkpointId !== undefined ? { checkpointId: input.checkpointId } : {}),
|
|
2184
|
+
...(input.verificationState !== undefined
|
|
2185
|
+
? { verificationState: input.verificationState }
|
|
2186
|
+
: {}),
|
|
2187
|
+
...(input.trustState !== undefined ? { trustState: input.trustState } : {}),
|
|
2188
|
+
...(input.workerId !== undefined ? { workerId: input.workerId } : {}),
|
|
2189
|
+
...(input.details ? { details: input.details } : {}),
|
|
2190
|
+
};
|
|
2191
|
+
const row = this.recordTimeline(agent, item);
|
|
2192
|
+
this.dispatchStream(agent.id, { type: "timeline", provider: agent.provider, item }, {
|
|
2193
|
+
seq: row.seq,
|
|
2194
|
+
epoch: this.ensureTimelineState(agent).epoch,
|
|
2195
|
+
});
|
|
2196
|
+
}
|
|
2197
|
+
upsertCheckpointSummary(existing, summary) {
|
|
2198
|
+
return [summary, ...(existing ?? []).filter((entry) => entry.id !== summary.id)].slice(0, 50);
|
|
2199
|
+
}
|
|
2200
|
+
deriveHarnessWorkers(agent, turnRows, objective, timestamp) {
|
|
2201
|
+
const workers = {
|
|
2202
|
+
...(getHarnessSessionExtra(agent.config)?.workers ?? {}),
|
|
2203
|
+
};
|
|
2204
|
+
for (const row of turnRows) {
|
|
2205
|
+
const item = row.item;
|
|
2206
|
+
if (item.type !== "tool_call" || item.detail.type !== "sub_agent") {
|
|
2207
|
+
continue;
|
|
2208
|
+
}
|
|
2209
|
+
const existing = workers[item.callId];
|
|
2210
|
+
const nextStatus = item.status === "running"
|
|
2211
|
+
? "running"
|
|
2212
|
+
: item.status === "completed"
|
|
2213
|
+
? existing?.status === "integrated"
|
|
2214
|
+
? "integrated"
|
|
2215
|
+
: "completed"
|
|
2216
|
+
: "failed";
|
|
2217
|
+
workers[item.callId] = {
|
|
2218
|
+
id: item.callId,
|
|
2219
|
+
provider: agent.provider,
|
|
2220
|
+
threadId: null,
|
|
2221
|
+
parentAgentId: agent.id,
|
|
2222
|
+
purpose: item.detail.description?.trim() ||
|
|
2223
|
+
item.detail.subAgentType?.trim() ||
|
|
2224
|
+
"Sub-agent task",
|
|
2225
|
+
owner: objective,
|
|
2226
|
+
status: nextStatus,
|
|
2227
|
+
outputSummary: item.detail.actions[item.detail.actions.length - 1]?.summary ??
|
|
2228
|
+
item.detail.description ??
|
|
2229
|
+
existing?.outputSummary ??
|
|
2230
|
+
null,
|
|
2231
|
+
changedFiles: existing?.changedFiles ?? [],
|
|
2232
|
+
verificationState: existing?.verificationState ?? "not_needed",
|
|
2233
|
+
integratedAt: existing?.integratedAt ?? null,
|
|
2234
|
+
lastUpdatedAt: timestamp,
|
|
2235
|
+
};
|
|
2236
|
+
}
|
|
2237
|
+
return workers;
|
|
2238
|
+
}
|
|
2239
|
+
async captureCheckpoint(agent, input) {
|
|
2240
|
+
if (!this.checkpointStorage) {
|
|
2241
|
+
return null;
|
|
2242
|
+
}
|
|
2243
|
+
const harness = input.harnessSnapshot ?? getHarnessSessionExtra(agent.config);
|
|
2244
|
+
if (!harness) {
|
|
2245
|
+
return null;
|
|
2246
|
+
}
|
|
2247
|
+
try {
|
|
2248
|
+
return await this.checkpointStorage.capture({
|
|
2249
|
+
agentId: agent.id,
|
|
2250
|
+
provider: agent.provider,
|
|
2251
|
+
cwd: agent.cwd,
|
|
2252
|
+
id: input.id,
|
|
2253
|
+
kind: input.kind,
|
|
2254
|
+
objective: input.objective,
|
|
2255
|
+
summary: input.summary,
|
|
2256
|
+
changedFiles: input.changedFiles,
|
|
2257
|
+
turnStartSeq: input.turnStartSeq,
|
|
2258
|
+
turnEndSeq: input.turnEndSeq,
|
|
2259
|
+
harness,
|
|
2260
|
+
});
|
|
2261
|
+
}
|
|
2262
|
+
catch (error) {
|
|
2263
|
+
this.logger.warn({ err: error, agentId: agent.id, checkpointId: input.id }, "Failed to capture Junction harness checkpoint");
|
|
2264
|
+
return null;
|
|
2265
|
+
}
|
|
2266
|
+
}
|
|
2267
|
+
publishCapturedCheckpoint(agent, summary, input) {
|
|
2268
|
+
const current = getHarnessSessionExtra(agent.config);
|
|
2269
|
+
if (!current) {
|
|
2270
|
+
return;
|
|
2271
|
+
}
|
|
2272
|
+
const extraPatch = input.onSetExtra?.(current);
|
|
2273
|
+
setHarnessSessionExtra(agent.config, {
|
|
2274
|
+
...extraPatch,
|
|
2275
|
+
checkpoints: this.upsertCheckpointSummary(current.checkpoints, summary),
|
|
2276
|
+
lastCheckpointId: summary.id,
|
|
2277
|
+
});
|
|
2278
|
+
this.recordHarnessEvent(agent, {
|
|
2279
|
+
kind: "checkpoint_created",
|
|
2280
|
+
summary: input.eventSummary,
|
|
2281
|
+
checkpointId: summary.id,
|
|
2282
|
+
details: input.details,
|
|
2283
|
+
});
|
|
2284
|
+
this.touchUpdatedAt(agent);
|
|
2285
|
+
this.emitState(agent);
|
|
2286
|
+
const persistTask = this.persistSnapshot(agent).catch((error) => {
|
|
2287
|
+
this.logger.warn({ err: error, agentId: agent.id, checkpointId: summary.id }, "Failed to persist snapshot after publishing Junction harness checkpoint");
|
|
2288
|
+
});
|
|
2289
|
+
this.trackBackgroundTask(persistTask);
|
|
2290
|
+
}
|
|
2291
|
+
isLiveAgent(agent) {
|
|
2292
|
+
return this.agents.get(agent.id) === agent;
|
|
2293
|
+
}
|
|
2177
2294
|
async prepareHarnessForRun(agent, prompt) {
|
|
2178
2295
|
const providerInstructionStrategy = resolveProviderInstructionStrategy(agent.provider);
|
|
2179
2296
|
try {
|
|
@@ -2182,8 +2299,11 @@ export class AgentManager {
|
|
|
2182
2299
|
prompt,
|
|
2183
2300
|
providerInstructionStrategy,
|
|
2184
2301
|
});
|
|
2302
|
+
const previousHarnessExtra = getHarnessSessionExtra(agent.config);
|
|
2303
|
+
const turnStartSeq = this.ensureTimelineState(agent).nextSeq;
|
|
2185
2304
|
const compiledSystemPrompt = compileHarnessSystemPrompt(context);
|
|
2186
2305
|
applyHarnessSystemPrompt(agent.config, compiledSystemPrompt);
|
|
2306
|
+
const startedAt = new Date().toISOString();
|
|
2187
2307
|
setHarnessSessionExtra(agent.config, {
|
|
2188
2308
|
workspaceSynopsis: context.workspaceSynopsis,
|
|
2189
2309
|
trustState: context.trustState,
|
|
@@ -2193,10 +2313,55 @@ export class AgentManager {
|
|
|
2193
2313
|
currentTurn: {
|
|
2194
2314
|
classification: context.classification,
|
|
2195
2315
|
objective: context.objective,
|
|
2196
|
-
turnStartSeq
|
|
2197
|
-
startedAt
|
|
2316
|
+
turnStartSeq,
|
|
2317
|
+
startedAt,
|
|
2198
2318
|
},
|
|
2199
2319
|
});
|
|
2320
|
+
if (previousHarnessExtra?.trustState !== context.trustState) {
|
|
2321
|
+
this.recordHarnessEvent(agent, {
|
|
2322
|
+
kind: "trust_changed",
|
|
2323
|
+
summary: `Trust state is now ${context.trustState}.`,
|
|
2324
|
+
trustState: context.trustState,
|
|
2325
|
+
});
|
|
2326
|
+
}
|
|
2327
|
+
if (this.checkpointStorage &&
|
|
2328
|
+
(context.classification === "implement" ||
|
|
2329
|
+
context.classification === "debug" ||
|
|
2330
|
+
context.classification === "review")) {
|
|
2331
|
+
const checkpointId = this.idFactory();
|
|
2332
|
+
const record = await this.captureCheckpoint(agent, {
|
|
2333
|
+
id: checkpointId,
|
|
2334
|
+
kind: "pre_mutation",
|
|
2335
|
+
objective: context.objective,
|
|
2336
|
+
summary: "Pre-mutation checkpoint",
|
|
2337
|
+
changedFiles: [],
|
|
2338
|
+
turnStartSeq,
|
|
2339
|
+
turnEndSeq: turnStartSeq,
|
|
2340
|
+
});
|
|
2341
|
+
if (record) {
|
|
2342
|
+
this.publishCapturedCheckpoint(agent, this.checkpointStorage.toSummary(record), {
|
|
2343
|
+
eventSummary: "Created a pre-mutation checkpoint.",
|
|
2344
|
+
details: {
|
|
2345
|
+
checkpointKind: "pre_mutation",
|
|
2346
|
+
turnStartSeq,
|
|
2347
|
+
},
|
|
2348
|
+
onSetExtra: (current) => ({
|
|
2349
|
+
currentTurn: current?.currentTurn
|
|
2350
|
+
? {
|
|
2351
|
+
...current.currentTurn,
|
|
2352
|
+
preMutationCheckpointId: checkpointId,
|
|
2353
|
+
}
|
|
2354
|
+
: {
|
|
2355
|
+
classification: context.classification,
|
|
2356
|
+
objective: context.objective,
|
|
2357
|
+
turnStartSeq,
|
|
2358
|
+
startedAt,
|
|
2359
|
+
preMutationCheckpointId: checkpointId,
|
|
2360
|
+
},
|
|
2361
|
+
}),
|
|
2362
|
+
});
|
|
2363
|
+
}
|
|
2364
|
+
}
|
|
2200
2365
|
}
|
|
2201
2366
|
catch (error) {
|
|
2202
2367
|
this.logger.warn({ err: error, agentId: agent.id, provider: agent.provider }, "Failed to prepare Junction harness context; continuing with provider defaults");
|
|
@@ -2239,21 +2404,129 @@ export class AgentManager {
|
|
|
2239
2404
|
turnEndSeq: turnRows.length > 0 ? turnRows[turnRows.length - 1].seq : currentTurn.turnStartSeq,
|
|
2240
2405
|
timestamp,
|
|
2241
2406
|
});
|
|
2407
|
+
const nextWorkers = this.deriveHarnessWorkers(agent, turnRows, currentTurn.objective, timestamp);
|
|
2242
2408
|
const sessionState = updateSessionState(harnessExtra?.sessionState ?? null, turnSummary, {
|
|
2243
2409
|
modeId: agent.currentModeId ?? null,
|
|
2244
2410
|
modelId: agent.runtimeInfo?.model ?? agent.config.model ?? null,
|
|
2245
2411
|
thinkingOptionId: agent.runtimeInfo?.thinkingOptionId ?? agent.config.thinkingOptionId ?? null,
|
|
2246
2412
|
});
|
|
2247
|
-
|
|
2413
|
+
const nextExtra = {
|
|
2248
2414
|
...harnessExtra,
|
|
2249
2415
|
sessionState,
|
|
2416
|
+
workers: nextWorkers,
|
|
2250
2417
|
lastTurnSummary: turnSummary,
|
|
2251
2418
|
lastValidatedAt: turnSummary.lastSuccessfulValidation?.timestamp ?? harnessExtra?.lastValidatedAt ?? null,
|
|
2252
2419
|
currentTurn: undefined,
|
|
2253
2420
|
harnessVersion: JUNCTION_HARNESS_VERSION,
|
|
2254
2421
|
providerInstructionStrategy: harnessExtra?.providerInstructionStrategy ??
|
|
2255
2422
|
resolveProviderInstructionStrategy(agent.provider),
|
|
2423
|
+
};
|
|
2424
|
+
if (harnessExtra?.sessionState?.verificationState !== sessionState.verificationState) {
|
|
2425
|
+
this.recordHarnessEvent(agent, {
|
|
2426
|
+
kind: "verification_changed",
|
|
2427
|
+
summary: `Verification is now ${sessionState.verificationState}.`,
|
|
2428
|
+
verificationState: sessionState.verificationState,
|
|
2429
|
+
details: {
|
|
2430
|
+
nextRequiredAction: sessionState.nextRequiredAction,
|
|
2431
|
+
},
|
|
2432
|
+
});
|
|
2433
|
+
}
|
|
2434
|
+
const previousWorkerKeys = Object.keys(harnessExtra?.workers ?? {}).sort();
|
|
2435
|
+
const nextWorkerKeys = Object.keys(nextWorkers).sort();
|
|
2436
|
+
if (!isDeepStrictEqual(previousWorkerKeys, nextWorkerKeys)) {
|
|
2437
|
+
for (const workerId of nextWorkerKeys.filter((workerId) => !previousWorkerKeys.includes(workerId))) {
|
|
2438
|
+
this.recordHarnessEvent(agent, {
|
|
2439
|
+
kind: "worker_updated",
|
|
2440
|
+
summary: `Tracked worker ${nextWorkers[workerId]?.purpose ?? workerId}.`,
|
|
2441
|
+
workerId,
|
|
2442
|
+
details: {
|
|
2443
|
+
status: nextWorkers[workerId]?.status ?? null,
|
|
2444
|
+
},
|
|
2445
|
+
});
|
|
2446
|
+
}
|
|
2447
|
+
}
|
|
2448
|
+
if (this.checkpointStorage && turnSummary.changedFiles.length > 0) {
|
|
2449
|
+
const checkpointId = this.idFactory();
|
|
2450
|
+
const task = this.captureCheckpoint(agent, {
|
|
2451
|
+
id: checkpointId,
|
|
2452
|
+
kind: "turn_final",
|
|
2453
|
+
objective: currentTurn.objective,
|
|
2454
|
+
summary: turnSummary.uiSummary,
|
|
2455
|
+
changedFiles: turnSummary.changedFiles,
|
|
2456
|
+
turnStartSeq: turnSummary.turnStartSeq,
|
|
2457
|
+
turnEndSeq: turnSummary.turnEndSeq,
|
|
2458
|
+
harnessSnapshot: nextExtra,
|
|
2459
|
+
}).then((record) => {
|
|
2460
|
+
if (!record) {
|
|
2461
|
+
return;
|
|
2462
|
+
}
|
|
2463
|
+
if (!this.isLiveAgent(agent)) {
|
|
2464
|
+
return;
|
|
2465
|
+
}
|
|
2466
|
+
this.publishCapturedCheckpoint(agent, this.checkpointStorage.toSummary(record), {
|
|
2467
|
+
eventSummary: "Created a restorable checkpoint for this completed turn.",
|
|
2468
|
+
details: {
|
|
2469
|
+
checkpointKind: "turn_final",
|
|
2470
|
+
turnEndSeq: turnSummary.turnEndSeq,
|
|
2471
|
+
changedFiles: turnSummary.changedFiles,
|
|
2472
|
+
},
|
|
2473
|
+
});
|
|
2474
|
+
});
|
|
2475
|
+
this.trackBackgroundTask(task);
|
|
2476
|
+
}
|
|
2477
|
+
setHarnessSessionExtra(agent.config, nextExtra);
|
|
2478
|
+
}
|
|
2479
|
+
async listAgentCheckpoints(agentId) {
|
|
2480
|
+
if (!this.checkpointStorage) {
|
|
2481
|
+
return [];
|
|
2482
|
+
}
|
|
2483
|
+
return (await this.checkpointStorage.list(agentId)).map((record) => this.checkpointStorage.toSummary(record));
|
|
2484
|
+
}
|
|
2485
|
+
async restoreAgentCheckpoint(agentId, checkpointId) {
|
|
2486
|
+
if (!this.checkpointStorage) {
|
|
2487
|
+
throw new Error("Checkpoint storage is not configured.");
|
|
2488
|
+
}
|
|
2489
|
+
const agent = this.requireAgent(agentId);
|
|
2490
|
+
if (agent.lifecycle === "running" || agent.pendingRun) {
|
|
2491
|
+
await this.cancelAgentRun(agentId);
|
|
2492
|
+
}
|
|
2493
|
+
const record = await this.checkpointStorage.get(agentId, checkpointId);
|
|
2494
|
+
if (!record) {
|
|
2495
|
+
throw new Error(`Checkpoint not found: ${checkpointId}`);
|
|
2496
|
+
}
|
|
2497
|
+
await this.checkpointStorage.restore(record);
|
|
2498
|
+
agent.config.systemPrompt = record.harness.baseSystemPrompt?.trim() || undefined;
|
|
2499
|
+
setHarnessSessionExtra(agent.config, {
|
|
2500
|
+
...record.harness,
|
|
2501
|
+
currentTurn: undefined,
|
|
2502
|
+
checkpoints: this.upsertCheckpointSummary(record.harness.checkpoints, {
|
|
2503
|
+
id: record.id,
|
|
2504
|
+
kind: record.kind,
|
|
2505
|
+
createdAt: record.createdAt,
|
|
2506
|
+
objective: record.objective,
|
|
2507
|
+
summary: record.summary,
|
|
2508
|
+
changedFiles: record.changedFiles,
|
|
2509
|
+
restorable: record.restorable,
|
|
2510
|
+
turnStartSeq: record.turnStartSeq,
|
|
2511
|
+
turnEndSeq: record.turnEndSeq,
|
|
2512
|
+
}),
|
|
2513
|
+
lastCheckpointId: record.id,
|
|
2514
|
+
harnessVersion: JUNCTION_HARNESS_VERSION,
|
|
2515
|
+
});
|
|
2516
|
+
this.recordHarnessEvent(agent, {
|
|
2517
|
+
kind: "checkpoint_restored",
|
|
2518
|
+
summary: "Restored the workspace to the selected checkpoint.",
|
|
2519
|
+
checkpointId: record.id,
|
|
2520
|
+
details: {
|
|
2521
|
+
changedFiles: record.changedFiles,
|
|
2522
|
+
turnEndSeq: record.turnEndSeq,
|
|
2523
|
+
},
|
|
2256
2524
|
});
|
|
2525
|
+
this.touchUpdatedAt(agent);
|
|
2526
|
+
this.emitState(agent);
|
|
2527
|
+
await this.persistSnapshot(agent);
|
|
2528
|
+
await this.refreshRuntimeInfo(agent);
|
|
2529
|
+
return this.agents.get(agentId) ?? agent;
|
|
2257
2530
|
}
|
|
2258
2531
|
requireClient(provider) {
|
|
2259
2532
|
const client = this.clients.get(provider);
|