@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.
Files changed (60) hide show
  1. package/dist/server/client/daemon-client.d.ts +10 -0
  2. package/dist/server/client/daemon-client.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client.js +58 -0
  4. package/dist/server/client/daemon-client.js.map +1 -1
  5. package/dist/server/server/agent/agent-checkpoint-storage.d.ts +126 -0
  6. package/dist/server/server/agent/agent-checkpoint-storage.d.ts.map +1 -0
  7. package/dist/server/server/agent/agent-checkpoint-storage.js +203 -0
  8. package/dist/server/server/agent/agent-checkpoint-storage.js.map +1 -0
  9. package/dist/server/server/agent/agent-manager.d.ts +12 -0
  10. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  11. package/dist/server/server/agent/agent-manager.js +276 -3
  12. package/dist/server/server/agent/agent-manager.js.map +1 -1
  13. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  14. package/dist/server/server/agent/agent-projections.js +5 -0
  15. package/dist/server/server/agent/agent-projections.js.map +1 -1
  16. package/dist/server/server/agent/agent-sdk-types.d.ts +2 -2
  17. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  18. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  19. package/dist/server/server/agent/agent-storage.d.ts +42 -42
  20. package/dist/server/server/agent/harness/context.d.ts +2 -1
  21. package/dist/server/server/agent/harness/context.d.ts.map +1 -1
  22. package/dist/server/server/agent/harness/context.js +44 -0
  23. package/dist/server/server/agent/harness/context.js.map +1 -1
  24. package/dist/server/server/agent/harness/memory.d.ts.map +1 -1
  25. package/dist/server/server/agent/harness/memory.js +38 -8
  26. package/dist/server/server/agent/harness/memory.js.map +1 -1
  27. package/dist/server/server/agent/harness/types.d.ts +66 -2
  28. package/dist/server/server/agent/harness/types.d.ts.map +1 -1
  29. package/dist/server/server/agent/harness/types.js +1 -1
  30. package/dist/server/server/agent/harness/types.js.map +1 -1
  31. package/dist/server/server/agent/providers/gemini-agent.js +2 -1
  32. package/dist/server/server/agent/providers/gemini-agent.js.map +1 -1
  33. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +2 -2
  34. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  35. package/dist/server/server/bootstrap.d.ts +1 -0
  36. package/dist/server/server/bootstrap.d.ts.map +1 -1
  37. package/dist/server/server/bootstrap.js +4 -0
  38. package/dist/server/server/bootstrap.js.map +1 -1
  39. package/dist/server/server/config.d.ts.map +1 -1
  40. package/dist/server/server/config.js +1 -0
  41. package/dist/server/server/config.js.map +1 -1
  42. package/dist/server/server/exports.d.ts +1 -0
  43. package/dist/server/server/exports.d.ts.map +1 -1
  44. package/dist/server/server/exports.js +1 -0
  45. package/dist/server/server/exports.js.map +1 -1
  46. package/dist/server/server/persisted-config.d.ts +6 -6
  47. package/dist/server/server/session.d.ts +2 -0
  48. package/dist/server/server/session.d.ts.map +1 -1
  49. package/dist/server/server/session.js +94 -0
  50. package/dist/server/server/session.js.map +1 -1
  51. package/dist/server/shared/messages.d.ts +9700 -6855
  52. package/dist/server/shared/messages.d.ts.map +1 -1
  53. package/dist/server/shared/messages.js +115 -0
  54. package/dist/server/shared/messages.js.map +1 -1
  55. package/dist/server/shared/switchboard.d.ts +174 -0
  56. package/dist/server/shared/switchboard.d.ts.map +1 -0
  57. package/dist/server/shared/switchboard.js +172 -0
  58. package/dist/server/shared/switchboard.js.map +1 -0
  59. package/dist/server/utils/worktree-metadata.d.ts +6 -6
  60. 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: this.ensureTimelineState(agent).nextSeq,
2197
- startedAt: new Date().toISOString(),
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
- setHarnessSessionExtra(agent.config, {
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);