@codetreker/daynight 0.37.2 → 0.39.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.
- package/README.md +207 -60
- package/dist/api/client.d.ts +8 -3
- package/dist/api/client.js +25 -3
- package/dist/api/client.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/parse.d.ts +2 -2
- package/dist/api/parse.js +30 -24
- package/dist/api/parse.js.map +1 -1
- package/dist/api/task-steps.d.ts +6 -0
- package/dist/api/task-steps.js +48 -0
- package/dist/api/task-steps.js.map +1 -0
- package/dist/api/types.d.ts +29 -9
- package/dist/cli/application.js +6 -0
- package/dist/cli/application.js.map +1 -1
- package/dist/commands/cleanup-operation.d.ts +3 -0
- package/dist/commands/cleanup-operation.js +12 -0
- package/dist/commands/cleanup-operation.js.map +1 -0
- package/dist/commands/controller/provider-display.d.ts +2 -0
- package/dist/commands/controller/provider-display.js +63 -0
- package/dist/commands/controller/provider-display.js.map +1 -0
- package/dist/commands/controller/runtime.js +4 -2
- package/dist/commands/controller/runtime.js.map +1 -1
- package/dist/commands/skill/skills/using-daynight/SKILL.md +1 -1
- package/dist/commands/skill/skills/using-daynight/references/authorization.md +1 -1
- package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +4 -3
- package/dist/commands/skill/skills/using-daynight/references/handoff.md +25 -15
- package/dist/commands/skill/skills/using-daynight/references/task-management.md +1 -1
- package/dist/commands/skill/usage.md +43 -5
- package/dist/commands/task/command.js +8 -1
- package/dist/commands/task/command.js.map +1 -1
- package/dist/commands/task/definition.js +23 -1
- package/dist/commands/task/definition.js.map +1 -1
- package/dist/commands/task/step-diagnostics.d.ts +6 -0
- package/dist/commands/task/step-diagnostics.js +63 -0
- package/dist/commands/task/step-diagnostics.js.map +1 -0
- package/dist/commands/task/step-rendering.d.ts +5 -0
- package/dist/commands/task/step-rendering.js +40 -0
- package/dist/commands/task/step-rendering.js.map +1 -0
- package/dist/commands/task/step.d.ts +8 -0
- package/dist/commands/task/step.js +49 -0
- package/dist/commands/task/step.js.map +1 -0
- package/dist/commands/worker/backends/grant-renewal.js +1 -1
- package/dist/commands/worker/backends/grant-renewal.js.map +1 -1
- package/dist/commands/worker/backends/session-api.d.ts +1 -1
- package/dist/commands/worker/backends/session-api.js +4 -4
- package/dist/commands/worker/backends/session-api.js.map +1 -1
- package/dist/commands/worker/backends/sqlite/002-resource-observations.sql +6 -0
- package/dist/commands/worker/backends/web-process.js +13 -3
- package/dist/commands/worker/backends/web-process.js.map +1 -1
- package/dist/commands/worker/backends/web-record.js +2 -18
- package/dist/commands/worker/backends/web-record.js.map +1 -1
- package/dist/commands/worker/backends/web-store.d.ts +4 -13
- package/dist/commands/worker/backends/web-store.js +44 -52
- package/dist/commands/worker/backends/web-store.js.map +1 -1
- package/dist/commands/worker/backends/web-types.d.ts +0 -13
- package/dist/commands/worker/backends/web-types.js +0 -1
- package/dist/commands/worker/backends/web-types.js.map +1 -1
- package/dist/commands/worker/backends/web.d.ts +5 -1
- package/dist/commands/worker/backends/web.js +279 -127
- package/dist/commands/worker/backends/web.js.map +1 -1
- package/dist/commands/worker/cleanup-error.d.ts +5 -0
- package/dist/commands/worker/cleanup-error.js +9 -0
- package/dist/commands/worker/cleanup-error.js.map +1 -0
- package/dist/commands/worker/cleanup-schedule.d.ts +3 -0
- package/dist/commands/worker/cleanup-schedule.js +11 -0
- package/dist/commands/worker/cleanup-schedule.js.map +1 -0
- package/dist/commands/worker/cleanup.d.ts +1 -3
- package/dist/commands/worker/cleanup.js +56 -43
- package/dist/commands/worker/cleanup.js.map +1 -1
- package/dist/commands/worker/coordinator.js +241 -97
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/execution.d.ts +1 -1
- package/dist/commands/worker/execution.js +2 -2
- package/dist/commands/worker/execution.js.map +1 -1
- package/dist/commands/worker/prompts.js +2 -2
- package/dist/commands/worker/prompts.js.map +1 -1
- package/dist/commands/worker/runtime.js +1 -1
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/sqlite/006-cleanup-schedules.sql +14 -0
- package/dist/commands/worker/sqlite/007-resource-cleanup-intent.sql +2 -0
- package/dist/commands/worker/store.d.ts +5 -1
- package/dist/commands/worker/store.js +41 -0
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/commands/worker/types.d.ts +8 -0
- package/dist/commands/worker/worktrees.d.ts +1 -0
- package/dist/commands/worker/worktrees.js +88 -34
- package/dist/commands/worker/worktrees.js.map +1 -1
- package/dist/repository/context.js +2 -3
- package/dist/repository/context.js.map +1 -1
- package/dist/repository/discovery-error.d.ts +5 -0
- package/dist/repository/discovery-error.js +18 -0
- package/dist/repository/discovery-error.js.map +1 -0
- package/dist/repository/index.d.ts +1 -0
- package/dist/repository/index.js +1 -0
- package/dist/repository/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { CLEANUP_OPERATION_MS, cleanupOperation } from "../../cleanup-operation.js";
|
|
1
2
|
import path from "node:path";
|
|
2
|
-
import { unlink } from "node:fs/promises";
|
|
3
|
+
import { lstat, unlink } from "node:fs/promises";
|
|
3
4
|
import { randomUUID } from "node:crypto";
|
|
4
5
|
import { controllerExecutionDirectory, readLaunchTicket } from "../../controller/launch-ticket.js";
|
|
5
6
|
import { requestController } from "../../controller/local-client.js";
|
|
@@ -7,7 +8,8 @@ import { readControllerOperation, readControllerSnapshot, recordStoppedControlle
|
|
|
7
8
|
import { confirmControllerProcessesStopped, stopControllerProcesses } from "../../controller/process-proof.js";
|
|
8
9
|
import { workerOperation } from "../execution.js";
|
|
9
10
|
import { workerCleanupPrompt } from "../prompts.js";
|
|
10
|
-
import {
|
|
11
|
+
import { WorkerCleanupError } from "../cleanup-error.js";
|
|
12
|
+
import { taskAgentControlMode } from "./web-types.js";
|
|
11
13
|
export const createWebExecutionBackend = (options) => {
|
|
12
14
|
const request = options.request ?? requestController;
|
|
13
15
|
const current = (task) => { const latest = options.store.getTask(task); if (latest === null || taskAgentControlMode(latest) !== "web")
|
|
@@ -30,157 +32,307 @@ export const createWebExecutionBackend = (options) => {
|
|
|
30
32
|
if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
|
|
31
33
|
throw error;
|
|
32
34
|
}
|
|
35
|
+
try {
|
|
36
|
+
await lstat(endpoint);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT")
|
|
40
|
+
return;
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
throw new Error("The original controller endpoint still exists after cleanup.");
|
|
44
|
+
};
|
|
45
|
+
const matchesGeneration = (task, snapshot) => {
|
|
46
|
+
const execution = task.webExecution;
|
|
47
|
+
return snapshot.executionId === execution.executionId && snapshot.claimId === task.claimId && snapshot.sessionId === execution.sessionId
|
|
48
|
+
&& snapshot.executionGeneration === execution.executionGeneration && snapshot.controllerInstanceId === execution.controllerInstanceId;
|
|
33
49
|
};
|
|
34
50
|
return {
|
|
35
51
|
advance: async (input, signal) => {
|
|
36
52
|
let task = current(input);
|
|
53
|
+
if (task.recovery.pauseReason !== null && !task.recovery.retryAuthorized)
|
|
54
|
+
return task;
|
|
37
55
|
if (task.cleanup !== null || task.control !== null || task.configuration === null)
|
|
38
56
|
throw new Error("Ordinary Web execution is fenced by cleanup or management.");
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let snapshot;
|
|
49
|
-
let orderlyRestart = false;
|
|
57
|
+
const retryAttempt = task.recovery.retryAuthorized;
|
|
58
|
+
let recovering = retryAttempt;
|
|
59
|
+
const pause = (error) => options.store.pauseRecovery(task, error instanceof Error ? error.message : String(error), options.now());
|
|
60
|
+
const originalSnapshot = () => {
|
|
61
|
+
const saved = readControllerSnapshot(journal(task)), execution = task.webExecution;
|
|
62
|
+
if (saved === null || saved.executionId !== execution.executionId || saved.claimId !== task.claimId || saved.sessionId !== execution.sessionId || saved.executionGeneration !== execution.executionGeneration || saved.controllerInstanceId !== execution.controllerInstanceId)
|
|
63
|
+
throw new Error("The original controller generation evidence is unavailable.");
|
|
64
|
+
return saved;
|
|
65
|
+
};
|
|
50
66
|
try {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
67
|
+
if (retryAttempt && task.recovery.pauseReason !== null) {
|
|
68
|
+
// Authorization permits one replacement generation only after proving the old writer stopped.
|
|
69
|
+
if (task.webExecution === null || task.resources.nativeSession === null)
|
|
70
|
+
throw new Error("Web retry requires the original native session identity.");
|
|
71
|
+
if (task.webExecution.launchSubmission === "not-submitted" && BigInt(task.webExecution.executionGeneration) > 1n) {
|
|
72
|
+
// Preparation may fail after allocating a generation but before any writer is launched.
|
|
73
|
+
const previous = readControllerSnapshot(journal(task));
|
|
74
|
+
if (previous === null || previous.controllerProcess === null || previous.lifecycle !== "stopped" || !previous.nativeStopped || previous.stoppedAt === null)
|
|
75
|
+
throw new Error("Unsubmitted recovery requires the original complete stopped generation evidence.");
|
|
76
|
+
if (!await confirmControllerProcessesStopped(previous.controllerProcess, previous.nativeProcesses))
|
|
77
|
+
throw new Error("Unsubmitted recovery requires complete original controller and native process stop.");
|
|
78
|
+
signal.throwIfAborted();
|
|
79
|
+
if (JSON.stringify(readControllerSnapshot(journal(task))) !== JSON.stringify(previous))
|
|
80
|
+
throw new Error("The original stopped generation changed during unsubmitted recovery verification.");
|
|
81
|
+
task = options.store.retryUnsubmittedWebGeneration(task, previous, options.now());
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const saved = originalSnapshot();
|
|
85
|
+
if (saved.nativeSessionId === null || saved.nativeSessionId !== task.resources.nativeSession.sessionId)
|
|
86
|
+
throw new Error("Web retry requires the original native session identity.");
|
|
87
|
+
task = remember(task, saved);
|
|
88
|
+
const proof = task.webExecution.controllerProcess;
|
|
89
|
+
if (proof === null || !await confirmControllerProcessesStopped(proof, task.webExecution.nativeProcesses))
|
|
90
|
+
throw new Error("Web retry requires complete original controller and native process stop.");
|
|
91
|
+
const ticket = await readLaunchTicket(options.homeDirectory, task.webExecution.launchId);
|
|
92
|
+
const stopped = await recordStoppedControllerGeneration(journal(task), ticket);
|
|
93
|
+
task = options.store.beginWebGeneration(task, stopped, options.now());
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (!retryAttempt && task.webExecution !== null && task.webExecution.launchSubmission !== "not-submitted" && task.recovery.count >= task.configuration.recoveryLimit) {
|
|
97
|
+
// Older versions recorded exhaustion without a pause. Inspect before any launch preparation.
|
|
98
|
+
try {
|
|
99
|
+
const saved = originalSnapshot();
|
|
100
|
+
task = remember(task, saved);
|
|
101
|
+
const proof = task.webExecution.controllerProcess;
|
|
102
|
+
if (proof === null)
|
|
103
|
+
throw new Error("The exhausted execution has no complete original process stop evidence.");
|
|
104
|
+
const stopped = await confirmControllerProcessesStopped(proof, task.webExecution.nativeProcesses);
|
|
105
|
+
if (stopped) {
|
|
106
|
+
if (!task.webExecution.restartAfterShutdown || saved.error !== null)
|
|
107
|
+
return pause(new Error("The execution recovery budget is exhausted."));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
if (["stopped", "stopping", "failed", "paused"].includes(saved.lifecycle))
|
|
111
|
+
throw new Error("The exhausted execution is stopped or failed, but complete original process stop is unproven.");
|
|
112
|
+
const ticket = await readLaunchTicket(options.homeDirectory, task.webExecution.launchId);
|
|
113
|
+
const observed = (await request(ticket, { kind: "observe" }, { signal, timeoutMs: 2000 })).snapshot;
|
|
114
|
+
if (observed.lifecycle !== "ready" && observed.lifecycle !== "working" && observed.lifecycle !== "starting")
|
|
115
|
+
throw new Error(observed.error ?? "The exhausted controller is not healthy.");
|
|
116
|
+
task = remember(task, observed);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
signal.throwIfAborted();
|
|
121
|
+
return pause(error);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (task.resources.worktree === null)
|
|
125
|
+
task = options.store.bindWorktree(task, await workerOperation(operation => options.git.prepareWorktree({ projectId: task.projectId, repoUrl: task.repoUrl, localPath: task.repositoryPath }, task, operation), signal), options.now());
|
|
126
|
+
else
|
|
127
|
+
await workerOperation(operation => options.git.verifyWorktree({ projectId: task.projectId, repoUrl: task.repoUrl, localPath: task.repositoryPath }, task, operation), signal);
|
|
128
|
+
task = options.store.initializeWebExecution(task, options.now());
|
|
129
|
+
let ticket = await options.launcher.prepare(task, task.webExecution.initialPrompt ?? options.buildPrompt(task, options.platform), signal);
|
|
130
|
+
task = current(task);
|
|
131
|
+
await options.launcher.launch(task, ticket, signal);
|
|
132
|
+
task = current(task);
|
|
133
|
+
let snapshot;
|
|
134
|
+
try {
|
|
135
|
+
snapshot = (await request(ticket, { kind: "observe" }, { signal, timeoutMs: 2000 })).snapshot;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
signal.throwIfAborted();
|
|
139
|
+
// A retry never grants a second generation when its first observation fails.
|
|
140
|
+
if (retryAttempt)
|
|
141
|
+
throw error;
|
|
142
|
+
const saved = originalSnapshot();
|
|
56
143
|
task = remember(task, saved);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
144
|
+
const proof = task.webExecution.controllerProcess;
|
|
145
|
+
if (proof === null || !await confirmControllerProcessesStopped(proof, task.webExecution.nativeProcesses))
|
|
146
|
+
throw new Error("The original controller is unreachable; its native writer may still be alive and will not be replaced.", { cause: error });
|
|
147
|
+
if (saved.nativeSessionId === null)
|
|
148
|
+
throw new Error("The stopped native launch has no proven session identity; recovery cannot create another conversation.");
|
|
149
|
+
const stopped = await recordStoppedControllerGeneration(journal(task), ticket);
|
|
150
|
+
if (!task.webExecution.restartAfterShutdown)
|
|
151
|
+
task = options.store.beginRecovery(task, options.now());
|
|
152
|
+
if (task.recovery.pauseReason !== null)
|
|
153
|
+
return task;
|
|
154
|
+
recovering = true;
|
|
155
|
+
task = options.store.beginWebGeneration(task, stopped, options.now());
|
|
156
|
+
ticket = await options.launcher.prepare(task, task.webExecution.initialPrompt, signal);
|
|
157
|
+
await options.launcher.launch(current(task), ticket, signal);
|
|
158
|
+
snapshot = (await request(ticket, { kind: "observe" }, { signal, timeoutMs: 2000 })).snapshot;
|
|
159
|
+
}
|
|
160
|
+
task = remember(current(task), snapshot);
|
|
161
|
+
if (snapshot.lifecycle === "failed" || snapshot.lifecycle === "paused" || snapshot.lifecycle === "stopped" || snapshot.lifecycle === "stopping") {
|
|
162
|
+
recovering = true;
|
|
163
|
+
throw new Error(snapshot.error ?? "The native controller is paused or stopped.");
|
|
164
|
+
}
|
|
165
|
+
if ((snapshot.lifecycle === "ready" || snapshot.lifecycle === "working") && snapshot.initialInputState === "not_submitted" && BigInt(task.webExecution.executionGeneration) > 1n) {
|
|
166
|
+
recovering = true;
|
|
167
|
+
throw new Error("Recovery cannot resubmit the original managed assignment.");
|
|
168
|
+
}
|
|
169
|
+
if (snapshot.lifecycle === "ready" || snapshot.lifecycle === "working") {
|
|
170
|
+
if (task.recovery.retryAuthorized)
|
|
171
|
+
task = options.store.completeRecoveryRetry(task, snapshot, options.now());
|
|
172
|
+
recovering = false;
|
|
173
|
+
}
|
|
174
|
+
await options.launcher.refreshGrant(task, ticket, signal);
|
|
175
|
+
if (snapshot.lifecycle === "starting")
|
|
176
|
+
return options.store.updateWebExecution(task, { activity: "initializing" }, options.now());
|
|
177
|
+
if (snapshot.initialInputState === "not_submitted") {
|
|
178
|
+
const response = await request(ticket, { kind: "submit_initial", operationId: task.webExecution.initialOperationId }, { signal, timeoutMs: 30000 });
|
|
179
|
+
task = remember(task, response.snapshot);
|
|
180
|
+
}
|
|
181
|
+
options.emit({ kind: "web-observed", task, message: `Original ${ticket.provider} controller generation ${ticket.executionGeneration} is bound to session ${ticket.sessionId}.` });
|
|
182
|
+
return current(task);
|
|
72
183
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (snapshot.lifecycle === "failed" || snapshot.lifecycle === "paused")
|
|
78
|
-
throw new Error(snapshot.error ?? "The native controller is paused.");
|
|
79
|
-
if (task.recovery.pauseReason !== null && !task.recovery.retryAuthorized)
|
|
80
|
-
return task;
|
|
81
|
-
if (task.recovery.retryAuthorized && !orderlyRestart)
|
|
82
|
-
task = options.store.beginRecovery(task, options.now());
|
|
83
|
-
if (snapshot.initialInputState === "not_submitted") {
|
|
84
|
-
const response = await request(ticket, { kind: "submit_initial", operationId: task.webExecution.initialOperationId }, { signal, timeoutMs: 30000 });
|
|
85
|
-
task = remember(task, response.snapshot);
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (!signal.aborted && (recovering && (retryAttempt || current(task).recovery.count >= task.configuration.recoveryLimit)))
|
|
186
|
+
pause(error);
|
|
187
|
+
throw error;
|
|
86
188
|
}
|
|
87
|
-
options.emit({ kind: "web-observed", task, message: `Original ${ticket.provider} controller generation ${ticket.executionGeneration} is bound to session ${ticket.sessionId}.` });
|
|
88
|
-
return current(task);
|
|
89
189
|
},
|
|
90
190
|
cleanup: async (input, kind, deadline, signal = new AbortController().signal, immediateStop = false) => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const execution = task.webExecution;
|
|
100
|
-
if (execution == null && task.configuration === null)
|
|
101
|
-
throw new Error("The recovered Web claim has no original launch provenance; its native writer and worktree are retained.");
|
|
102
|
-
if (!task.cleanup.agentStopped) {
|
|
103
|
-
if (execution == null || execution.launchSubmission === "not-submitted") {
|
|
104
|
-
task = options.store.recordCleanupInputOutcome(task, "unavailable", options.now());
|
|
105
|
-
task = options.store.recordCleanupResult(task, "unavailable", "No controller launch was submitted.", options.now());
|
|
106
|
-
task = options.store.confirmAgentStopped(task, { agentStopped: true }, options.now());
|
|
107
|
-
task = options.store.confirmBackendResourcesClosed(task, { controllerStopped: true, endpointClosed: true }, options.now());
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
if (execution.ticketPath === null)
|
|
111
|
-
throw new Error("The original launch ticket is missing; cleanup retains its unknown native writer.");
|
|
112
|
-
const ticket = await readLaunchTicket(options.homeDirectory, execution.launchId);
|
|
113
|
-
let response;
|
|
191
|
+
let stage = "observation";
|
|
192
|
+
try {
|
|
193
|
+
const startedAt = options.now();
|
|
194
|
+
let task = current(input);
|
|
195
|
+
if (task.status !== "done" && kind === "shutdown" && task.cleanup === null && task.recovery.retryAuthorized && task.recovery.pauseReason === null)
|
|
196
|
+
task = options.store.pauseRecovery(task, "The explicit recovery attempt stopped before a successful observation.", options.now());
|
|
197
|
+
if (task.status !== "done" && kind === "shutdown" && task.cleanup === null && task.recovery.pauseReason === null && task.configuration !== null && task.recovery.count >= task.configuration.recoveryLimit && task.webExecution !== null && task.webExecution.launchSubmission !== "not-submitted") {
|
|
198
|
+
// Shutdown provenance must not turn an already exhausted writer into a healthy orderly restart.
|
|
114
199
|
try {
|
|
115
|
-
response = await request(ticket, { kind: "observe" }, { signal, timeoutMs: 1000 });
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
200
|
const saved = readControllerSnapshot(journal(task));
|
|
119
|
-
if (saved
|
|
120
|
-
|
|
201
|
+
if (saved === null || !matchesGeneration(task, saved) || saved.controllerProcess === null)
|
|
202
|
+
throw new Error("The exhausted execution has no original generation evidence before shutdown.");
|
|
203
|
+
if (["failed", "paused", "stopped", "stopping"].includes(saved.lifecycle) || await confirmControllerProcessesStopped(saved.controllerProcess, saved.nativeProcesses))
|
|
204
|
+
task = options.store.pauseRecovery(task, "The execution recovery budget is exhausted.", options.now());
|
|
121
205
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
task =
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
206
|
+
catch (error) {
|
|
207
|
+
signal.throwIfAborted();
|
|
208
|
+
task = options.store.pauseRecovery(task, error instanceof Error ? error.message : String(error), options.now());
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (task.status !== "done")
|
|
212
|
+
task = options.store.beginCleanup(task, { kind, deadline: Math.max(startedAt, deadline) }, startedAt);
|
|
213
|
+
const intent = task.cleanup;
|
|
214
|
+
if (intent === null)
|
|
215
|
+
throw new Error("The original cleanup intent is missing.");
|
|
216
|
+
const execution = task.webExecution;
|
|
217
|
+
if (execution === null && task.configuration === null)
|
|
218
|
+
throw new Error("The recovered Web claim has no original launch provenance; its resources are retained.");
|
|
219
|
+
stage = "agent-stop";
|
|
220
|
+
let launched = false;
|
|
221
|
+
if (execution !== null) {
|
|
222
|
+
let saved = readControllerSnapshot(journal(task));
|
|
223
|
+
if (saved !== null && !matchesGeneration(task, saved)) {
|
|
224
|
+
if (execution.launchSubmission !== "not-submitted" || saved.executionId !== execution.executionId || saved.claimId !== task.claimId
|
|
225
|
+
|| saved.controllerProcess === null || BigInt(saved.executionGeneration) + 1n !== BigInt(execution.executionGeneration)
|
|
226
|
+
|| !await confirmControllerProcessesStopped(saved.controllerProcess, saved.nativeProcesses))
|
|
227
|
+
throw new Error("The original controller generation cannot be identified and stopped from its journal.");
|
|
228
|
+
saved = null;
|
|
229
|
+
}
|
|
230
|
+
launched = saved !== null || execution.launchSubmission !== "not-submitted";
|
|
231
|
+
if (launched) {
|
|
232
|
+
const ticket = await readLaunchTicket(options.homeDirectory, execution.launchId);
|
|
233
|
+
if (ticket.executionId !== execution.executionId || ticket.claimId !== task.claimId || ticket.sessionId !== execution.sessionId
|
|
234
|
+
|| ticket.executionGeneration !== execution.executionGeneration || ticket.controllerInstanceId !== execution.controllerInstanceId
|
|
235
|
+
|| ticket.worktreeId !== task.worktreeId || ticket.workerId !== task.workerId || ticket.serverOrigin !== task.serverOrigin)
|
|
236
|
+
throw new Error("The cleanup ticket does not identify the original execution.");
|
|
237
|
+
let response;
|
|
238
|
+
try {
|
|
239
|
+
response = await request(ticket, { kind: "observe" }, { signal, timeoutMs: CLEANUP_OPERATION_MS });
|
|
137
240
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
241
|
+
catch (error) {
|
|
242
|
+
signal.throwIfAborted();
|
|
243
|
+
const observed = readControllerSnapshot(journal(task));
|
|
244
|
+
if (observed !== null) {
|
|
245
|
+
if (!matchesGeneration(task, observed))
|
|
246
|
+
throw new Error("The original controller journal belongs to a different generation.", { cause: error });
|
|
247
|
+
saved = observed;
|
|
248
|
+
}
|
|
144
249
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (
|
|
250
|
+
const reachable = response !== undefined;
|
|
251
|
+
if (response !== undefined) {
|
|
252
|
+
if (!matchesGeneration(task, response.snapshot))
|
|
253
|
+
throw new Error("The observed controller belongs to a different generation.");
|
|
254
|
+
saved = response.snapshot;
|
|
255
|
+
}
|
|
256
|
+
if (saved?.nativeSessionId != null && task.status !== "done")
|
|
257
|
+
task = options.store.bindNativeSession(task, { source: "controller", sessionId: saved.nativeSessionId }, options.now());
|
|
258
|
+
if (saved?.controllerProcess != null && execution.controllerProcess !== null) {
|
|
259
|
+
const original = execution.controllerProcess, observed = saved.controllerProcess;
|
|
260
|
+
if (observed.pid !== original.pid || observed.startedAt !== original.startedAt || observed.commandHash !== original.commandHash
|
|
261
|
+
|| observed.processGroupId !== original.processGroupId)
|
|
262
|
+
throw new Error("The original controller process identity conflicts with its journal.");
|
|
263
|
+
}
|
|
264
|
+
const proof = saved?.controllerProcess ?? execution.controllerProcess;
|
|
265
|
+
const native = saved?.nativeProcesses ?? execution.nativeProcesses;
|
|
266
|
+
if (proof === null)
|
|
267
|
+
throw new Error("The original controller process identity is missing; cleanup cannot infer stop.");
|
|
268
|
+
let stopped = await confirmControllerProcessesStopped(proof, native);
|
|
269
|
+
if (!immediateStop && task.status !== "done" && !stopped && options.now() < intent.deadline) {
|
|
270
|
+
if (!reachable)
|
|
271
|
+
throw new Error("The original controller is unavailable; cleanup retains its fixed deadline and process identity.");
|
|
272
|
+
if (task.webExecution.cleanupOperationId === null)
|
|
273
|
+
task = options.store.updateWebExecution(task, { cleanupOperationId: randomUUID() }, options.now());
|
|
274
|
+
const operationId = task.webExecution.cleanupOperationId;
|
|
275
|
+
let operation = readControllerOperation(journal(task), operationId);
|
|
276
|
+
if (operation === null) {
|
|
277
|
+
try {
|
|
278
|
+
await request(ticket, { kind: "cleanup", operationId, prompt: workerCleanupPrompt(task, intent.deadline), deadline: intent.deadline }, { signal, timeoutMs: Math.max(1, Math.min(CLEANUP_OPERATION_MS, intent.deadline - options.now())) });
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
signal.throwIfAborted();
|
|
282
|
+
operation = readControllerOperation(journal(task), operationId);
|
|
283
|
+
if (operation === null)
|
|
284
|
+
throw error;
|
|
285
|
+
}
|
|
286
|
+
operation = readControllerOperation(journal(task), operationId);
|
|
287
|
+
}
|
|
288
|
+
if (operation !== null && (operation.kind !== "cleanup" || operation.executionGeneration !== execution.executionGeneration))
|
|
289
|
+
throw new Error("The cleanup operation belongs to a different controller generation.");
|
|
290
|
+
if (operation === null || !["confirmed", "failed", "rejected", "expired"].includes(operation.state))
|
|
291
|
+
return { task, complete: false };
|
|
292
|
+
}
|
|
293
|
+
if (!stopped) {
|
|
294
|
+
if (reachable)
|
|
295
|
+
try {
|
|
296
|
+
await request(ticket, { kind: "stop", deadline: options.now() + CLEANUP_OPERATION_MS }, { signal, timeoutMs: CLEANUP_OPERATION_MS });
|
|
297
|
+
}
|
|
298
|
+
catch { /* OS process observation remains authoritative after an IPC loss. */ }
|
|
299
|
+
signal.throwIfAborted();
|
|
154
300
|
try {
|
|
155
|
-
await
|
|
301
|
+
await stopControllerProcesses(proof, native, Date.now() + CLEANUP_OPERATION_MS);
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
if (!await confirmControllerProcessesStopped(proof, native))
|
|
305
|
+
throw error;
|
|
156
306
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
307
|
+
stopped = await confirmControllerProcessesStopped(proof, native);
|
|
308
|
+
}
|
|
309
|
+
if (!stopped)
|
|
310
|
+
throw new Error("The original controller or its native processes still exist.");
|
|
311
|
+
if (saved !== null)
|
|
312
|
+
await recordStoppedControllerGeneration(journal(task), ticket);
|
|
313
|
+
stage = "backend-close";
|
|
314
|
+
await removeEndpoint(ticket.ipcEndpoint);
|
|
160
315
|
}
|
|
161
|
-
if (!stopped)
|
|
162
|
-
throw new Error("Complete original controller process stop is not proven.");
|
|
163
|
-
await recordStoppedControllerGeneration(journal(task), ticket);
|
|
164
|
-
task = options.store.confirmAgentStopped(task, { agentStopped: true }, options.now());
|
|
165
|
-
await removeEndpoint(ticket.ipcEndpoint);
|
|
166
|
-
task = options.store.confirmBackendResourcesClosed(task, { controllerStopped: true, endpointClosed: true }, options.now());
|
|
167
316
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return task;
|
|
174
|
-
if (task.cleanup.kind === "terminal" && !task.cleanup.worktreeDeleted) {
|
|
175
|
-
if (execution && execution.launchSubmission !== "not-submitted") {
|
|
317
|
+
signal.throwIfAborted();
|
|
318
|
+
if (kind === "shutdown")
|
|
319
|
+
return { task, complete: true };
|
|
320
|
+
if (launched) {
|
|
321
|
+
stage = "archive";
|
|
176
322
|
if (!options.archive)
|
|
177
323
|
throw new Error("Session archive uploader is unavailable; the original worktree is retained.");
|
|
178
324
|
await options.archive(task, journal(task), signal);
|
|
179
325
|
}
|
|
180
|
-
|
|
181
|
-
|
|
326
|
+
stage = "worktree-removal";
|
|
327
|
+
const project = { projectId: task.projectId, repoUrl: task.repoUrl, localPath: task.repositoryPath };
|
|
328
|
+
await cleanupOperation(operation => options.git.removeWorktree(project, task, operation), signal);
|
|
329
|
+
if (await cleanupOperation(operation => options.git.findWorktree(project, task, operation), signal) !== null)
|
|
330
|
+
throw new Error("The original task still has Git worktree resources after cleanup.");
|
|
331
|
+
return { task, complete: true };
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
throw new WorkerCleanupError(stage, error);
|
|
182
335
|
}
|
|
183
|
-
return task;
|
|
184
336
|
},
|
|
185
337
|
};
|
|
186
338
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../../src/commands/worker/backends/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../../src/commands/worker/backends/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class WorkerCleanupError extends Error {
|
|
2
|
+
stage;
|
|
3
|
+
constructor(stage, cause) {
|
|
4
|
+
super(`Worker cleanup ${stage} failed: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
5
|
+
this.stage = stage;
|
|
6
|
+
this.name = "WorkerCleanupError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=cleanup-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-error.js","sourceRoot":"","sources":["../../../src/commands/worker/cleanup-error.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACtB,KAAK;IAA1B,YAAqB,KAAyB,EAAE,KAAc;QAC5D,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;qBAD3F,KAAK;QAExB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Retain resource ownership and the original policy deadline across retries.
|
|
2
|
+
export const ensureCleanupSchedule = (store, owner, now) => {
|
|
3
|
+
const previous = store.getCleanupSchedule(owner);
|
|
4
|
+
if (previous !== null) {
|
|
5
|
+
if (previous.worktreeId !== owner.worktreeId)
|
|
6
|
+
throw new Error("The cleanup claim has conflicting worktree identities.");
|
|
7
|
+
return previous;
|
|
8
|
+
}
|
|
9
|
+
return store.saveCleanupSchedule(owner, { deadline: now + 600_000, failures: 0, nextAttemptAt: now, stage: "observation", lastError: null });
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=cleanup-schedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-schedule.js","sourceRoot":"","sources":["../../../src/commands/worker/cleanup-schedule.ts"],"names":[],"mappings":"AAGA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAkB,EAAE,KAAoB,EAAE,GAAW,EAAyB,EAAE;IACpH,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxH,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/I,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { HerdrOwnedWorkspace } from "./herdr.js";
|
|
2
1
|
import type { ExecutionDependencies } from "./execution.js";
|
|
3
2
|
import type { LocalTask, ResourceOwner, WorkerProject } from "./types.js";
|
|
4
3
|
export type CleanupInput = {
|
|
@@ -7,6 +6,5 @@ export type CleanupInput = {
|
|
|
7
6
|
task?: LocalTask;
|
|
8
7
|
};
|
|
9
8
|
export declare const createCleanupDriver: (deps: Omit<ExecutionDependencies, "readTask">) => {
|
|
10
|
-
advance: (input: CleanupInput,
|
|
11
|
-
remaining: (owner: ResourceOwner) => number;
|
|
9
|
+
advance: (input: CleanupInput, deleteWorktree: boolean, signal?: AbortSignal) => Promise<void>;
|
|
12
10
|
};
|