@sift-wiki/conductor 0.2.0-beta.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/adapters/claudeAgent.js +1 -0
  2. package/dist/adapters/claudeAgent.js.map +1 -1
  3. package/dist/adapters/codexAgent.js +1 -0
  4. package/dist/adapters/codexAgent.js.map +1 -1
  5. package/dist/adapters/fakeAgent.js +1 -0
  6. package/dist/adapters/fakeAgent.js.map +1 -1
  7. package/dist/adapters/httpAgent.js +1 -0
  8. package/dist/adapters/httpAgent.js.map +1 -1
  9. package/dist/adapters/processAgent.js +4 -0
  10. package/dist/adapters/processAgent.js.map +1 -1
  11. package/dist/adapters/provider/runProvider.js +4 -0
  12. package/dist/adapters/provider/runProvider.js.map +1 -1
  13. package/dist/adapters/provider/store.js +3 -4
  14. package/dist/adapters/provider/store.js.map +1 -1
  15. package/dist/adapters/types.d.ts +9 -0
  16. package/dist/cli.d.ts +6 -0
  17. package/dist/cli.js +16 -4
  18. package/dist/cli.js.map +1 -1
  19. package/dist/conductorClient.d.ts +56 -19
  20. package/dist/conductorClient.js +91 -40
  21. package/dist/conductorClient.js.map +1 -1
  22. package/dist/config.js +4 -5
  23. package/dist/config.js.map +1 -1
  24. package/dist/daemon.d.ts +19 -6
  25. package/dist/daemon.js +199 -121
  26. package/dist/daemon.js.map +1 -1
  27. package/dist/desktop/app/controller.d.ts +1 -1
  28. package/dist/desktop/app/runtimeController.d.ts +7 -0
  29. package/dist/desktop/app/runtimeController.js +12 -1
  30. package/dist/desktop/app/runtimeController.js.map +1 -1
  31. package/dist/localApi/contracts.d.ts +15 -4
  32. package/dist/localApi/contracts.js +19 -1
  33. package/dist/localApi/contracts.js.map +1 -1
  34. package/dist/localApi/recovery.d.ts +66 -0
  35. package/dist/localApi/recovery.js +118 -0
  36. package/dist/localApi/recovery.js.map +1 -0
  37. package/dist/localApi/server.js +3 -1
  38. package/dist/localApi/server.js.map +1 -1
  39. package/dist/localApp/service.js +16 -4
  40. package/dist/localApp/service.js.map +1 -1
  41. package/dist/protocol/fenced.d.ts +135 -0
  42. package/dist/protocol/fenced.js +142 -0
  43. package/dist/protocol/fenced.js.map +1 -0
  44. package/dist/redaction.js +2 -0
  45. package/dist/redaction.js.map +1 -1
  46. package/dist/runtime/atomicFile.d.ts +6 -0
  47. package/dist/runtime/atomicFile.js +78 -0
  48. package/dist/runtime/atomicFile.js.map +1 -0
  49. package/dist/runtime/daemonCapabilities.d.ts +7 -0
  50. package/dist/runtime/daemonCapabilities.js +24 -0
  51. package/dist/runtime/daemonCapabilities.js.map +1 -0
  52. package/dist/runtime/eventOutbox.d.ts +100 -0
  53. package/dist/runtime/eventOutbox.js +206 -0
  54. package/dist/runtime/eventOutbox.js.map +1 -0
  55. package/dist/runtime/executionJournal.d.ts +102 -0
  56. package/dist/runtime/executionJournal.js +209 -0
  57. package/dist/runtime/executionJournal.js.map +1 -0
  58. package/dist/runtime/executionSafety.d.ts +76 -0
  59. package/dist/runtime/executionSafety.js +207 -0
  60. package/dist/runtime/executionSafety.js.map +1 -0
  61. package/dist/runtime/fencedExecutionState.d.ts +43 -0
  62. package/dist/runtime/fencedExecutionState.js +158 -0
  63. package/dist/runtime/fencedExecutionState.js.map +1 -0
  64. package/dist/runtime/leaseManager.d.ts +38 -0
  65. package/dist/runtime/leaseManager.js +102 -0
  66. package/dist/runtime/leaseManager.js.map +1 -0
  67. package/dist/runtime/localRunQueue.d.ts +1 -1
  68. package/dist/runtime/localRunQueue.js +8 -0
  69. package/dist/runtime/localRunQueue.js.map +1 -1
  70. package/dist/runtime/localSessionCache.d.ts +1 -1
  71. package/dist/runtime/localSessionCache.js.map +1 -1
  72. package/dist/runtime/process.d.ts +13 -1
  73. package/dist/runtime/process.js +39 -9
  74. package/dist/runtime/process.js.map +1 -1
  75. package/dist/runtime/recoveryCoordinator.d.ts +19 -0
  76. package/dist/runtime/recoveryCoordinator.js +183 -0
  77. package/dist/runtime/recoveryCoordinator.js.map +1 -0
  78. package/dist/runtime/runtimeLock.d.ts +33 -0
  79. package/dist/runtime/runtimeLock.js +140 -0
  80. package/dist/runtime/runtimeLock.js.map +1 -0
  81. package/dist/runtime/runtimeService.d.ts +6 -1
  82. package/dist/runtime/runtimeService.js +54 -20
  83. package/dist/runtime/runtimeService.js.map +1 -1
  84. package/dist/runtime/taskExecution.d.ts +4 -0
  85. package/dist/runtime/taskExecution.js +32 -12
  86. package/dist/runtime/taskExecution.js.map +1 -1
  87. package/dist/types.d.ts +28 -13
  88. package/dist/version.d.ts +1 -1
  89. package/dist/version.js +1 -1
  90. package/dist/version.js.map +1 -1
  91. package/dist/workTypes.d.ts +5 -5
  92. package/dist-web/assets/index-SwT063kc.js +72 -0
  93. package/dist-web/index.html +2 -2
  94. package/package.json +1 -1
  95. package/dist-web/assets/index-D5X9InfE.js +0 -72
