@codetreker/daynight 0.21.11 → 0.21.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -4
- package/dist/api/client.d.ts +2 -1
- package/dist/api/client.js +7 -1
- package/dist/api/client.js.map +1 -1
- package/dist/api/parse.d.ts +2 -1
- package/dist/api/parse.js +19 -0
- package/dist/api/parse.js.map +1 -1
- package/dist/api/types.d.ts +11 -3
- package/dist/commands/skill/skills/using-daynight/references/handoff.md +3 -3
- package/dist/commands/worker/control.d.ts +55 -0
- package/dist/commands/worker/control.js +151 -0
- package/dist/commands/worker/control.js.map +1 -0
- package/dist/commands/worker/coordinator.d.ts +1 -0
- package/dist/commands/worker/coordinator.js +53 -13
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/definition.js +37 -1
- package/dist/commands/worker/definition.js.map +1 -1
- package/dist/commands/worker/execution.js +89 -26
- package/dist/commands/worker/execution.js.map +1 -1
- package/dist/commands/worker/herdr/agents.d.ts +1 -0
- package/dist/commands/worker/herdr/agents.js +78 -6
- package/dist/commands/worker/herdr/agents.js.map +1 -1
- package/dist/commands/worker/herdr/codex-input.d.ts +2 -0
- package/dist/commands/worker/herdr/codex-input.js +35 -0
- package/dist/commands/worker/herdr/codex-input.js.map +1 -0
- package/dist/commands/worker/index.d.ts +8 -0
- package/dist/commands/worker/index.js +45 -1
- package/dist/commands/worker/index.js.map +1 -1
- package/dist/commands/worker/instance-lock.d.ts +5 -0
- package/dist/commands/worker/instance-lock.js +11 -1
- package/dist/commands/worker/instance-lock.js.map +1 -1
- package/dist/commands/worker/remote.d.ts +6 -1
- package/dist/commands/worker/remote.js +12 -0
- package/dist/commands/worker/remote.js.map +1 -1
- package/dist/commands/worker/runtime.d.ts +8 -0
- package/dist/commands/worker/runtime.js +140 -2
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/store.d.ts +18 -0
- package/dist/commands/worker/store.js +101 -17
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/platform/instance-lock.d.ts +4 -0
- package/dist/platform/instance-lock.js +9 -1
- package/dist/platform/instance-lock.js.map +1 -1
- package/package.json +2 -2
|
@@ -6,11 +6,12 @@ import { createOperation } from "../../api/operation.js";
|
|
|
6
6
|
import { loadServerConfiguration } from "../../config/server.js";
|
|
7
7
|
import { readWorkerConfiguration } from "./config.js";
|
|
8
8
|
import { createWorkerCoordinator } from "./coordinator.js";
|
|
9
|
+
import { createWorkerControlDriver, submitWorkerControl } from "./control.js";
|
|
9
10
|
import { createWorkerDiagnostics } from "./diagnostics.js";
|
|
10
11
|
import { isWorkerCancellation } from "./execution.js";
|
|
11
12
|
import { createWorkerHerdr } from "./herdr.js";
|
|
12
13
|
import { ensureWorkerIdentity } from "./identity.js";
|
|
13
|
-
import { acquireWorkerInstanceLock } from "./instance-lock.js";
|
|
14
|
+
import { acquireWorkerInstanceLock, tryAcquireWorkerInstanceLock } from "./instance-lock.js";
|
|
14
15
|
import { resolveWorkerPaths } from "./paths.js";
|
|
15
16
|
import { createWorkerPromptBuilder } from "./prompts.js";
|
|
16
17
|
import { createWorkerRemote } from "./remote.js";
|
|
@@ -108,7 +109,7 @@ export const runWorker = async (options) => {
|
|
|
108
109
|
if (current.status === "done" || (current.cleanup === null && current.control === null))
|
|
109
110
|
return;
|
|
110
111
|
const state = current.cleanup;
|
|
111
|
-
if (state !== null && state.result !== null && state.agentStopped && state.workspaceClosed && (state.kind === "shutdown" || state.worktreeDeleted))
|
|
112
|
+
if (current.control === null && state !== null && state.result !== null && state.agentStopped && state.workspaceClosed && (state.kind === "shutdown" || state.worktreeDeleted))
|
|
112
113
|
return;
|
|
113
114
|
const remaining = state === null ? 0 : state.deadline - Date.now();
|
|
114
115
|
try {
|
|
@@ -243,4 +244,141 @@ export const runWorker = async (options) => {
|
|
|
243
244
|
if (failures.length > 1)
|
|
244
245
|
throw new AggregateError(failures, "Worker execution or shutdown failed.");
|
|
245
246
|
};
|
|
247
|
+
export const runWorkerControl = async (options) => {
|
|
248
|
+
const platform = currentWorkerPlatform();
|
|
249
|
+
const paths = resolveWorkerPaths(options.homeDirectory);
|
|
250
|
+
const cancellation = new AbortController();
|
|
251
|
+
const cancel = () => cancellation.abort(options.signal?.reason);
|
|
252
|
+
const interrupt = () => cancellation.abort(new Error("Worker management interrupted; the persisted intent is retained."));
|
|
253
|
+
const signals = process.platform === "win32" ? ["SIGINT", "SIGTERM", "SIGBREAK"] : ["SIGINT", "SIGTERM"];
|
|
254
|
+
options.signal?.addEventListener("abort", cancel, { once: true });
|
|
255
|
+
if (options.signal?.aborted)
|
|
256
|
+
cancel();
|
|
257
|
+
for (const signal of signals)
|
|
258
|
+
process.on(signal, interrupt);
|
|
259
|
+
let lock;
|
|
260
|
+
let store;
|
|
261
|
+
let git;
|
|
262
|
+
let coordinator;
|
|
263
|
+
let diagnostics;
|
|
264
|
+
const failures = [];
|
|
265
|
+
try {
|
|
266
|
+
cancellation.signal.throwIfAborted();
|
|
267
|
+
const configuration = await readWorkerConfiguration(paths, cancellation.signal);
|
|
268
|
+
const { serverUrl, serverToken } = await loadServerConfiguration(paths, cancellation.signal);
|
|
269
|
+
if (serverToken === undefined)
|
|
270
|
+
throw new Error("You are not logged in. Run daynight login to authenticate.");
|
|
271
|
+
lock = await tryAcquireWorkerInstanceLock(paths);
|
|
272
|
+
const workerId = await ensureWorkerIdentity(paths, cancellation.signal);
|
|
273
|
+
store = openWorkerStore(paths.databaseFile);
|
|
274
|
+
const remote = createWorkerRemote({ serverUrl, serverToken });
|
|
275
|
+
await remote.currentUserId(cancellation.signal);
|
|
276
|
+
diagnostics = await createWorkerDiagnostics({ paths, workerId, platform, ...(options.log === undefined ? {} : { log: options.log }), secrets: [serverToken] });
|
|
277
|
+
const repositories = [];
|
|
278
|
+
if (options.request.kind === "resume") {
|
|
279
|
+
for (const repository of configuration.repositories) {
|
|
280
|
+
if (options.request.projectId !== undefined && repository.projectId !== undefined && repository.projectId !== options.request.projectId)
|
|
281
|
+
continue;
|
|
282
|
+
const project = await remote.resolveProject({ repoUrl: repository.remote, ...(repository.projectId === undefined ? {} : { projectId: repository.projectId }) }, cancellation.signal);
|
|
283
|
+
if (options.request.projectId !== undefined && project.id !== options.request.projectId)
|
|
284
|
+
continue;
|
|
285
|
+
const binding = store.registerProject({ serverOrigin: serverUrl, projectId: project.id, repoUrl: repository.remote, localPath: repository.path });
|
|
286
|
+
repositories.push({ project: binding, configuration: { agent: repository.agent, model: repository.model, args: repository.args, recoveryLimit: repository.recoveryLimit } });
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
const result = await submitWorkerControl({ store, remote, serverOrigin: serverUrl, workerId, platform, machine: machineDescription(platform), repositories, request: options.request, signal: cancellation.signal });
|
|
290
|
+
diagnostics.emit({ kind: "management", ...(result.task === null ? {} : { task: result.task }), message: result.message });
|
|
291
|
+
await diagnostics.flush();
|
|
292
|
+
if (result.task !== null && options.request.kind !== "resume") {
|
|
293
|
+
const identity = result.task;
|
|
294
|
+
let lastWaitingState = null;
|
|
295
|
+
while (true) {
|
|
296
|
+
cancellation.signal.throwIfAborted();
|
|
297
|
+
let task = store.getTask(identity);
|
|
298
|
+
if (task === null)
|
|
299
|
+
throw new Error("The managed execution record disappeared.");
|
|
300
|
+
if (task.control?.submission === "unknown")
|
|
301
|
+
task = await createWorkerControlDriver({ store, remote, serverOrigin: serverUrl, now: Date.now }).advance(task, cancellation.signal, { submit: false });
|
|
302
|
+
if (task.status === "done") {
|
|
303
|
+
diagnostics.emit({ kind: "management-complete", task, message: `Management finished for claim ${task.claimId}; outcome=${task.control?.outcome ?? "ownership-ended"}.` });
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
if (task.control?.submission === "rejected")
|
|
307
|
+
throw new Error(`Management refused for claim ${task.claimId}: ${task.control.error}. A new explicit decision and version are required.`);
|
|
308
|
+
if (task.control?.submission === "unknown")
|
|
309
|
+
throw new Error(`Management result is unknown for claim ${task.claimId}; the original intent and claim identities are retained for reconciliation.`);
|
|
310
|
+
if (lock === null)
|
|
311
|
+
lock = await tryAcquireWorkerInstanceLock(paths);
|
|
312
|
+
if (lock !== null) {
|
|
313
|
+
if (coordinator === undefined) {
|
|
314
|
+
await mkdir(paths.temporaryDirectory, { recursive: true, mode: 0o700 });
|
|
315
|
+
git = createWorkerGitManager({ temporaryDirectory: paths.temporaryDirectory });
|
|
316
|
+
const herdr = createWorkerHerdr({ paths, homeDirectory: options.homeDirectory });
|
|
317
|
+
const buildPrompt = await createWorkerPromptBuilder(options.packageDirectory);
|
|
318
|
+
coordinator = createWorkerCoordinator({ store, git, herdr, remote, serverOrigin: serverUrl, workerId, platform, machine: machineDescription(platform), repositories, maxConcurrent: configuration.maxConcurrent, buildPrompt, emit: diagnostics.emit, signal: cancellation.signal });
|
|
319
|
+
}
|
|
320
|
+
if (options.request.kind === "retry") {
|
|
321
|
+
await coordinator.advanceRetry(identity);
|
|
322
|
+
const retried = store.getTask(identity);
|
|
323
|
+
if (retried === null)
|
|
324
|
+
throw new Error("The retried execution record disappeared.");
|
|
325
|
+
diagnostics.emit({ kind: "retry", task: retried, message: `Explicit recovery processed for claim ${retried.claimId}; count=${retried.recovery.count}; pause=${retried.recovery.pauseReason ?? "none"}.` });
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
await coordinator.advanceCommittedCleanups(identity);
|
|
329
|
+
}
|
|
330
|
+
else if (options.request.kind === "retry") {
|
|
331
|
+
diagnostics.emit({ kind: "retry-authorized", task, message: `Claim ${task.claimId} has one persisted extra recovery authorization; the foreground worker remains its sole controller.` });
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
await diagnostics.flush();
|
|
335
|
+
const latest = store.getTask(identity);
|
|
336
|
+
if (latest?.status === "done" || latest?.control?.submission === "unknown" || latest?.control?.submission === "rejected")
|
|
337
|
+
continue;
|
|
338
|
+
const waitingState = JSON.stringify({ cleanup: latest?.cleanup, control: latest?.control });
|
|
339
|
+
if (waitingState !== lastWaitingState) {
|
|
340
|
+
diagnostics.emit({ kind: "management-waiting", ...(latest === null ? {} : { task: latest }), message: `Waiting for the sole worker controller to finish management of claim ${task.claimId}.` });
|
|
341
|
+
lastWaitingState = waitingState;
|
|
342
|
+
}
|
|
343
|
+
await delay(1_000, undefined, { signal: cancellation.signal });
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
failures.push(error);
|
|
349
|
+
}
|
|
350
|
+
finally {
|
|
351
|
+
try {
|
|
352
|
+
await git?.dispose();
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
failures.push(error);
|
|
356
|
+
}
|
|
357
|
+
try {
|
|
358
|
+
store?.close();
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
failures.push(error);
|
|
362
|
+
}
|
|
363
|
+
try {
|
|
364
|
+
await lock?.release();
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
failures.push(error);
|
|
368
|
+
}
|
|
369
|
+
try {
|
|
370
|
+
await diagnostics?.flush();
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
failures.push(error);
|
|
374
|
+
}
|
|
375
|
+
for (const signal of signals)
|
|
376
|
+
process.off(signal, interrupt);
|
|
377
|
+
options.signal?.removeEventListener("abort", cancel);
|
|
378
|
+
}
|
|
379
|
+
if (failures.length === 1)
|
|
380
|
+
throw failures[0];
|
|
381
|
+
if (failures.length > 1)
|
|
382
|
+
throw new AggregateError(failures, "Worker management or resource disposal failed.");
|
|
383
|
+
};
|
|
246
384
|
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/worker/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/worker/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,GAAoB,OAAO,CAAC,QAAQ,EAAgB,EAAE;IAClG,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO,EAAE,OAAO,OAAO,CAAC;QAC7B,KAAK,QAAQ,EAAE,OAAO,OAAO,CAAC;QAC9B,KAAK,OAAO,EAAE,OAAO,SAAS,CAAC;QAC/B,SAAS,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,GAAG,CAAC,CAAC;IACvF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,QAAsB,EAAiB,EAAE;IACnE,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,6FAA6F;IAC7F,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,oBAAoB,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;AACrI,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,OAG/B,EAAiB,EAAE;IAClB,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAS,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAqB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3H,MAAM,SAAS,GAAG,GAAS,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;QAAE,MAAM,EAAE,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,IAAuE,CAAC;IAC5E,IAAI,KAAqD,CAAC;IAC1D,IAAI,GAA0D,CAAC;IAC/D,IAAI,WAAmE,CAAC;IACxE,IAAI,KAAuD,CAAC;IAC5D,IAAI,WAA4E,CAAC;IACjF,IAAI,WAAsC,CAAC;IAC3C,IAAI,cAAuB,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;IACrD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7F,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC7G,IAAI,GAAG,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC9C,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QACxE,KAAK,MAAM,SAAS,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,aAAa,CAAC;YAAE,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5C,WAAW,GAAG,MAAM,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/J,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9D,GAAG,GAAG,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC/E,KAAK,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAiC,EAAE,CAAC;QACtD,WAAW,GAAG,uBAAuB,CAAC;YACpC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;YACtE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,aAAa;YAC/F,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM;SAC/C,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,WAAW,CAAC;QACvC,MAAM,kBAAkB,GAAG,WAAW,CAAC;QACvC,MAAM,YAAY,GAAG,KAAK,CAAC;QAC3B,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBACtD,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;wBAAE,SAAS;oBAC7F,MAAM,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC5H,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACrC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS;oBACnC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE;wBACtB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACpC,IAAI,CAAC;gCAAC,MAAM,kBAAkB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;4BAAC,CAAC;4BACpE,OAAO,KAAK,EAAE,CAAC;gCACb,IAAI,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;oCAAE,OAAO;gCAC7D,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,6FAA6F,EAAE,KAAK,EAAE,CAAC,CAAC;4BACjJ,CAAC;4BACD,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;4BACjC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAC/C,IAAI,OAAO,KAAK,IAAI;gCAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;4BACnF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;gCAAE,OAAO;4BAChG,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;4BAC9B,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,eAAe,CAAC;gCAAE,OAAO;4BACvL,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BACnE,IAAI,CAAC;gCAAC,MAAM,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;4BAAC,CAAC;4BACjI,OAAO,KAAK,EAAE,CAAC;gCAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;oCAAE,MAAM,KAAK,CAAC;4BAAC,CAAC;wBACvF,CAAC;oBACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,GAAG,IAAI,cAAc,KAAK,SAAS;wBAAE,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzH,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1B,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG;wBAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtF,CAAC;gBACD,IAAI,CAAC;oBAAC,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;gBAAC,CAAC;gBACvE,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;wBAAE,MAAM,KAAK,CAAC;gBAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,GAAG,IAAI,cAAc,KAAK,SAAS;YAAE,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzH,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,QAAQ,OAAO,QAAQ,mBAAmB,aAAa,CAAC,aAAa,oBAAoB,aAAa,CAAC,cAAc,UAAU,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAChN,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;YACpD,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YACrL,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3H,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC;gBAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;oBAChD,CAAC;gBAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YAChC,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC;YACpI,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,yCAAyC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,0EAA0E,EAAE,CAAC,CAAC;oBACvL,eAAe,GAAG,IAAI,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;oBAAE,MAAM;gBAC5D,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,KAAK,CAAC;gBAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,0GAA0G,EAAE,KAAK,EAAE,CAAC,CAAC;YACrK,CAAC;YACD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM;YACvC,IAAI,CAAC;gBAAC,MAAM,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YAAC,CAAC;YAC9F,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;oBAAE,MAAM,KAAK,CAAC;YAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO;YAAE,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC9F,MAAM,WAAW,CAAC;QAClB,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtG,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,wGAAwG,EAAE,CAAC,CAAC;gBAC3J,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;gBAChI,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAClD,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iCAAiC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iEAAiE,EAAE,CAAC,CAAC;gBAC3K,CAAC;wBAAS,CAAC;oBAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC;YAAC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACrE,IAAI,CAAC;YAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC/D,IAAI,CAAC;YAAC,MAAM,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACtE,IAAI,CAAC;YAAC,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC3E,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;AACtG,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAGtC,EAAiB,EAAE;IAClB,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,GAAS,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAChI,MAAM,OAAO,GAAqB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3H,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;QAAE,MAAM,EAAE,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,IAA0E,CAAC;IAC/E,IAAI,KAAqD,CAAC;IAC1D,IAAI,GAA0D,CAAC;IAC/D,IAAI,WAAmE,CAAC;IACxE,IAAI,WAA4E,CAAC;IACjF,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7F,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC7G,IAAI,GAAG,MAAM,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QACxE,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChD,WAAW,GAAG,MAAM,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/J,MAAM,YAAY,GAAiC,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;gBACpD,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;oBAAE,SAAS;gBAClJ,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrL,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;oBAAE,SAAS;gBAClG,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClJ,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAC/K,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACrN,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1H,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YAC7B,IAAI,gBAAgB,GAAkB,IAAI,CAAC;YAC3C,OAAO,IAAI,EAAE,CAAC;gBACZ,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACrC,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,IAAI,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAChF,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,KAAK,SAAS;oBAAE,IAAI,GAAG,MAAM,yBAAyB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC3B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,iBAAiB,GAAG,EAAE,CAAC,CAAC;oBAC1K,MAAM;gBACR,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,KAAK,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,qDAAqD,CAAC,CAAC;gBACvL,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,OAAO,6EAA6E,CAAC,CAAC;gBACjM,IAAI,IAAI,KAAK,IAAI;oBAAE,IAAI,GAAG,MAAM,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC9B,MAAM,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBACxE,GAAG,GAAG,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;wBAC/E,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;wBACjF,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC9E,WAAW,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvR,CAAC;oBACD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACrC,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBACxC,IAAI,OAAO,KAAK,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBACnF,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yCAAyC,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,QAAQ,CAAC,KAAK,WAAW,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;wBAC3M,MAAM;oBACR,CAAC;oBACD,MAAM,WAAW,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,OAAO,qGAAqG,EAAE,CAAC,CAAC;oBAC1L,MAAM;gBACR,CAAC;gBACD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM,IAAI,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,UAAU;oBAAE,SAAS;gBACnI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5F,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,wEAAwE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;oBACjM,gBAAgB,GAAG,YAAY,CAAC;gBAClC,CAAC;gBACD,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;YACjC,CAAC;QACP,IAAI,CAAC;YAAC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACrE,IAAI,CAAC;YAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC/D,IAAI,CAAC;YAAC,MAAM,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACtE,IAAI,CAAC;YAAC,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC3E,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAC;AAChH,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WorkerHerdr } from "../../api/types.js";
|
|
2
2
|
import type { HerdrLaunchEvidence, HerdrStopObservation, HerdrTaskBinding, HerdrWorkspaceEvidence } from "./herdr/agents.js";
|
|
3
3
|
import type { ClaimAttempt, ClaimIdentity, CleanupState, ControlIntent, ExecutionSummary, FrozenExecutionConfiguration, LocalTask, NativeExecutionState, NativeSessionReference, PendingClaim, PendingConfiguration, ProjectIdentity, WorkerProject, WorkerProjectRecord, WorktreeBinding } from "./types.js";
|
|
4
|
+
export declare const isUnstartedPendingSource: (task: LocalTask) => boolean;
|
|
4
5
|
export declare const isUnstartedPending: (task: LocalTask) => boolean;
|
|
5
6
|
export declare const openWorkerStore: (databaseFile: string, options?: {
|
|
6
7
|
busyTimeoutMs?: number;
|
|
@@ -67,6 +68,7 @@ export declare const openWorkerStore: (databaseFile: string, options?: {
|
|
|
67
68
|
pauseTask: (identity: ClaimIdentity, reason: string, now: number) => LocalTask;
|
|
68
69
|
clearPause: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
69
70
|
authorizeRecoveryRetry: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
71
|
+
authorizeRecoveryRetryAtCount: (identity: ClaimIdentity, expectedCount: number, now: number) => LocalTask;
|
|
70
72
|
beginRecovery: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
71
73
|
beginCleanup: (identity: ClaimIdentity, input: {
|
|
72
74
|
kind: CleanupState["kind"];
|
|
@@ -88,12 +90,28 @@ export declare const openWorkerStore: (databaseFile: string, options?: {
|
|
|
88
90
|
}, now: number) => LocalTask;
|
|
89
91
|
resumeAfterShutdown: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
90
92
|
recordControlIntent: (identity: ClaimIdentity, input: ControlIntent, now: number) => LocalTask;
|
|
93
|
+
replaceRejectedControlIntent: (identity: ClaimIdentity, input: ControlIntent, proof: {
|
|
94
|
+
observedVersion: bigint;
|
|
95
|
+
}, now: number) => LocalTask;
|
|
96
|
+
confirmUnstartedControlCleanup: (identity: ClaimIdentity, proof: {
|
|
97
|
+
completeHerdrInventory: true;
|
|
98
|
+
noOwnedResources: true;
|
|
99
|
+
}, deadline: number, now: number) => LocalTask;
|
|
91
100
|
markControlSubmitting: (identity: ClaimIdentity, expectedVersion: bigint, now: number) => LocalTask;
|
|
92
101
|
confirmControlApplied: (identity: ClaimIdentity, resultVersion: bigint, now: number) => LocalTask;
|
|
93
102
|
confirmControlOwnershipEnded: (identity: ClaimIdentity, proof: {
|
|
94
103
|
completeOwnClaimInventory: true;
|
|
95
104
|
claimAbsent: true;
|
|
96
105
|
}, now: number) => LocalTask;
|
|
106
|
+
confirmControlOwnershipEndedByTask: (identity: ClaimIdentity, proof: {
|
|
107
|
+
observedClaimId: string | null;
|
|
108
|
+
observedState: "active" | "released" | "completed" | null;
|
|
109
|
+
}, now: number) => LocalTask;
|
|
110
|
+
completeAppliedControl: (identity: ClaimIdentity, expectedIntent: ControlIntent, resultVersion: bigint, now: number) => LocalTask;
|
|
111
|
+
completeEndedControl: (identity: ClaimIdentity, expectedIntent: ControlIntent, proof: {
|
|
112
|
+
observedClaimId: string | null;
|
|
113
|
+
observedState: "active" | "released" | "completed" | null;
|
|
114
|
+
}, now: number) => LocalTask;
|
|
97
115
|
rejectControlSubmission: (identity: ClaimIdentity, error: string, now: number) => LocalTask;
|
|
98
116
|
completeTask: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
99
117
|
completeUnstartedPending: (identity: ClaimIdentity, proof: {
|
|
@@ -108,14 +108,22 @@ const processId = (value) => {
|
|
|
108
108
|
return result;
|
|
109
109
|
};
|
|
110
110
|
const parseStopObservation = (value) => {
|
|
111
|
-
const data = record(value, ["binding", "ownerLabel", "agent", "nativeSessionId", "shellPid", "processIds", "observedAt"], "Herdr stop observation");
|
|
111
|
+
const data = record(value, ["binding", "ownerLabel", "agent", "nativeSessionId", "shellPid", "processIds", "nativeProcessIds", "observedAt"], "Herdr stop observation");
|
|
112
112
|
if (!Array.isArray(data.processIds) || data.processIds.length === 0)
|
|
113
113
|
throw new Error("The original native process observation must be nonempty.");
|
|
114
114
|
const shellPid = processId(data.shellPid);
|
|
115
115
|
const processIds = data.processIds.map(processId);
|
|
116
116
|
if (new Set(processIds).size !== processIds.length || processIds.includes(shellPid))
|
|
117
117
|
throw new Error("The original native process observation contains duplicate or shell process IDs.");
|
|
118
|
-
|
|
118
|
+
const nativeProcessIds = nullable(data.nativeProcessIds, (value) => {
|
|
119
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
120
|
+
throw new Error("Native process IDs must be a nonempty array.");
|
|
121
|
+
const native = value.map(processId);
|
|
122
|
+
if (new Set(native).size !== native.length || native.includes(shellPid) || native.some((entry) => !processIds.includes(entry)))
|
|
123
|
+
throw new Error("Native process IDs must be unique original process IDs and exclude the task shell.");
|
|
124
|
+
return native;
|
|
125
|
+
});
|
|
126
|
+
return { binding: parseTaskBinding(data.binding), ownerLabel: text(data.ownerLabel, "Stop owner label"), agent: oneOf(data.agent, ["codex", "copilot"], "Stop agent"), nativeSessionId: nullable(data.nativeSessionId, (value) => id(value, "Stopped native session ID")), shellPid, processIds, nativeProcessIds, observedAt: integer(data.observedAt, "Stop observation time") };
|
|
119
127
|
};
|
|
120
128
|
const parseExecutionSummary = (value) => {
|
|
121
129
|
const data = record(value, ["version", "herdr", "nativeSessionId", "phase", "submission"], "Execution summary mutation");
|
|
@@ -140,12 +148,13 @@ const withUserScope = (task, userId) => {
|
|
|
140
148
|
throw new Error("An existing terminal or control intent with unknown authenticated scope cannot acquire an inferred owner.");
|
|
141
149
|
return { ...task, userId: owner };
|
|
142
150
|
};
|
|
143
|
-
export const
|
|
151
|
+
export const isUnstartedPendingSource = (task) => {
|
|
144
152
|
const native = task.nativeExecution;
|
|
145
|
-
return task.status === "pending" && task.cleanup === null && task.
|
|
153
|
+
return task.status === "pending" && task.cleanup === null && task.resources.worktree === null && task.resources.herdr === null && task.resources.nativeSession === null
|
|
146
154
|
&& native !== null && native.terminalId === null && native.workspaceSubmission === "not-submitted" && native.workspaceEvidence === null
|
|
147
155
|
&& native.launchSubmission === "never-submitted" && native.launchEvidence === null && native.promptSubmission === "not-submitted" && native.stopObservation === null && native.summary === null;
|
|
148
156
|
};
|
|
157
|
+
export const isUnstartedPending = (task) => task.control === null && isUnstartedPendingSource(task);
|
|
149
158
|
const parseRecovery = (value) => {
|
|
150
159
|
const data = record(value, ["count", "pauseReason", "retryAuthorized"], "Recovery state");
|
|
151
160
|
return { count: integer(data.count, "Recovery count"), pauseReason: nullable(data.pauseReason, (entry) => text(entry, "Pause reason")), retryAuthorized: bool(data.retryAuthorized, "Recovery retry authorization") };
|
|
@@ -262,7 +271,7 @@ const schema = `
|
|
|
262
271
|
PRIMARY KEY(server_origin, project_id, task_id, claim_id), UNIQUE(server_origin, claim_id)
|
|
263
272
|
) STRICT;
|
|
264
273
|
CREATE UNIQUE INDEX tasks_one_active_per_task ON tasks(server_origin, project_id, task_id) WHERE status = 'active';
|
|
265
|
-
PRAGMA user_version =
|
|
274
|
+
PRAGMA user_version = 3;
|
|
266
275
|
`;
|
|
267
276
|
export const openWorkerStore = (databaseFile, options = {}) => {
|
|
268
277
|
absolutePath(databaseFile, "The SQLite database path");
|
|
@@ -279,8 +288,8 @@ export const openWorkerStore = (databaseFile, options = {}) => {
|
|
|
279
288
|
throw new Error("SQLite refused synchronous=FULL.");
|
|
280
289
|
db.transaction(() => {
|
|
281
290
|
const currentVersion = db.pragma("user_version", { simple: true });
|
|
282
|
-
if (currentVersion !== 0 && currentVersion !== 1 && currentVersion !== 2)
|
|
283
|
-
throw new Error(`Unsupported worker SQLite schema version ${currentVersion}; supported version is
|
|
291
|
+
if (currentVersion !== 0 && currentVersion !== 1 && currentVersion !== 2 && currentVersion !== 3)
|
|
292
|
+
throw new Error(`Unsupported worker SQLite schema version ${currentVersion}; supported version is 3.`);
|
|
284
293
|
const tables = db.prepare("SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name").all();
|
|
285
294
|
if (currentVersion === 0) {
|
|
286
295
|
if (tables.length !== 0)
|
|
@@ -291,6 +300,8 @@ export const openWorkerStore = (databaseFile, options = {}) => {
|
|
|
291
300
|
throw new Error("The worker database does not contain its projects/tasks schema.");
|
|
292
301
|
if (currentVersion === 1)
|
|
293
302
|
db.exec("ALTER TABLE tasks ADD COLUMN native_execution TEXT CHECK(native_execution IS NULL OR json_valid(native_execution)); ALTER TABLE tasks ADD COLUMN user_id TEXT; ALTER TABLE projects ADD COLUMN claim_attempt TEXT CHECK(claim_attempt IS NULL OR json_valid(claim_attempt)); UPDATE tasks SET cleanup = json_set(cleanup, '$.baseline', json('null')) WHERE cleanup IS NOT NULL; PRAGMA user_version = 2;");
|
|
303
|
+
if (currentVersion === 1 || currentVersion === 2)
|
|
304
|
+
db.exec("UPDATE tasks SET native_execution = json_set(native_execution, '$.stopObservation.nativeProcessIds', json('null')) WHERE native_execution IS NOT NULL AND json_type(native_execution, '$.stopObservation') = 'object'; PRAGMA user_version = 3;");
|
|
294
305
|
db.prepare(`SELECT ${projectColumns} FROM projects LIMIT 0`).all();
|
|
295
306
|
db.prepare(`SELECT ${taskColumns} FROM tasks LIMIT 0`).all();
|
|
296
307
|
}).immediate();
|
|
@@ -351,6 +362,23 @@ export const openWorkerStore = (databaseFile, options = {}) => {
|
|
|
351
362
|
if (cleanup.kind !== "terminal" || cleanup.result === null || !cleanup.agentStopped || !cleanup.workspaceClosed || !cleanup.worktreeDeleted)
|
|
352
363
|
throw new Error("Terminal cleanup must record its result and confirm agent stopped, workspace closed and worktree deleted.");
|
|
353
364
|
};
|
|
365
|
+
const controlIntent = (task, input) => {
|
|
366
|
+
const intent = parseIntent(input);
|
|
367
|
+
if (intent.sourceClaimId !== task.claimId)
|
|
368
|
+
throw new Error("The control intent must name the original claim.");
|
|
369
|
+
if (intent.kind === "transfer" && (intent.targetClaimId === task.claimId || intent.target.worktreeId === task.worktreeId))
|
|
370
|
+
throw new Error("Transfer requires new claim and worktree identities.");
|
|
371
|
+
return intent;
|
|
372
|
+
};
|
|
373
|
+
const unsubmittedControl = (intent, requestedAt) => ({ intent, requestedAt, submission: "not-submitted", submittedAt: null, outcome: null, resultVersion: null, error: null });
|
|
374
|
+
const authorizeRecoveryRetry = (task, expectedCount) => {
|
|
375
|
+
requireOrdinary(task);
|
|
376
|
+
if (expectedCount !== undefined && task.recovery.count !== integer(expectedCount, "Expected recovery count"))
|
|
377
|
+
throw new Error("The recovery count changed after the explicit retry decision.");
|
|
378
|
+
if (task.status !== "active" || task.recovery.pauseReason === null)
|
|
379
|
+
throw new Error("An extra recovery requires a paused active execution.");
|
|
380
|
+
return { ...task, recovery: { ...task.recovery, retryAuthorized: true } };
|
|
381
|
+
};
|
|
354
382
|
return {
|
|
355
383
|
close: () => { db.close(); },
|
|
356
384
|
getProject,
|
|
@@ -656,11 +684,9 @@ export const openWorkerStore = (databaseFile, options = {}) => {
|
|
|
656
684
|
return { ...task, recovery: { ...task.recovery, pauseReason: null } };
|
|
657
685
|
}),
|
|
658
686
|
authorizeRecoveryRetry: (identity, now) => change(identity, now, (task) => {
|
|
659
|
-
|
|
660
|
-
if (task.status !== "active" || task.recovery.pauseReason === null)
|
|
661
|
-
throw new Error("An extra recovery requires a paused active execution.");
|
|
662
|
-
return { ...task, recovery: { ...task.recovery, retryAuthorized: true } };
|
|
687
|
+
return authorizeRecoveryRetry(task);
|
|
663
688
|
}),
|
|
689
|
+
authorizeRecoveryRetryAtCount: (identity, expectedCount, now) => change(identity, now, (task) => authorizeRecoveryRetry(task, expectedCount)),
|
|
664
690
|
beginRecovery: (identity, now) => change(identity, now, (task) => {
|
|
665
691
|
requireOrdinary(task);
|
|
666
692
|
if (task.status !== "active")
|
|
@@ -745,17 +771,28 @@ export const openWorkerStore = (databaseFile, options = {}) => {
|
|
|
745
771
|
return { ...task, cleanup: null, resources: { ...task.resources, herdr: null }, nativeExecution: { ...freshNativeExecution(), summary: task.nativeExecution === null ? null : task.nativeExecution.summary } };
|
|
746
772
|
}),
|
|
747
773
|
recordControlIntent: (identity, input, now) => change(identity, now, (task) => {
|
|
748
|
-
const intent =
|
|
749
|
-
if (intent.sourceClaimId !== task.claimId)
|
|
750
|
-
throw new Error("The control intent must name the original claim.");
|
|
751
|
-
if (intent.kind === "transfer" && (intent.targetClaimId === task.claimId || intent.target.worktreeId === task.worktreeId))
|
|
752
|
-
throw new Error("Transfer requires new claim and worktree identities.");
|
|
774
|
+
const intent = controlIntent(task, input);
|
|
753
775
|
if (task.control !== null) {
|
|
754
776
|
if (!same(task.control.intent, intent))
|
|
755
777
|
throw new Error("A different source control intent is already recorded.");
|
|
756
778
|
return task;
|
|
757
779
|
}
|
|
758
|
-
return { ...task, cleanup: task.cleanup === null ? null : { ...task.cleanup, kind: "terminal" }, control:
|
|
780
|
+
return { ...task, cleanup: task.cleanup === null ? null : { ...task.cleanup, kind: "terminal" }, control: unsubmittedControl(intent, now) };
|
|
781
|
+
}),
|
|
782
|
+
replaceRejectedControlIntent: (identity, input, proof, now) => change(identity, now, (task) => {
|
|
783
|
+
const intent = controlIntent(task, input);
|
|
784
|
+
if (task.control?.submission !== "rejected")
|
|
785
|
+
throw new Error("A new explicit control decision can replace only a definitely rejected submission; unknown writes remain fenced.");
|
|
786
|
+
if (exactVersion(proof.observedVersion) !== intent.version)
|
|
787
|
+
throw new Error("The replacement decision must use its newly observed explicit version.");
|
|
788
|
+
return { ...task, control: unsubmittedControl(intent, now) };
|
|
789
|
+
}),
|
|
790
|
+
confirmUnstartedControlCleanup: (identity, proof, deadline, now) => change(identity, now, (task) => {
|
|
791
|
+
if (proof.completeHerdrInventory !== true || proof.noOwnedResources !== true)
|
|
792
|
+
throw new Error("An unstarted source cleanup requires a complete Herdr inventory proving no original resources.");
|
|
793
|
+
if (task.userId === null || task.control === null || !isUnstartedPendingSource(task))
|
|
794
|
+
throw new Error("Only a scoped unstarted pending source with a saved control intent can finish without activation.");
|
|
795
|
+
return { ...task, cleanup: parseCleanup({ kind: "terminal", startedAt: now, deadline, input: "unavailable", baseline: null, result: "completed", error: null, agentStopped: true, workspaceClosed: true, worktreeDeleted: true }) };
|
|
759
796
|
}),
|
|
760
797
|
markControlSubmitting: (identity, expectedVersion, now) => change(identity, now, (task) => {
|
|
761
798
|
fullyCleaned(task);
|
|
@@ -788,6 +825,53 @@ export const openWorkerStore = (databaseFile, options = {}) => {
|
|
|
788
825
|
return task;
|
|
789
826
|
return { ...task, control: { ...control, submission: "confirmed", outcome: "ownership-ended", resultVersion: null, error: null } };
|
|
790
827
|
}),
|
|
828
|
+
confirmControlOwnershipEndedByTask: (identity, proof, now) => change(identity, now, (task) => {
|
|
829
|
+
fullyCleaned(task);
|
|
830
|
+
const control = task.control;
|
|
831
|
+
if (control === null)
|
|
832
|
+
throw new Error("A source control intent is required for targeted management reconciliation.");
|
|
833
|
+
const observedClaimId = nullable(proof.observedClaimId, (value) => id(value, "Observed claim ID"));
|
|
834
|
+
const observedState = nullable(proof.observedState, (value) => oneOf(value, ["active", "released", "completed"], "Observed claim state"));
|
|
835
|
+
if ((observedClaimId === null) !== (observedState === null))
|
|
836
|
+
throw new Error("The targeted task observation must include both claim identity and state, or neither.");
|
|
837
|
+
if (observedClaimId === task.claimId && observedState === "active")
|
|
838
|
+
throw new Error("The targeted task observation still contains the original active claim.");
|
|
839
|
+
if (control.submission === "confirmed")
|
|
840
|
+
return task;
|
|
841
|
+
return { ...task, control: { ...control, submission: "confirmed", outcome: "ownership-ended", resultVersion: null, error: null } };
|
|
842
|
+
}),
|
|
843
|
+
completeAppliedControl: (identity, expectedIntent, resultVersion, now) => atomic(() => {
|
|
844
|
+
const task = needTask(identity);
|
|
845
|
+
fullyCleaned(task);
|
|
846
|
+
const control = task.control;
|
|
847
|
+
if (control === null || !same(control.intent, parseIntent(expectedIntent)))
|
|
848
|
+
throw new Error("The observed remote result does not belong to the current concrete management decision.");
|
|
849
|
+
if (task.status === "done") {
|
|
850
|
+
if (control.submission !== "confirmed")
|
|
851
|
+
throw new Error("A completed source must have a confirmed management result.");
|
|
852
|
+
return task;
|
|
853
|
+
}
|
|
854
|
+
if (control.submission !== "unknown" && control.submission !== "confirmed")
|
|
855
|
+
throw new Error("An applied control result requires the original submitted decision.");
|
|
856
|
+
return writeTask({ ...task, status: "done", control: { ...control, submission: "confirmed", outcome: "applied", resultVersion: exactVersion(resultVersion), error: null }, updatedAt: integer(now, "Task update time") });
|
|
857
|
+
}),
|
|
858
|
+
completeEndedControl: (identity, expectedIntent, proof, now) => atomic(() => {
|
|
859
|
+
const task = needTask(identity);
|
|
860
|
+
fullyCleaned(task);
|
|
861
|
+
const control = task.control;
|
|
862
|
+
if (control === null || !same(control.intent, parseIntent(expectedIntent)))
|
|
863
|
+
throw new Error("The observed ownership exit does not belong to the current concrete management decision.");
|
|
864
|
+
if (task.status === "done") {
|
|
865
|
+
if (control.submission !== "confirmed")
|
|
866
|
+
throw new Error("A completed source must have a confirmed management result.");
|
|
867
|
+
return task;
|
|
868
|
+
}
|
|
869
|
+
const observedClaimId = nullable(proof.observedClaimId, (value) => id(value, "Observed claim ID"));
|
|
870
|
+
const observedState = nullable(proof.observedState, (value) => oneOf(value, ["active", "released", "completed"], "Observed claim state"));
|
|
871
|
+
if ((observedClaimId === null) !== (observedState === null) || (observedClaimId === task.claimId && observedState === "active"))
|
|
872
|
+
throw new Error("The targeted task observation does not prove the original active claim ended.");
|
|
873
|
+
return writeTask({ ...task, status: "done", control: { ...control, submission: "confirmed", outcome: "ownership-ended", resultVersion: null, error: null }, updatedAt: integer(now, "Task update time") });
|
|
874
|
+
}),
|
|
791
875
|
rejectControlSubmission: (identity, error, now) => change(identity, now, (task) => {
|
|
792
876
|
if (task.control === null || task.control.submission !== "unknown")
|
|
793
877
|
throw new Error("A definite control rejection requires an original unknown submission.");
|