@codetreker/daynight 0.22.1 → 0.24.1
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 +314 -334
- package/config.example.yml +8 -4
- package/dist/api/client.d.ts +2 -2
- package/dist/api/client.js +10 -7
- package/dist/api/client.js.map +1 -1
- package/dist/api/types.d.ts +1 -8
- package/dist/cli/prompts.d.ts +1 -0
- package/dist/commands/auth/credentials.js +1 -1
- package/dist/commands/auth/credentials.js.map +1 -1
- package/dist/commands/review/config.js +0 -9
- package/dist/commands/review/config.js.map +1 -1
- package/dist/commands/review/configuration-guide.js +3 -2
- package/dist/commands/review/configuration-guide.js.map +1 -1
- package/dist/commands/review/repositories.js +11 -4
- package/dist/commands/review/repositories.js.map +1 -1
- package/dist/commands/skill/skills/using-daynight/references/execute-task-in-managed.md +6 -5
- package/dist/commands/skill/skills/using-daynight/references/handbook.md +1 -1
- package/dist/commands/skill/skills/using-daynight/references/handoff.md +1 -1
- package/dist/commands/worker/cleanup.d.ts +8 -2
- package/dist/commands/worker/cleanup.js +44 -160
- package/dist/commands/worker/cleanup.js.map +1 -1
- package/dist/commands/worker/config.d.ts +3 -3
- package/dist/commands/worker/config.js +0 -6
- package/dist/commands/worker/config.js.map +1 -1
- package/dist/commands/worker/control.d.ts +11 -18
- package/dist/commands/worker/control.js +75 -132
- package/dist/commands/worker/control.js.map +1 -1
- package/dist/commands/worker/coordinator.d.ts +10 -8
- package/dist/commands/worker/coordinator.js +324 -472
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/definition.js +9 -17
- package/dist/commands/worker/definition.js.map +1 -1
- package/dist/commands/worker/diagnostics.js +2 -3
- package/dist/commands/worker/diagnostics.js.map +1 -1
- package/dist/commands/worker/execution.d.ts +35 -10
- package/dist/commands/worker/execution.js +109 -281
- package/dist/commands/worker/execution.js.map +1 -1
- package/dist/commands/worker/herdr/agents.d.ts +12 -91
- package/dist/commands/worker/herdr/agents.js +111 -358
- package/dist/commands/worker/herdr/agents.js.map +1 -1
- package/dist/commands/worker/herdr/preflight.d.ts +21 -9
- package/dist/commands/worker/herdr/preflight.js +118 -124
- package/dist/commands/worker/herdr/preflight.js.map +1 -1
- package/dist/commands/worker/herdr.d.ts +7 -63
- package/dist/commands/worker/herdr.js.map +1 -1
- package/dist/commands/worker/identity.js +2 -2
- package/dist/commands/worker/identity.js.map +1 -1
- package/dist/commands/worker/index.d.ts +1 -0
- package/dist/commands/worker/index.js +6 -13
- package/dist/commands/worker/index.js.map +1 -1
- package/dist/commands/worker/prompts.d.ts +10 -3
- package/dist/commands/worker/prompts.js +21 -32
- package/dist/commands/worker/prompts.js.map +1 -1
- package/dist/commands/worker/remote.d.ts +2 -3
- package/dist/commands/worker/remote.js +1 -6
- package/dist/commands/worker/remote.js.map +1 -1
- package/dist/commands/worker/repositories.d.ts +20 -3
- package/dist/commands/worker/repositories.js +100 -21
- package/dist/commands/worker/repositories.js.map +1 -1
- package/dist/commands/worker/runtime.js +112 -217
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/setup-environment.d.ts +31 -0
- package/dist/commands/worker/setup-environment.js +146 -0
- package/dist/commands/worker/setup-environment.js.map +1 -0
- package/dist/commands/worker/setup.d.ts +11 -0
- package/dist/commands/worker/setup.js +113 -0
- package/dist/commands/worker/setup.js.map +1 -0
- package/dist/commands/worker/store.d.ts +12 -114
- package/dist/commands/worker/store.js +92 -817
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/commands/worker/types.d.ts +10 -114
- package/dist/commands/worker/worktrees.d.ts +9 -9
- package/dist/commands/worker/worktrees.js +77 -37
- package/dist/commands/worker/worktrees.js.map +1 -1
- package/dist/config/document.d.ts +0 -1
- package/dist/config/document.js +1 -14
- package/dist/config/document.js.map +1 -1
- package/dist/config/files.d.ts +7 -1
- package/dist/config/files.js +4 -1
- package/dist/config/files.js.map +1 -1
- package/dist/config/ownership.d.ts +12 -0
- package/dist/config/ownership.js +39 -0
- package/dist/config/ownership.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,173 +1,57 @@
|
|
|
1
|
-
import
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { actualTaskPane, executionContext, liveAgent, settleWorkerStops, workerOperation } from "./execution.js";
|
|
2
3
|
import { workerCleanupPrompt } from "./prompts.js";
|
|
3
|
-
|
|
4
|
-
const sameBinding = (left, right) => left.session === right.session && left.workspaceId === right.workspaceId && left.paneId === right.paneId && left.terminalId === right.terminalId;
|
|
4
|
+
const key = (owner) => `${owner.projectId}/${owner.taskId}/${owner.claimId}`;
|
|
5
5
|
export const createCleanupDriver = (deps) => {
|
|
6
|
-
const
|
|
7
|
-
const current = deps.store.getTask(task);
|
|
8
|
-
if (current === null)
|
|
9
|
-
throw new Error("The local cleanup record disappeared.");
|
|
10
|
-
return current;
|
|
11
|
-
};
|
|
12
|
-
const confirmChangedStop = (context, original, actual, evidence, signal) => {
|
|
13
|
-
if (evidence === null)
|
|
14
|
-
throw new Error("The original native stop observation is unavailable.");
|
|
15
|
-
return original.workspaceId !== actual.workspaceId || original.paneId !== actual.paneId
|
|
16
|
-
? workerOperation((operation) => deps.herdr.tasks.confirmReplacedStop(context, original, actual, evidence, operation), signal)
|
|
17
|
-
: workerOperation((operation) => deps.herdr.tasks.confirmRestoredStop(context, original, actual, evidence, operation), signal);
|
|
18
|
-
};
|
|
6
|
+
const attempts = new Map();
|
|
19
7
|
return {
|
|
20
|
-
advance: async (input, resources,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (task.resources.worktree === null)
|
|
36
|
-
throw new Error("An original Herdr workspace exists without its attributable task worktree; cleanup retained it.");
|
|
37
|
-
task = deps.store.bindHerdrExecution(task, pane.binding, null, deps.now());
|
|
38
|
-
}
|
|
39
|
-
else if (task.resources.herdr !== null && taskBinding(task) === null && pane !== undefined) {
|
|
40
|
-
task = deps.store.bindHerdrExecution(task, pane.binding, null, deps.now());
|
|
8
|
+
advance: async (input, resources, deleteWorktree, signal) => {
|
|
9
|
+
const identity = key(input.owner);
|
|
10
|
+
let attempt = attempts.get(identity);
|
|
11
|
+
if (attempt === undefined) {
|
|
12
|
+
attempt = { deadline: deps.now() + 600_000, notified: false, baseline: null };
|
|
13
|
+
attempts.set(identity, attempt);
|
|
14
|
+
deps.emit({ kind: "cleanup-started", ...(input.task === undefined ? {} : { task: input.task }), message: `Cleaning claim ${input.owner.claimId}; this attempt has a ten-minute deadline.` });
|
|
15
|
+
}
|
|
16
|
+
const stopContext = { ...input.owner, cwd: path.join(input.project.localPath, ".worktrees", "daynight", input.owner.taskId) };
|
|
17
|
+
const stopped = await settleWorkerStops(deps, input.owner, signal);
|
|
18
|
+
const pane = stopped ? undefined : actualTaskPane(input.owner, resources);
|
|
19
|
+
if (pane !== undefined) {
|
|
20
|
+
const agent = input.task?.agent ?? pane.kind ?? pane.nativeSession?.agent;
|
|
21
|
+
if (agent === undefined) {
|
|
22
|
+
await workerOperation((operation) => deps.herdr.tasks.stopAndClose(stopContext, pane.binding, operation), signal);
|
|
41
23
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
if (agent === undefined || agent === null)
|
|
56
|
-
throw new Error("The original native agent kind is unavailable; cleanup retained its resources.");
|
|
57
|
-
const context = executionContext(task, agent);
|
|
58
|
-
const actual = pane?.binding ?? binding;
|
|
59
|
-
if (task.nativeExecution?.launchSubmission === "never-submitted") {
|
|
60
|
-
if (workspace !== undefined)
|
|
61
|
-
await workerOperation((operation) => deps.herdr.tasks.confirmEmptyPane(context, actual, operation), signal);
|
|
62
|
-
task = deps.store.recordCleanupInputOutcome(task, "unavailable", deps.now());
|
|
63
|
-
task = deps.store.recordCleanupResult(task, "unavailable", "The original owned pane has no native launch submission or foreground work.", deps.now());
|
|
64
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
let evidence = task.nativeExecution?.stopObservation;
|
|
68
|
-
if (evidence === null || evidence === undefined) {
|
|
69
|
-
if (!sameBinding(binding, actual))
|
|
70
|
-
throw new Error("The original terminal changed before its native process identities were persisted; cleanup cannot infer stopped confirmation.");
|
|
71
|
-
evidence = await workerOperation((operation) => deps.herdr.tasks.captureStop(context, binding, operation), signal);
|
|
72
|
-
task = deps.store.recordStopObservation(task, evidence, deps.now());
|
|
73
|
-
}
|
|
74
|
-
if (sameBinding(binding, actual) && pane !== undefined && pane.kind === null && !pane.launchPending && !pane.interactiveReady && task.cleanup.result === null) {
|
|
75
|
-
await workerOperation((operation) => deps.herdr.tasks.confirmStopped(context, binding, evidence, operation), signal);
|
|
76
|
-
if (task.cleanup.input === "not-submitted")
|
|
77
|
-
task = deps.store.recordCleanupInputOutcome(task, "unavailable", deps.now());
|
|
78
|
-
task = deps.store.recordCleanupResult(task, "unavailable", "The original native processes exited before cleanup completion was established.", deps.now());
|
|
79
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
80
|
-
}
|
|
81
|
-
if (task.cleanup.input === "not-submitted" && task.cleanup.result === null && deps.now() < task.cleanup.deadline) {
|
|
82
|
-
if (workspace === undefined || !sameBinding(binding, actual)) {
|
|
83
|
-
task = deps.store.recordCleanupInputOutcome(task, "unavailable", deps.now());
|
|
84
|
-
task = deps.store.recordCleanupResult(task, "unavailable", "The original native session is unavailable for cleanup input.", deps.now());
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
deps.store.markCleanupInputSubmitting(task, deps.now());
|
|
88
|
-
try {
|
|
89
|
-
const receipt = await workerOperation((operation) => deps.herdr.tasks.submitPrompt(context, binding, workerCleanupPrompt(task), operation), signal, Math.max(1, Math.min(30_000, task.cleanup.deadline - deps.now())));
|
|
90
|
-
task = deps.store.recordCleanupInputOutcome(task, "submitted", deps.now());
|
|
91
|
-
if (receipt.observation.status === "idle" && receipt.observation.interactiveReady && receipt.observation.stateChangeSeq !== null && receipt.observation.completionSeq !== null) {
|
|
92
|
-
task = deps.store.recordCleanupInputEvidence(task, { stateChangeSeq: receipt.observation.stateChangeSeq, completionSeq: receipt.observation.completionSeq }, deps.now());
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
if (error instanceof HerdrAgentActionError && error.submission !== "unknown") {
|
|
97
|
-
task = deps.store.recordCleanupInputOutcome(task, "rejected", deps.now());
|
|
98
|
-
task = deps.store.recordCleanupResult(task, "failed", error.message, deps.now());
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
deps.store.recordCleanupError(task, error instanceof Error ? error.message : String(error), deps.now());
|
|
102
|
-
deps.emit({ kind: "cleanup-input-unknown", task: refresh(task), message: "Cleanup input may have been submitted; it will not be replayed.", error });
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
task = refresh(task);
|
|
108
|
-
if (task.cleanup.result === null) {
|
|
109
|
-
if (workspace === undefined) {
|
|
110
|
-
await workerOperation((operation) => deps.herdr.tasks.confirmMissingWorkspaceStopped(context, binding, evidence, operation), signal);
|
|
111
|
-
task = deps.store.recordCleanupResult(task, "unavailable", "The original workspace is absent and its original processes have stopped.", deps.now());
|
|
112
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
113
|
-
}
|
|
114
|
-
else if (!sameBinding(binding, actual)) {
|
|
115
|
-
await confirmChangedStop(context, binding, actual, evidence, signal);
|
|
116
|
-
task = deps.store.recordCleanupResult(task, "unavailable", "The original processes stopped before Herdr restored its inactive shell.", deps.now());
|
|
117
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
118
|
-
}
|
|
119
|
-
else if (deps.now() >= task.cleanup.deadline) {
|
|
120
|
-
task = deps.store.recordCleanupResult(task, "timed-out", "The original cleanup deadline elapsed; temporary resource cleanup is not proven complete.", deps.now());
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
pane = actualTaskPane(task, await workerOperation((operation) => deps.herdr.tasks.listResources(operation), signal));
|
|
124
|
-
const baseline = task.cleanup.baseline;
|
|
125
|
-
if (pane !== undefined && pane.kind === null && !pane.launchPending && !pane.interactiveReady) {
|
|
126
|
-
await workerOperation((operation) => deps.herdr.tasks.confirmStopped(context, binding, evidence, operation), signal);
|
|
127
|
-
task = deps.store.recordCleanupResult(task, "unavailable", "The original native processes exited before cleanup completion was established.", deps.now());
|
|
128
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
129
|
-
}
|
|
130
|
-
else if (baseline !== null && pane !== undefined && (pane.status === "idle" || pane.status === "done") && pane.stateChangeSeq !== null && pane.stateChangeSeq > baseline.stateChangeSeq && pane.completionSeq !== null && pane.completionSeq > baseline.completionSeq) {
|
|
131
|
-
task = deps.store.recordCleanupResult(task, "completed", null, deps.now());
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
deps.emit({ kind: "cleanup-waiting", task, message: "Waiting for the original cleanup turn or its fixed deadline; the execution still occupies capacity." });
|
|
135
|
-
return task;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
if (!task.cleanup.agentStopped) {
|
|
140
|
-
if (workspace === undefined)
|
|
141
|
-
await workerOperation((operation) => deps.herdr.tasks.confirmMissingWorkspaceStopped(context, binding, evidence, operation), signal);
|
|
142
|
-
else if (!sameBinding(binding, actual))
|
|
143
|
-
await confirmChangedStop(context, binding, actual, evidence, signal);
|
|
144
|
-
else
|
|
145
|
-
await workerOperation((operation) => deps.herdr.tasks.forceStop(context, binding, evidence, operation), signal);
|
|
146
|
-
task = deps.store.confirmAgentStopped(task, { agentStopped: true }, deps.now());
|
|
24
|
+
else {
|
|
25
|
+
const context = executionContext({ ...input, task: { agent } });
|
|
26
|
+
if (liveAgent(pane) && !attempt.notified && deps.now() < attempt.deadline) {
|
|
27
|
+
attempt.notified = true;
|
|
28
|
+
try {
|
|
29
|
+
const { observation } = await workerOperation((operation) => deps.herdr.tasks.submitPrompt(context, pane.binding, workerCleanupPrompt(input.owner, attempt.deadline), operation), signal, Math.max(1, Math.min(30_000, attempt.deadline - deps.now())));
|
|
30
|
+
if (observation.status === "idle" && observation.interactiveReady
|
|
31
|
+
&& observation.stateChangeSeq !== null
|
|
32
|
+
&& observation.completionSeq !== null) {
|
|
33
|
+
attempt.baseline = { stateChangeSeq: observation.stateChangeSeq, completionSeq: observation.completionSeq };
|
|
147
34
|
}
|
|
148
35
|
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
deps.emit({ kind: "cleanup-notification-error", ...(input.task === undefined ? {} : { task: input.task }), message: "Cleanup notification failed; the current bounded cleanup attempt continues.", error });
|
|
38
|
+
}
|
|
149
39
|
}
|
|
40
|
+
const completed = attempt.baseline !== null && (pane.status === "idle" || pane.status === "done")
|
|
41
|
+
&& pane.stateChangeSeq !== null && pane.stateChangeSeq > attempt.baseline.stateChangeSeq
|
|
42
|
+
&& pane.completionSeq !== null && pane.completionSeq > attempt.baseline.completionSeq;
|
|
43
|
+
if (liveAgent(pane) && !completed && deps.now() < attempt.deadline)
|
|
44
|
+
return false;
|
|
45
|
+
await workerOperation((operation) => deps.herdr.tasks.stopAndClose(context, pane.binding, operation), signal);
|
|
150
46
|
}
|
|
151
|
-
if (!task.cleanup.workspaceClosed) {
|
|
152
|
-
if (binding !== null) {
|
|
153
|
-
if (agent === undefined || agent === null)
|
|
154
|
-
throw new Error("The original native agent kind is unavailable for workspace identity verification.");
|
|
155
|
-
await workerOperation((operation) => deps.herdr.tasks.closeWorkspace(executionContext(task, agent), pane?.binding ?? binding, { agentStopped: true }, operation), signal);
|
|
156
|
-
}
|
|
157
|
-
task = deps.store.confirmWorkspaceClosed(task, { workspaceClosed: true }, deps.now());
|
|
158
|
-
}
|
|
159
|
-
if (task.cleanup.kind === "terminal" && !task.cleanup.worktreeDeleted) {
|
|
160
|
-
await workerOperation((operation) => deps.git.removeWorktree(task, { terminal: true, agentStopped: true, workspaceClosed: true }, operation), signal);
|
|
161
|
-
task = deps.store.confirmWorktreeDeleted(task, { worktreeDeleted: true }, deps.now());
|
|
162
|
-
}
|
|
163
|
-
deps.emit({ kind: task.cleanup.kind === "terminal" ? "cleaned" : "shutdown-stopped", task, message: task.cleanup.kind === "terminal" ? "Original native agent and workspace stopped; the original worktree was deleted." : "Original agent and workspace stopped; the unfinished worktree, claim and native history were preserved." });
|
|
164
|
-
return task;
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
deps.store.recordCleanupError(task, error instanceof Error ? error.message : String(error), deps.now());
|
|
168
|
-
throw error;
|
|
169
47
|
}
|
|
48
|
+
if (deleteWorktree)
|
|
49
|
+
await workerOperation((operation) => deps.git.removeWorktree(input.project, input.owner, operation), signal, 180_000);
|
|
50
|
+
attempts.delete(identity);
|
|
51
|
+
deps.emit({ kind: deleteWorktree ? "cleaned" : "agent-stopped", ...(input.task === undefined ? {} : { task: input.task }), message: deleteWorktree ? "Stopped the task resources and deleted its worktree; the branch remains." : "Stopped the task resources and preserved its worktree." });
|
|
52
|
+
return true;
|
|
170
53
|
},
|
|
54
|
+
remaining: (owner) => Math.max(0, (attempts.get(key(owner))?.deadline ?? deps.now()) - deps.now()),
|
|
171
55
|
};
|
|
172
56
|
};
|
|
173
57
|
//# sourceMappingURL=cleanup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/worker/cleanup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/worker/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ServerConfiguration } from "../../config/server.js";
|
|
2
2
|
import type { PathApi } from "../../platform/filesystem.js";
|
|
3
3
|
import type { WorkerPaths } from "./paths.js";
|
|
4
|
-
import type {
|
|
5
|
-
export type WorkerRepositoryConfiguration =
|
|
4
|
+
import type { ExecutionConfiguration } from "./types.js";
|
|
5
|
+
export type WorkerRepositoryConfiguration = ExecutionConfiguration & {
|
|
6
6
|
remote: string;
|
|
7
7
|
path: string;
|
|
8
8
|
projectId?: string;
|
|
9
9
|
};
|
|
10
|
-
export type WorkerConfiguration =
|
|
10
|
+
export type WorkerConfiguration = ExecutionConfiguration & {
|
|
11
11
|
repositoryRoot: string;
|
|
12
12
|
maxConcurrent: number;
|
|
13
13
|
pollIntervalMs: number;
|
|
@@ -20,10 +20,6 @@ const mapping = (value, field) => {
|
|
|
20
20
|
throw new TypeError(`${field} must be a mapping.`);
|
|
21
21
|
return value;
|
|
22
22
|
};
|
|
23
|
-
const keys = (value, accepted, field) => {
|
|
24
|
-
if (Object.keys(value).some((key) => !accepted.includes(key)))
|
|
25
|
-
throw new TypeError(`${field} contains an unsupported field.`);
|
|
26
|
-
};
|
|
27
23
|
const text = (value, field) => {
|
|
28
24
|
if (typeof value !== "string" || value.trim() === "" || !value.isWellFormed() || /\p{Cc}/u.test(value))
|
|
29
25
|
throw new TypeError(`${field} must be nonempty text without control characters.`);
|
|
@@ -67,7 +63,6 @@ const repositoryPath = (value, field, paths, pathApi) => {
|
|
|
67
63
|
export const parseWorkerConfiguration = (source, paths, pathApi = path) => {
|
|
68
64
|
const { mapping: root } = parseConfigurationDocument(source, paths);
|
|
69
65
|
const worker = Object.hasOwn(root, "worker") ? mapping(root.worker, "worker") : {};
|
|
70
|
-
keys(worker, ["repositoryRoot", "maxConcurrent", "pollIntervalMs", "recoveryLimit", "agent", "model", "args", "repositories"], "worker");
|
|
71
66
|
const repositoryRoot = Object.hasOwn(worker, "repositoryRoot")
|
|
72
67
|
? validateRepositoryRoot(text(worker.repositoryRoot, "worker.repositoryRoot"), "worker.repositoryRoot", pathApi)
|
|
73
68
|
: workerConfigurationDefaults.repositoryRoot;
|
|
@@ -83,7 +78,6 @@ export const parseWorkerConfiguration = (source, paths, pathApi = path) => {
|
|
|
83
78
|
const repositories = configuredRepositories.map((entry, index) => {
|
|
84
79
|
const field = `worker.repositories[${index}]`;
|
|
85
80
|
const repository = mapping(entry, field);
|
|
86
|
-
keys(repository, ["remote", "path", "projectId", "agent", "model", "args"], field);
|
|
87
81
|
const remote = text(repository.remote, `${field}.remote`);
|
|
88
82
|
const identity = repositoryIdentity(remote);
|
|
89
83
|
if (identities.has(identity))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/worker/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE5I,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAsBnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,cAAc,EAAE,qBAAqB;IACrC,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,CAAC;IAChB,KAAK,EAAE,SAAkB;CAC1B,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,KAAa,EAA2B,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IAC5H,OAAO,KAAgC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/worker/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { TaskPlatform, WorkerMachine } from "../../api/types.js";
|
|
2
2
|
import type { WorkerRepositoryAssignment } from "./coordinator.js";
|
|
3
|
+
import type { WorkerEvent } from "./execution.js";
|
|
3
4
|
import type { WorkerRemote } from "./remote.js";
|
|
4
5
|
import type { WorkerStore } from "./store.js";
|
|
5
|
-
import type { LocalTask,
|
|
6
|
+
import type { ClaimIdentity, LocalTask, ResourceOwner } from "./types.js";
|
|
6
7
|
export type WorkerControlRequest = {
|
|
7
8
|
kind: "retry";
|
|
8
9
|
taskId: string;
|
|
@@ -20,23 +21,13 @@ export type WorkerControlRequest = {
|
|
|
20
21
|
projectId?: string;
|
|
21
22
|
claimId: string;
|
|
22
23
|
version: bigint;
|
|
23
|
-
} | {
|
|
24
|
-
kind: "transfer";
|
|
25
|
-
taskId: string;
|
|
26
|
-
projectId?: string;
|
|
27
|
-
claimId: string;
|
|
28
|
-
version: bigint;
|
|
29
|
-
target: Omit<TransferTarget, "worktreeId">;
|
|
30
24
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
advance: (input: LocalTask, signal: AbortSignal, mode?: {
|
|
38
|
-
submit: boolean;
|
|
39
|
-
}) => Promise<LocalTask>;
|
|
25
|
+
type ControlCoordinator = {
|
|
26
|
+
advanceRetry(identity: ClaimIdentity): Promise<void>;
|
|
27
|
+
cleanupSource(identity: ClaimIdentity, settings: {
|
|
28
|
+
deleteWorktree?: boolean;
|
|
29
|
+
}): Promise<ResourceOwner>;
|
|
30
|
+
completeSource(owner: ResourceOwner): Promise<void>;
|
|
40
31
|
};
|
|
41
32
|
export declare const submitWorkerControl: (options: {
|
|
42
33
|
store: WorkerStore;
|
|
@@ -48,8 +39,10 @@ export declare const submitWorkerControl: (options: {
|
|
|
48
39
|
repositories: readonly WorkerRepositoryAssignment[];
|
|
49
40
|
request: WorkerControlRequest;
|
|
50
41
|
signal: AbortSignal;
|
|
51
|
-
|
|
42
|
+
coordinator: ControlCoordinator;
|
|
43
|
+
emit: (event: WorkerEvent) => void;
|
|
52
44
|
}) => Promise<{
|
|
53
45
|
task: LocalTask | null;
|
|
54
46
|
message: string;
|
|
55
47
|
}>;
|
|
48
|
+
export {};
|