package/dist/daemon.js CHANGED
@@ -1,4 +1,9 @@
1
1
  import { errorSummaryFromUnknown } from "./adapters/errors.js";
2
+ import { ConductorApiError } from "./conductorClient.js";
3
+ import { LeaseAuthorityError } from "./runtime/leaseManager.js";
4
+ import { createFencedState, defaultDaemonTimer, emitRunEvent, observeRunProgress, rejectExhaustedClaim, refreshLeaseUntilDone, renewFencedLease, scheduleRunTimeout, updateLocalSession, } from "./runtime/executionSafety.js";
5
+ import { reconcileUnfinishedAttempts } from "./runtime/recoveryCoordinator.js";
6
+ import { advertiseAdapters, daemonCapabilities } from "./runtime/daemonCapabilities.js";
2
7
  import { buildRunEnvironment } from "./runtime/runEnvironment.js";
3
8
  import { isAbortError, sleep as defaultSleep } from "./runtime/sleep.js";
4
9
  import { openTaskExecution, taskIdFromJob, } from "./runtime/taskExecution.js";
@@ -18,6 +23,24 @@ export async function runDaemonOnce(input) {
18
23
  capabilities: daemonCapabilities(adapters),
19
24
  });
20
25
  await input.client.advertiseAgents(credential, advertiseAdapters(adapters));
26
+ if ((input.journalStore === undefined) !== (input.eventOutbox === undefined)) {
27
+ throw new Error("Resilient execution requires both the journal store and durable event outbox.");
28
+ }
29
+ if (input.journalStore !== undefined && input.eventOutbox !== undefined) {
30
+ const recovery = await reconcileUnfinishedAttempts({
31
+ credential,
32
+ client: input.client,
33
+ workClient: input.workClient,
34
+ journalStore: input.journalStore,
35
+ outbox: input.eventOutbox,
36
+ adapters,
37
+ now: input.now,
38
+ });
39
+ if (!recovery.canClaim) {
40
+ await (input.sleep ?? defaultSleep)(input.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS, input.signal);
41
+ return { status: "idle" };
42
+ }
43
+ }
21
44
  await input.eventRetryBuffer?.flushDue((entry) => input.client.appendRunEvent(credential, entry.runId, entry.event).then(() => undefined));
22
45
  const job = await input.client.claimJob(credential);
23
46
  if (job === undefined) {
@@ -33,33 +56,44 @@ export async function runDaemonOnce(input) {
33
56
  leaseRefreshMs: input.leaseRefreshMs ?? DEFAULT_LEASE_REFRESH_MS,
34
57
  eventRetryBuffer: input.eventRetryBuffer,
35
58
  workClient: input.workClient,
36
- timer: input.timer ?? defaultTimer,
59
+ timer: input.timer ?? defaultDaemonTimer,
37
60
  sessionCache: input.sessionCache,
38
61
  logSpool: input.logSpool,
62
+ journalStore: input.journalStore,
63
+ eventOutbox: input.eventOutbox,
64
+ now: input.now ?? (() => new Date()),
65
+ monotonicNowMs: input.monotonicNowMs,
66
+ random: input.random,
67
+ allowInspectOnlyOffline: input.allowInspectOnlyOffline,
39
68
  });
