@codetreker/daynight 0.21.13 → 0.24.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 +364 -287
- package/config.example.yml +69 -0
- 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.d.ts +2 -1
- package/dist/commands/review/config.js +22 -39
- package/dist/commands/review/config.js.map +1 -1
- package/dist/commands/review/configuration-guide.js +7 -6
- package/dist/commands/review/configuration-guide.js.map +1 -1
- package/dist/commands/review/definition.js +1 -1
- package/dist/commands/review/definition.js.map +1 -1
- package/dist/commands/review/repositories.js +19 -19
- 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/attach.d.ts +3 -0
- package/dist/commands/worker/attach.js +53 -0
- package/dist/commands/worker/attach.js.map +1 -0
- 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 +13 -3
- package/dist/commands/worker/config.js +35 -13
- package/dist/commands/worker/config.js.map +1 -1
- package/dist/commands/worker/configuration-guide.d.ts +19 -0
- package/dist/commands/worker/configuration-guide.js +86 -0
- package/dist/commands/worker/configuration-guide.js.map +1 -0
- 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 +311 -473
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/definition.js +34 -18
- 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 +92 -283
- 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/instance.d.ts +1 -0
- package/dist/commands/worker/herdr/instance.js +30 -5
- package/dist/commands/worker/herdr/instance.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 +8 -0
- package/dist/commands/worker/index.js +21 -14
- 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 +40 -0
- package/dist/commands/worker/repositories.js +236 -0
- package/dist/commands/worker/repositories.js.map +1 -0
- package/dist/commands/worker/runtime.d.ts +1 -0
- package/dist/commands/worker/runtime.js +135 -212
- 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 -22
- package/dist/config/document.js.map +1 -1
- package/dist/config/errors.d.ts +2 -2
- package/dist/config/errors.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/dist/repository/location.d.ts +7 -0
- package/dist/repository/location.js +51 -0
- package/dist/repository/location.js.map +1 -0
- package/package.json +4 -3
|
@@ -24,7 +24,7 @@ export const reviewDefinition = {
|
|
|
24
24
|
{ names: ["--path"], description: "Dedicated review clone path (relative to the current directory)", value: { name: "path", kind: "directory" } },
|
|
25
25
|
helpOption,
|
|
26
26
|
],
|
|
27
|
-
details: "Without --path, repositoryRoot (default: ~/daynights) determines the clone path.\nThe resolved absolute path is saved in ~/.daynight/config.yml.\nChanges take effect the next time daynight review run starts.",
|
|
27
|
+
details: "Without --path, review.repositoryRoot (default: ~/daynights) determines the clone path.\nThe resolved absolute path is saved in ~/.daynight/config.yml.\nChanges take effect the next time daynight review run starts.",
|
|
28
28
|
},
|
|
29
29
|
],
|
|
30
30
|
options: [helpOption],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../src/commands/review/definition.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAkB,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE7G,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,mEAAmE;IAChF,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,4CAA4C;YACzD,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,OAAO,EAAE,0EAA0E;SACpF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,OAAO,EAAE,wTAAwT;SAClU;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,+DAA+D;YAC5E,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;YACtF,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,iEAAiE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;gBACjJ,UAAU;aACX;YACD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../src/commands/review/definition.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAkB,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE7G,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,mEAAmE;IAChF,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,4CAA4C;YACzD,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,OAAO,EAAE,0EAA0E;SACpF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,OAAO,EAAE,wTAAwT;SAClU;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,+DAA+D;YAC5E,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;YACtF,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,iEAAiE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;gBACjJ,UAAU;aACX;YACD,OAAO,EAAE,wNAAwN;SAClO;KACF;IACD,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,OAAO,EAAE,6JAA6J;CACvK,CAAC"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { Document } from "yaml";
|
|
3
|
+
import { verifyConfigurationUpdate } from "../../config/ownership.js";
|
|
3
4
|
import { parseConfigurationDocument } from "../../config/document.js";
|
|
5
|
+
import { repositoryPathComponent } from "../../repository/location.js";
|
|
4
6
|
import { updateConfigurationFile } from "../../config/files.js";
|
|
5
|
-
import { defaultRepositoryRoot, remoteIdentity, resolveRepositoryRoot, validateConfigurationSource, validateRegistrationConfigurationSource } from "./config.js";
|
|
7
|
+
import { defaultRepositoryRoot, remoteIdentity, reviewConfigurationMapping, resolveRepositoryRoot, validateConfigurationSource, validateRegistrationConfigurationSource } from "./config.js";
|
|
6
8
|
import { missingPathsReferToSameDirectory, resolvePhysicalDirectory } from "../../platform/filesystem.js";
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (/^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(escaped)) {
|
|
11
|
-
escaped = `%${escaped.charCodeAt(0).toString(16).toUpperCase()}${escaped.slice(1)}`;
|
|
12
|
-
}
|
|
13
|
-
return escaped;
|
|
9
|
+
const reviewRepositoryOwnership = {
|
|
10
|
+
section: "review", fields: ["repositoryRoot", "repositories"],
|
|
11
|
+
retainedSequence: { field: "repositories", identity: "remote", fields: [] },
|
|
14
12
|
};
|
|
15
13
|
const sameDirectory = async (first, second) => {
|
|
16
14
|
const [left, right] = await Promise.all([resolvePhysicalDirectory(first), resolvePhysicalDirectory(second)]);
|
|
@@ -22,13 +20,14 @@ const sameDirectory = async (first, second) => {
|
|
|
22
20
|
};
|
|
23
21
|
export const updateRepositoryConfiguration = async (source, input, runtimePaths, options) => {
|
|
24
22
|
const existing = source === undefined ? undefined : await validateRegistrationConfigurationSource(source, runtimePaths);
|
|
25
|
-
const document = source === undefined ? new Document({ repositoryRoot: defaultRepositoryRoot, repositories: [] }) : parseConfigurationDocument(source, runtimePaths).document;
|
|
26
|
-
const
|
|
27
|
-
const
|
|
23
|
+
const document = source === undefined ? new Document({ review: { repositoryRoot: defaultRepositoryRoot, repositories: [] } }) : parseConfigurationDocument(source, runtimePaths).document;
|
|
24
|
+
const mapping = document.toJS();
|
|
25
|
+
const decoded = reviewConfigurationMapping(mapping);
|
|
26
|
+
const root = document.hasIn(["review", "repositoryRoot"]) ? decoded.repositoryRoot : defaultRepositoryRoot;
|
|
28
27
|
const identity = remoteIdentity(input.remote, "remote");
|
|
29
28
|
const previous = existing?.repositories.find((repository) => repository.coordinate === identity.coordinate);
|
|
30
29
|
if (previous !== undefined && input.path === undefined) {
|
|
31
|
-
return { result: { repository: previous, added: false } };
|
|
30
|
+
return { kind: "unchanged", result: { repository: previous, added: false } };
|
|
32
31
|
}
|
|
33
32
|
let repositoryPath;
|
|
34
33
|
if (input.path === undefined) {
|
|
@@ -45,21 +44,22 @@ export const updateRepositoryConfiguration = async (source, input, runtimePaths,
|
|
|
45
44
|
}
|
|
46
45
|
if (previous !== undefined) {
|
|
47
46
|
if (await sameDirectory(previous.path, repositoryPath)) {
|
|
48
|
-
return { result: { repository: previous, added: false } };
|
|
47
|
+
return { kind: "unchanged", result: { repository: previous, added: false } };
|
|
49
48
|
}
|
|
50
49
|
throw new Error(`Repository ${identity.coordinate} is already configured at ${previous.path}; the requested path ${repositoryPath} differs.`);
|
|
51
50
|
}
|
|
52
|
-
if (!document.
|
|
53
|
-
document.
|
|
51
|
+
if (!document.hasIn(["review", "repositoryRoot"])) {
|
|
52
|
+
document.setIn(["review", "repositoryRoot"], defaultRepositoryRoot);
|
|
54
53
|
}
|
|
55
|
-
if (!document.
|
|
56
|
-
document.
|
|
54
|
+
if (!document.hasIn(["review", "repositories"])) {
|
|
55
|
+
document.setIn(["review", "repositories"], document.createNode([]));
|
|
57
56
|
}
|
|
58
|
-
document.addIn(["repositories"], { remote: input.remote, path: repositoryPath });
|
|
57
|
+
document.addIn(["review", "repositories"], { remote: input.remote, path: repositoryPath });
|
|
59
58
|
const updatedSource = document.toString();
|
|
59
|
+
verifyConfigurationUpdate(mapping, parseConfigurationDocument(updatedSource, runtimePaths).mapping, reviewRepositoryOwnership);
|
|
60
60
|
const configuration = await validateConfigurationSource(updatedSource, runtimePaths);
|
|
61
61
|
const repository = configuration.repositories.at(-1);
|
|
62
|
-
return { result: { repository, added: true }, source: updatedSource };
|
|
62
|
+
return { kind: "write", result: { repository, added: true }, source: updatedSource, ownership: reviewRepositoryOwnership };
|
|
63
63
|
};
|
|
64
64
|
export const addRepository = async (input, runtimePaths, options) => {
|
|
65
65
|
if (!path.isAbsolute(options.workingDirectory) || !path.isAbsolute(options.homeDirectory)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../src/commands/review/repositories.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,uCAAuC,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../src/commands/review/repositories.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ Read [the handbook](handbook.md) for CLI operations and failure semantics.
|
|
|
8
8
|
## Establish the assignment
|
|
9
9
|
|
|
10
10
|
The startup prompt supplies `projectId`, `taskId`, the original `claimId`,
|
|
11
|
-
`worktreeId`, the actual worktree path and branch, and the
|
|
12
|
-
|
|
11
|
+
`worktreeId`, the actual worktree path and branch, and the configuration selected
|
|
12
|
+
for this invocation. Use that explicit assignment throughout execution and recovery.
|
|
13
13
|
Task properties, the working directory, environment variables, and an ordinary
|
|
14
14
|
conversation request do not establish this managed context.
|
|
15
15
|
|
|
@@ -34,9 +34,10 @@ daynight task show <task-id> --project <project-id> --json
|
|
|
34
34
|
Verify its `projectId` and `id`, `status=in_progress`, and
|
|
35
35
|
`properties.worker.state=active` with the supplied `claimId` and `worktreeId`.
|
|
36
36
|
Verify the actual working directory and Git branch match the supplied worktree.
|
|
37
|
-
Use the supplied
|
|
38
|
-
current
|
|
39
|
-
|
|
37
|
+
Use the configuration supplied for this invocation. The controller selects the
|
|
38
|
+
current settings appropriate to the recorded agent when it launches or resumes
|
|
39
|
+
a native process; an executor does not independently replace that assignment.
|
|
40
|
+
If the same claim is already `completed` and the task is `done`, report the existing completion and return without reexecuting it. Any
|
|
40
41
|
other state or identity mismatch leaves execution waiting; an observed claim
|
|
41
42
|
change stops business writes immediately.
|
|
42
43
|
|
|
@@ -106,7 +106,7 @@ new execution interval and clears completion; returning to todo clears both
|
|
|
106
106
|
endpoints. In_progress to done retains the nullable start and records completion.
|
|
107
107
|
Todo to done records only completion, with unknown duration. Same-status and
|
|
108
108
|
metadata updates preserve timing. Ordinary status changes provide no process ownership,
|
|
109
|
-
release,
|
|
109
|
+
release, withdrawal, stop, or lease semantics. The Web confirms every status choice,
|
|
110
110
|
including the current status; cancel and Escape submit no request.
|
|
111
111
|
|
|
112
112
|
**Task deletion.** `task delete <task-id> [--remove-depends] --if-version <version>`
|
|
@@ -42,7 +42,7 @@ that assumption. Follow the state rules below before any permission change.
|
|
|
42
42
|
| `todo`, permission false, review fails | Keep permission false and report concrete gaps. Confirmed-information organization follows the review rules above. |
|
|
43
43
|
| `todo`, permission true | Read-only re-audit; do not rewrite the same flag as an audit marker. |
|
|
44
44
|
| `in_progress`, permission false | Report the permission lock; do not newly enable or reset status to evade it. |
|
|
45
|
-
| `in_progress`, permission true | Read-only re-audit and report actual execution state. Review does not pause, stop, release, or
|
|
45
|
+
| `in_progress`, permission true | Read-only re-audit and report actual execution state. Review does not pause, stop, release, or withdraw execution. |
|
|
46
46
|
| `done` | Report completion and no handoff needed; do not reopen or update permission. This is mode policy, not an API prohibition on completed-task updates. |
|
|
47
47
|
| Active or released worker record | Preserve ownership and execution history. An active execution keeps its original resources. A released task starts a fresh claim/worktree/native session only through an authorized management decision; enabling permission neither resumes it nor restores deleted source resources. |
|
|
48
48
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { createOperation } from "../../api/operation.js";
|
|
2
|
+
import { createHerdrInstance } from "./herdr/instance.js";
|
|
3
|
+
import { spawnHerdrProcess } from "./herdr/command.js";
|
|
4
|
+
import { resolveWorkerPaths } from "./paths.js";
|
|
5
|
+
export const attachWorker = async (options) => {
|
|
6
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY)
|
|
7
|
+
throw new Error("daynight worker attach requires an interactive terminal.");
|
|
8
|
+
const instance = createHerdrInstance({ paths: resolveWorkerPaths(options.homeDirectory) });
|
|
9
|
+
const operation = createOperation({ limits: { totalMs: 30_000 } });
|
|
10
|
+
try {
|
|
11
|
+
await instance.connect(operation);
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
operation.dispose();
|
|
15
|
+
}
|
|
16
|
+
const attachment = instance.attachment;
|
|
17
|
+
const environment = Object.fromEntries(Object.entries(process.env).filter(([name]) => !attachment.unsetEnvironment.some((key) => key.toUpperCase() === name.toUpperCase())));
|
|
18
|
+
Object.assign(environment, attachment.environment);
|
|
19
|
+
// The explicit client connects only to an existing daemon, including if it exits after the probe.
|
|
20
|
+
// https://github.com/herdrdev/herdr/blob/2ecf19a92fc3a7fff75b6ce3655ef04f4625ec01/src/main.rs#L573-L577
|
|
21
|
+
const child = spawnHerdrProcess(attachment.executable, [...attachment.arguments, "client"], { env: environment, stdio: "inherit", detached: false, windowsHide: false });
|
|
22
|
+
const signals = process.platform === "win32" ? ["SIGINT", "SIGTERM", "SIGBREAK"] : ["SIGINT", "SIGTERM", "SIGHUP"];
|
|
23
|
+
let failure;
|
|
24
|
+
const listeners = signals.map((signal) => {
|
|
25
|
+
const forward = () => {
|
|
26
|
+
if (child.exitCode !== null || child.signalCode !== null)
|
|
27
|
+
return;
|
|
28
|
+
try {
|
|
29
|
+
child.kill(signal === "SIGBREAK" ? "SIGINT" : signal);
|
|
30
|
+
}
|
|
31
|
+
catch (cause) {
|
|
32
|
+
failure = new Error(`Cannot forward ${signal} to the Herdr attach client.`, { cause });
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
process.on(signal, forward);
|
|
36
|
+
return { signal, forward };
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
const result = await new Promise((resolve) => {
|
|
40
|
+
child.once("error", (cause) => { failure = new Error("Cannot start the Herdr attach client.", { cause }); });
|
|
41
|
+
child.once("close", (code, signal) => resolve({ code, signal }));
|
|
42
|
+
});
|
|
43
|
+
if (failure !== undefined)
|
|
44
|
+
throw failure;
|
|
45
|
+
if (result.code !== 0 || result.signal !== null)
|
|
46
|
+
throw new Error(`The Herdr attach client failed: exit=${String(result.code)}, signal=${String(result.signal)}.`);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
for (const { signal, forward } of listeners)
|
|
50
|
+
process.off(signal, forward);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/commands/worker/attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { HerdrOwnedWorkspace } from "./herdr.js";
|
|
2
|
-
import type { CleanupState, LocalTask } from "./types.js";
|
|
3
2
|
import type { ExecutionDependencies } from "./execution.js";
|
|
3
|
+
import type { LocalTask, ResourceOwner, WorkerProject } from "./types.js";
|
|
4
|
+
export type CleanupInput = {
|
|
5
|
+
owner: ResourceOwner;
|
|
6
|
+
project: WorkerProject;
|
|
7
|
+
task?: LocalTask;
|
|
8
|
+
};
|
|
4
9
|
export declare const createCleanupDriver: (deps: ExecutionDependencies) => {
|
|
5
|
-
advance: (input:
|
|
10
|
+
advance: (input: CleanupInput, resources: readonly HerdrOwnedWorkspace[], deleteWorktree: boolean, signal?: AbortSignal) => Promise<boolean>;
|
|
11
|
+
remaining: (owner: ResourceOwner) => number;
|
|
6
12
|
};
|
|
@@ -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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKnD,MAAM,GAAG,GAAG,CAAC,KAAoB,EAAU,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AAEpG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAA2B,EAAE,EAAE;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,KAAmB,EAAE,SAAyC,EAAE,cAAuB,EAAE,MAAoB,EAAoB,EAAE;YACjJ,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC9E,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,KAAK,CAAC,KAAK,CAAC,OAAO,2CAA2C,EAAE,CAAC,CAAC;YAC/L,CAAC;YACD,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9H,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC1E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,KAAK,GAA4B,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;gBACnG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,eAAe,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;gBACpH,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBAChE,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;wBAC1E,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACxB,IAAI,CAAC;4BACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,eAAe,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BACzP,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,gBAAgB;mCAC5D,WAAW,CAAC,cAAc,KAAK,IAAI;mCACnC,WAAW,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;gCACxC,OAAO,CAAC,QAAQ,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;4BAC9G,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,6EAA6E,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC9M,CAAC;oBACH,CAAC;oBACD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;2BAC5F,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc;2BACrF,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;oBACxF,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBACjF,MAAM,eAAe,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChH,CAAC;YACH,CAAC;YACD,IAAI,cAAc;gBAAE,MAAM,eAAe,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1I,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,0EAA0E,CAAC,CAAC,CAAC,wDAAwD,EAAE,CAAC,CAAC;YAC9R,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,CAAC,KAAoB,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;KAC1H,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
+
import type { ServerConfiguration } from "../../config/server.js";
|
|
1
2
|
import type { PathApi } from "../../platform/filesystem.js";
|
|
2
3
|
import type { WorkerPaths } from "./paths.js";
|
|
3
|
-
import type {
|
|
4
|
-
export type WorkerRepositoryConfiguration =
|
|
4
|
+
import type { ExecutionConfiguration } from "./types.js";
|
|
5
|
+
export type WorkerRepositoryConfiguration = ExecutionConfiguration & {
|
|
5
6
|
remote: string;
|
|
6
7
|
path: string;
|
|
7
8
|
projectId?: string;
|
|
8
9
|
};
|
|
9
|
-
export type WorkerConfiguration =
|
|
10
|
+
export type WorkerConfiguration = ExecutionConfiguration & {
|
|
11
|
+
repositoryRoot: string;
|
|
10
12
|
maxConcurrent: number;
|
|
11
13
|
pollIntervalMs: number;
|
|
12
14
|
repositories: readonly WorkerRepositoryConfiguration[];
|
|
13
15
|
};
|
|
16
|
+
export type WorkerConfigurationSnapshot = ServerConfiguration & {
|
|
17
|
+
readonly source: string | undefined;
|
|
18
|
+
readonly configuration: WorkerConfiguration;
|
|
19
|
+
};
|
|
14
20
|
export declare const workerConfigurationDefaults: Readonly<{
|
|
21
|
+
repositoryRoot: "~/daynights";
|
|
15
22
|
maxConcurrent: 1;
|
|
16
23
|
pollIntervalMs: 5000;
|
|
17
24
|
recoveryLimit: 3;
|
|
@@ -19,3 +26,6 @@ export declare const workerConfigurationDefaults: Readonly<{
|
|
|
19
26
|
}>;
|
|
20
27
|
export declare const parseWorkerConfiguration: (source: string, paths: WorkerPaths, pathApi?: PathApi) => WorkerConfiguration;
|
|
21
28
|
export declare const readWorkerConfiguration: (paths: WorkerPaths, signal?: AbortSignal) => Promise<WorkerConfiguration>;
|
|
29
|
+
export declare const validateWorkerConfigurationSnapshotSource: (source: string | undefined, paths: WorkerPaths, signal?: AbortSignal) => Promise<WorkerConfigurationSnapshot>;
|
|
30
|
+
export declare const readWorkerConfigurationSnapshot: (paths: WorkerPaths, signal?: AbortSignal) => Promise<WorkerConfigurationSnapshot>;
|
|
31
|
+
export declare const validateWorkerConfigurationSource: (source: string, paths: WorkerPaths, signal?: AbortSignal) => Promise<WorkerConfiguration>;
|