40
69
  }
41
70
  export async function runDaemon(input) {
71
+ let retryAttempt = 0;
42
72
  while (input.signal?.aborted !== true) {
43
- await runDaemonOnce(input);
73
+ try {
74
+ await runDaemonOnce(input);
75
+ retryAttempt = 0;
76
+ }
77
+ catch (error) {
78
+ if (isAbortError(error) && signalIsAborted(input.signal))
79
+ return;
80
+ if (!(error instanceof ConductorApiError) || error.disposition !== "retryable")
81
+ throw error;
82
+ const delay = Math.min(30_000, 500 * 2 ** Math.min(retryAttempt, 6));
83
+ retryAttempt += 1;
84
+ try {
85
+ await (input.sleep ?? defaultSleep)(delay, input.signal);
86
+ }
87
+ catch (sleepError) {
88
+ if (isAbortError(sleepError))
89
+ return;
90
+ throw sleepError;
91
+ }
92
+ }
44
93
  }
45
94
  }
46
- function daemonCapabilities(adapters) {
47
- return {
48
- platform: process.platform,
49
- adapters: adapters.map((adapter) => adapter.adapterType),
50
- };
51
- }
52
- function advertiseAdapters(adapters) {
53
- return adapters.map((adapter) => ({
54
- localKey: adapter.localKey,
55
- displayName: adapter.displayName,
56
- adapterType: adapter.adapterType,
57
- status: "active",
58
- capabilities: {
59
- ...adapter.capabilities,
60
- ...adapter.readinessMetadata,
61
- },
62
- }));
95
+ function signalIsAborted(signal) {
96
+ return signal?.aborted === true;
63
97
  }
64
98
  function findAdapter(adapters, job) {
65
99
  return adapters.find((adapter) => adapter.localKey === job.localKey)
@@ -86,23 +120,53 @@ async function readyAdapters(adapters) {
86
120
  }
87
121
  async function runClaimedJob(input) {
88
122
  const { client, credential, job } = input;
123
+ const fencedState = await createFencedState(input);
124
+ if (await rejectExhaustedClaim(job, fencedState))
125
+ return { status: "interrupted", runId: job.runId };
89
126
  if (input.adapter === undefined) {
90
- await client.failRun(credential, job.runId, {
127
+ const summary = {
91
128
  message: `No local adapter available for ${job.localKey}.`,
92
- });
129
+ };
130
+ await fencedState?.recordTerminal("failed", summary);
131
+ await client.failRun(credential, job.runId, summary, fencedState?.settlementOptions());
93
132
  return { status: "failed", runId: job.runId };
94
133
  }
95
134
  if (job.wakeEnvelope?.limits.hardStop === true) {
96
- await client.failRun(credential, job.runId, {
135
+ const summary = {
97
136
  message: "Run is paused by a Sift hard policy limit.",
98
- });
137
+ };
138
+ await fencedState?.recordTerminal("failed", summary);
139
+ await client.failRun(credential, job.runId, summary, fencedState?.settlementOptions());
99
140
  return { status: "failed", runId: job.runId };
100
141
  }
101
- const initialLease = await client.refreshLease(credential, job.id);
142
+ let initialLease;
143
+ try {
144
+ initialLease = fencedState === undefined
145
+ ? await client.refreshLease(credential, job.id)
146
+ : await renewFencedLease({
147
+ client,
148
+ credential,
149
+ jobId: job.id,
150
+ fencedState,
151
+ sleep: input.sleep,
152
+ nowMs: () => input.now().getTime(),
153
+ monotonicNowMs: input.monotonicNowMs,
154
+ random: input.random,
155
+ });
156
+ }
157
+ catch (error) {
158
+ if (error instanceof LeaseAuthorityError && fencedState !== undefined) {
159
+ await fencedState.updatePhase("authority_uncertain", error.message);
160
+ return { status: "interrupted", runId: job.runId };
161
+ }
162
+ throw error;
163
+ }
102
164
  if (initialLease.cancelRequested) {
103
- await client.acknowledgeCancellation(credential, job.runId, {
165
+ const summary = {
104
166
  summary: "Cancellation was already requested before local execution started.",
105
- });
167
+ };
168
+ await fencedState?.recordTerminal("cancelled", summary);
169
+ await client.acknowledgeCancellation(credential, job.runId, summary, fencedState?.settlementOptions());
106
170
  return { status: "cancelled", runId: job.runId };
107
171
  }
108
172
  const adapterAbort = new AbortController();
@@ -112,14 +176,17 @@ async function runClaimedJob(input) {
112
176
  cancelRequested: false,
113
177
  timedOut: false,
114
178
  hardStop: false,
179
+ authorityUncertain: false,
115
180
  };
116
181
  let taskExecution;
117
182
  updateLocalSession(input.sessionCache, job, "starting");
118
183
  if (isTaskLinked(job)) {
119
184
  if (input.workClient === undefined) {
120
- await client.failRun(credential, job.runId, {
185
+ const summary = {
121
186
  message: "Task-linked run requires the Sift work protocol client.",
122
- });
187
+ };
188
+ await fencedState?.recordTerminal("failed", summary);
189
+ await client.failRun(credential, job.runId, summary, fencedState?.settlementOptions());
123
190
  return { status: "failed", runId: job.runId };
124
191
  }
125
192
  try {
@@ -128,6 +195,7 @@ async function runClaimedJob(input) {
128
195
  workClient: input.workClient,
129
196
  credential,
130
197
  job,
198
+ authority: fencedState?.authority(),
131
199
  onHardStop: () => {
132
200
  leaseState.hardStop = true;
133
201
  adapterAbort.abort();
@@ -136,11 +204,15 @@ async function runClaimedJob(input) {
136
204
  }
137
205
  catch (error) {
138
206
  updateLocalSession(input.sessionCache, job, "failed", errorSummaryFromUnknown(error));
139
- await client.failRun(credential, job.runId, errorSummaryFromUnknown(error));
207
+ const summary = errorSummaryFromUnknown(error);
208
+ await fencedState?.recordTerminal("failed", summary);
209
+ await client.failRun(credential, job.runId, summary, fencedState?.settlementOptions());
140
210
  return { status: "failed", runId: job.runId };
141
211
  }
142
212
  }
143
- const timeoutHandle = scheduleRunTimeout(job, input.timer, adapterAbort, leaseState);
213
+ await fencedState?.updatePhase("running");
214
+ const timeoutHandle = scheduleRunTimeout(job, input.timer, adapterAbort, leaseState, input.now);
215
+ const progressObserver = observeRunProgress({ job, timer: input.timer, fencedState, logSpool: input.logSpool, now: input.now });
144
216
  updateLocalSession(input.sessionCache, job, "running");
145
217
  const leaseLoop = refreshLeaseUntilDone({
146
218
  client,
@@ -151,6 +223,12 @@ async function runClaimedJob(input) {
151
223
  adapterAbort,
152
224
  state: leaseState,
153
225
  leaseRefreshMs: input.leaseRefreshMs,
226
+ fencedState,
227
+ monotonicNowMs: input.monotonicNowMs,
228
+ random: input.random,
229
+ nowMs: () => input.now().getTime(),
230
+ continueInspectOnly: input.allowInspectOnlyOffline === true
231
+ && fencedState?.accessMode() === "inspect",
154
232
  });
155
233
  try {
156
234
  const result = await input.adapter.run({
@@ -166,10 +244,34 @@ async function runClaimedJob(input) {
166
244
  bridgeToken: taskExecution?.bridgeToken,
167
245
  }),
168
246
  signal: adapterAbort.signal,
169
- emit: (event) => emitRunEvent({ client, credential, job, event, buffer: input.eventRetryBuffer, logSpool: input.logSpool }),
247
+ emit: (event) => emitRunEvent({
248
+ client,
249
+ credential,
250
+ job,
251
+ event,
252
+ buffer: input.eventRetryBuffer,
253
+ logSpool: input.logSpool,
254
+ fencedState,
255
+ progressObserver,
256
+ }),
170
257
  sleep: input.sleep,
258
+ ...(fencedState === undefined
259
+ ? {}
260
+ : { recordProcessIdentity: (identity) => fencedState.recordProcessIdentity(identity) }),
171
261
  });
262
+ if (result.providerSession !== undefined) {
263
+ await fencedState?.recordProviderSession(result.providerSession.sessionId);
264
+ }
265
+ await progressObserver.stop();
172
266
  await stopLeaseLoop(leaseState, leaseSleepAbort, leaseLoop);
267
+ if (leaseState.authorityUncertain && fencedState !== undefined) {
268
+ await fencedState.recordTerminal(result.status === "cancelled" ? "cancelled" : "completed", result.resultSummary, "authority_uncertain");
269
+ updateLocalSession(input.sessionCache, job, "stopped", {
270
+ message: "Local result is non-authoritative until Sift reconciliation.",
271
+ });
272
+ return { status: "interrupted", runId: job.runId };
273
+ }
274
+ await fencedState?.recordTerminal(result.status === "cancelled" ? "cancelled" : "completed", result.resultSummary, "running");
173
275
  const settled = await settleRun({
174
276
  client,
175
277
  workClient: input.workClient,
@@ -177,94 +279,68 @@ async function runClaimedJob(input) {
177
279
  job,
178
280
  result,
179
281
  cancelRequested: leaseState.cancelRequested,
282
+ fencedState,
283
+ taskExecution,
180
284
  });
285
+ await fencedState?.updatePhase("terminal");
181
286
  updateLocalSession(input.sessionCache, job, settled.status === "completed" ? "completed" : settled.status);
182
287
  return settled;
183
288
  }
184
289
  catch (error) {
290
+ await progressObserver.stop();
185
291
  await stopLeaseLoop(leaseState, leaseSleepAbort, leaseLoop);
292
+ if (leaseState.authorityUncertain && fencedState !== undefined) {
293
+ const errorSummary = errorSummaryFromUnknown(error);
294
+ const message = errorSummary["message"];
295
+ await fencedState.updatePhase("authority_uncertain", typeof message === "string" ? message : undefined);
296
+ updateLocalSession(input.sessionCache, job, "stopped", {
297
+ message: "Execution stopped because Sift write authority became uncertain.",
298
+ });
299
+ return { status: "interrupted", runId: job.runId };
300
+ }
301
+ if (leaseState.timedOut && fencedState !== undefined) {
302
+ await fencedState.recordTerminal("overtime", {
303
+ summary: "Stopped at the server-authoritative run deadline.",
304
+ }, "overtime");
305
+ updateLocalSession(input.sessionCache, job, "cancelled");
306
+ return { status: "interrupted", runId: job.runId };
307
+ }
186
308
  if (leaseState.timedOut && input.workClient !== undefined && isTaskLinked(job)) {
187
309
  await input.workClient.setTaskDisposition(credential, job.runId, taskIdFromJob(job), "cancelled", { summary: "Stopped after reaching the local run time limit." });
188
310
  updateLocalSession(input.sessionCache, job, "cancelled");
189
311
  return { status: "cancelled", runId: job.runId };
190
312
  }
191
313
  if (leaseState.hardStop && input.workClient !== undefined && isTaskLinked(job)) {
192
- await input.workClient.setTaskDisposition(credential, job.runId, taskIdFromJob(job), "cancelled", { summary: "Stopped after reaching a Sift hard policy limit." });
314
+ await input.workClient.setTaskDisposition(credential, job.runId, taskIdFromJob(job), "cancelled", { summary: "Stopped after reaching a Sift hard policy limit." }, fencedState?.settlementOptions());
193
315
  updateLocalSession(input.sessionCache, job, "cancelled");
194
316
  return { status: "cancelled", runId: job.runId };
195
317
  }
196
318
  if (leaseState.cancelRequested || adapterAbort.signal.aborted) {
197
319
  if (input.workClient !== undefined && isTaskLinked(job)) {
198
- await input.workClient.setTaskDisposition(credential, job.runId, taskIdFromJob(job), "cancelled", { summary: "Stopped local process after cancellation." });
320
+ await input.workClient.setTaskDisposition(credential, job.runId, taskIdFromJob(job), "cancelled", { summary: "Stopped local process after cancellation." }, fencedState?.settlementOptions());
199
321
  updateLocalSession(input.sessionCache, job, "cancelled");
200
322
  return { status: "cancelled", runId: job.runId };
201
323
  }
202
324
  await client.acknowledgeCancellation(credential, job.runId, {
203
325
  summary: "Stopped local process after cancellation.",
204
- });
326
+ }, fencedState?.settlementOptions());
205
327
  updateLocalSession(input.sessionCache, job, "cancelled");
206
328
  return { status: "cancelled", runId: job.runId };
207
329
  }
208
330
  updateLocalSession(input.sessionCache, job, "failed", errorSummaryFromUnknown(error));
209
- await client.failRun(credential, job.runId, {
210
- ...errorSummaryFromUnknown(error),
211
- });
331
+ const failure = { ...errorSummaryFromUnknown(error) };
332
+ await fencedState?.recordTerminal("failed", failure, "running");
333
+ await client.failRun(credential, job.runId, failure, fencedState?.settlementOptions());
334
+ await fencedState?.updatePhase("terminal");
212
335
  return { status: "failed", runId: job.runId };
213
336
  }
214
337
  finally {
215
338
  if (timeoutHandle !== undefined)
216
339
  input.timer.cancel(timeoutHandle);
340
+ await progressObserver.stop();
217
341
  await taskExecution?.close();
218
342
  }
219
343
  }
220
- async function emitRunEvent(input) {
221
- const summary = input.event.payload?.["summary"];
222
- if (typeof summary === "string") {
223
- input.logSpool?.append({
224
- runId: input.job.runId,
225
- message: summary,
226
- stream: input.event.eventType === "log" ? "stdout" : "system",
227
- occurredAt: input.event.occurredAt,
228
- });
229
- }
230
- try {
231
- await input.client.appendRunEvent(input.credential, input.job.runId, input.event);
232
- }
233
- catch (error) {
234
- if (input.buffer === undefined) {
235
- throw error;
236
- }
237
- input.buffer.enqueue({ runId: input.job.runId, event: input.event, error });
238
- }
239
- }
240
- async function refreshLeaseUntilDone(input) {
241
- for (;;) {
242
- if (isLeaseDone(input.state)) {
243
- return;
244
- }
245
- try {
246
- await input.sleep(input.leaseRefreshMs, input.sleepSignal);
247
- }
248
- catch (error) {
249
- if (isAbortError(error)) {
250
- return;
251
- }
252
- throw error;
253
- }
254
- if (isLeaseDone(input.state)) {
255
- return;
256
- }
257
- const refresh = await input.client.refreshLease(input.credential, input.jobId);
258
- if (refresh.cancelRequested) {
259
- input.state.cancelRequested = true;
260
- input.adapterAbort.abort();
261
- return;
262
- }
263
- }
264
- }
265
- function isLeaseDone(state) {
266
- return state.done;
267
- }
268
344
  async function stopLeaseLoop(state, leaseSleepAbort, leaseLoop) {
269
345
  state.done = true;
270
346
  leaseSleepAbort.abort();
@@ -273,52 +349,54 @@ async function stopLeaseLoop(state, leaseSleepAbort, leaseLoop) {
273
349
  async function settleRun(input) {
274
350
  if (input.result.status === "cancelled" || input.cancelRequested) {
275
351
  if (input.workClient !== undefined && isTaskLinked(input.job)) {
276
- await input.workClient.setTaskDisposition(input.credential, input.job.runId, taskIdFromJob(input.job), "cancelled", input.result.resultSummary);
352
+ await input.workClient.setTaskDisposition(input.credential, input.job.runId, taskIdFromJob(input.job), "cancelled", input.result.resultSummary, input.fencedState?.settlementOptions());
277
353
  return { status: "cancelled", runId: input.job.runId };
278
354
  }
279
- await input.client.acknowledgeCancellation(input.credential, input.job.runId, input.result.resultSummary);
355
+ await input.client.acknowledgeCancellation(input.credential, input.job.runId, input.result.resultSummary, input.fencedState?.settlementOptions());
280
356
  return { status: "cancelled", runId: input.job.runId };
281
357
  }
282
358
  if (input.workClient !== undefined && isTaskLinked(input.job)) {
283
- await input.workClient.setTaskDisposition(input.credential, input.job.runId, taskIdFromJob(input.job), input.result.disposition ?? "done", input.result.resultSummary);
359
+ const disposition = input.result.disposition ?? "done";
360
+ await prepareTaskDisposition({
361
+ workClient: input.workClient,
362
+ credential: input.credential,
363
+ runId: input.job.runId,
364
+ taskId: taskIdFromJob(input.job),
365
+ disposition,
366
+ resultSummary: input.result.resultSummary,
367
+ options: input.fencedState?.settlementOptions(),
368
+ pendingApprovalExists: input.job.wakeEnvelope?.pendingApproval !== undefined
369
+ || input.taskExecution?.hasRequestedApproval() === true,
370
+ blockerPathExists: (input.job.wakeEnvelope?.blockers.length ?? 0) > 0
371
+ || input.taskExecution?.hasAddedComment() === true,
372
+ });
373
+ await input.workClient.setTaskDisposition(input.credential, input.job.runId, taskIdFromJob(input.job), disposition, input.result.resultSummary, input.fencedState?.settlementOptions());
284
374
  return { status: "completed", runId: input.job.runId };
285
375
  }
286
- await input.client.completeRun(input.credential, input.job.runId, input.result.resultSummary);
376
+ await input.client.completeRun(input.credential, input.job.runId, input.result.resultSummary, input.fencedState?.settlementOptions());
287
377
  return { status: "completed", runId: input.job.runId };
288
378
  }
289
- function isTaskLinked(job) {
290
- return job.wakeEnvelope !== undefined || job.taskRecordId !== undefined;
379
+ async function prepareTaskDisposition(input) {
380
+ if (input.disposition === "in_review" && !input.pendingApprovalExists) {
381
+ await input.workClient.requestApproval(input.credential, input.runId, input.taskId, {
382
+ type: "agent_output_review",
383
+ payload: {
384
+ summary: resultText(input.resultSummary, "summary", "Agent output is ready for review."),
385
+ reviewSummary: resultText(input.resultSummary, "reviewSummary", "Review the agent output before accepting it."),
386
+ },
387
+ idempotencyKey: `provider-review:${input.runId}`,
388
+ }, input.options);
389
+ }
390
+ if (input.disposition === "blocked" && !input.blockerPathExists) {
391
+ const reason = resultText(input.resultSummary, "blockerReason", resultText(input.resultSummary, "summary", "Agent reported blocked work."));
392
+ await input.workClient.addTaskComment(input.credential, input.runId, input.taskId, `Blocked: ${reason}`, input.options);
393
+ }
291
394
  }
292
- function scheduleRunTimeout(job, timer, adapterAbort, state) {
293
- const maxRunMinutes = job.wakeEnvelope?.limits.maxRunMinutes;
294
- if (maxRunMinutes === undefined)
295
- return undefined;
296
- return timer.schedule(() => {
297
- state.timedOut = true;
298
- adapterAbort.abort();
299
- }, maxRunMinutes * 60_000);
395
+ function resultText(summary, key, fallback) {
396
+ const value = summary[key];
397
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : fallback;
300
398
  }
301
- const defaultTimer = {
302
- schedule: (callback, ms) => setTimeout(callback, ms),
303
- cancel: (handle) => clearTimeout(handle),
304
- };
305
- function updateLocalSession(cache, job, status, errorSummary) {
306
- if (cache === undefined)
307
- return;
308
- const previous = cache.read(job.runId);
309
- const now = new Date().toISOString();
310
- cache.upsert({
311
- runId: job.runId,
312
- adapterType: job.adapterType,
313
- localKey: job.localKey,
314
- status,
315
- localOnly: true,
316
- updatedAt: now,
317
- startedAt: previous?.startedAt ?? now,
318
- ...(status === "running" || status === "starting" ? {} : { stoppedAt: now }),
319
- taskKey: job.taskRecordId ?? job.wakeEnvelope?.task.id,
320
- cancelRequested: status === "cancelled",
321
- ...(errorSummary === undefined ? {} : { errorSummary }),
322
- });
399
+ function isTaskLinked(job) {
400
+ return job.wakeEnvelope !== undefined || job.taskRecordId !== undefined;
323
401
  }
324
402
  //# sourceMappingURL=daemon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export declare class DesktopController implements DesktopConductorApi {
29
29
  selectFolder(): Promise<SelectedFolder | undefined>;
30
30
  inspectDraft(input: ProviderDraft): Promise<{
31
31
  providerVersion?: string;
32
- remediation?: "install" | "login" | "upgrade" | "select-folder" | "resume" | "retry";
32
+ remediation?: "resume" | "install" | "login" | "upgrade" | "select-folder" | "retry";
33
33
  hint?: string;
34
34
  status: "error" | "ready";
35
35
  message: string;
@@ -1,9 +1,12 @@
1
1
  import { ProviderAgentStore } from "../../adapters/provider/store.js";
2
2
  import { FileConfigStore } from "../../config.js";
3
3
  import { type RuntimeServiceStatus } from "../../runtime/runtimeService.js";
4
+ import { RuntimeIdentityLock } from "../../runtime/runtimeLock.js";
4
5
  import type { LocalRuntimeSessionCache } from "../../runtime/localSessionCache.js";
5
6
  import type { LocalLogSpool } from "../../runtime/localLogSpool.js";
6
7
  import type { RunEventRetryBuffer } from "../../runtime/runEventRetryBuffer.js";
8
+ import { ExecutionJournalStore } from "../../runtime/executionJournal.js";
9
+ import { DurableEventOutbox } from "../../runtime/eventOutbox.js";
7
10
  export declare class DesktopRuntimeController {
8
11
  private readonly deps;
9
12
  private service;
@@ -14,9 +17,13 @@ export declare class DesktopRuntimeController {
14
17
  sessionCache?: LocalRuntimeSessionCache | undefined;
15
18
  logSpool?: LocalLogSpool | undefined;
16
19
  eventRetryBuffer?: RunEventRetryBuffer | undefined;
20
+ runtimeLock?: RuntimeIdentityLock | undefined;
21
+ journalStore?: ExecutionJournalStore | undefined;
22
+ eventOutbox?: DurableEventOutbox | undefined;
17
23
  });
18
24
  status(): RuntimeServiceStatus;
19
25
  start(): Promise<RuntimeServiceStatus>;
20
26
  stop(): Promise<RuntimeServiceStatus>;
27
+ restart(): Promise<RuntimeServiceStatus>;
21
28
  refreshAdapters(): Promise<RuntimeServiceStatus>;
22
29
  }
@@ -1,6 +1,10 @@
1
1
  import { createConfiguredAdapters } from "../../adapters/config.js";
2
2
  import { ConductorHttpClient } from "../../conductorClient.js";
3
3
  import { HeadlessRuntimeService } from "../../runtime/runtimeService.js";
4
+ import { RuntimeIdentityLock } from "../../runtime/runtimeLock.js";
5
+ import path from "node:path";
6
+ import { ExecutionJournalStore } from "../../runtime/executionJournal.js";
7
+ import { DurableEventOutbox } from "../../runtime/eventOutbox.js";
4
8
  export class DesktopRuntimeController {
5
9
  deps;
6
10
  service;
@@ -27,7 +31,9 @@ export class DesktopRuntimeController {
27
31
  sessionCache: this.deps.sessionCache,
28
32
  logSpool: this.deps.logSpool,
29
33
  eventRetryBuffer: this.deps.eventRetryBuffer,
30
- });
34
+ journalStore: this.deps.journalStore ?? new ExecutionJournalStore(path.join(path.dirname(this.deps.configStore.path), "runtime", "executions")),
35
+ eventOutbox: this.deps.eventOutbox ?? new DurableEventOutbox(path.join(path.dirname(this.deps.configStore.path), "runtime", "event-outbox.json")),
36
+ }, this.deps.runtimeLock ?? new RuntimeIdentityLock(path.join(path.dirname(this.deps.configStore.path), "runtime", "conductor.lock")));
31
37
  return this.service.start();
32
38
  }
33
39
  async stop() {
@@ -35,6 +41,11 @@ export class DesktopRuntimeController {
35
41
  return { state: "stopped" };
36
42
  return this.service.stop();
37
43
  }
44
+ async restart() {
45
+ if (this.service === undefined)
46
+ return this.start();
47
+ return this.service.restart();
48
+ }
38
49
  async refreshAdapters() {
39
50
  const next = createConfiguredAdapters(await this.deps.agentStore.read());
40
51
  this.adapters.splice(0, this.adapters.length, ...next);
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeController.js","sourceRoot":"","sources":["../../../src/desktop/app/runtimeController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAA6B,MAAM,iCAAiC,CAAC;AAKpG,MAAM,OAAO,wBAAwB;IAIN;IAHrB,OAAO,CAAqC;IACnC,QAAQ,GAAwB,EAAE,CAAC;IAEpD,YAA6B,IAM5B;QAN4B,SAAI,GAAJ,IAAI,CAMhC;IAAG,CAAC;IAEL,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC9F,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAC5B,MAAM;YACN,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YACpC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;SAC7C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"runtimeController.js","sourceRoot":"","sources":["../../../src/desktop/app/runtimeController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAA6B,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,OAAO,wBAAwB;IAIN;IAHrB,OAAO,CAAqC;IACnC,QAAQ,GAAwB,EAAE,CAAC;IAEpD,YAA6B,IAS5B;QAT4B,SAAI,GAAJ,IAAI,CAShC;IAAG,CAAC;IAEL,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC9F,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAC5B,MAAM;YACN,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YACpC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAC5C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,qBAAqB,CAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,CAC7E;YACD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,kBAAkB,CAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,CACpF;SACF,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,mBAAmB,CACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,CACjF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF"}