@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,53 +1,66 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
3
|
+
import { CLEANUP_OPERATION_MS, cleanupOperation } from "../cleanup-operation.js";
|
|
4
|
+
import { ensureCleanupSchedule } from "./cleanup-schedule.js";
|
|
5
|
+
import { WorkerCleanupError } from "./cleanup-error.js";
|
|
6
|
+
import { actualTaskPane, executionContext, liveAgent, settleWorkerStops } from "./execution.js";
|
|
3
7
|
import { workerCleanupPrompt } from "./prompts.js";
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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, submitted: false };
|
|
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
|
-
}
|
|
8
|
+
export const createCleanupDriver = (deps) => ({
|
|
9
|
+
advance: async (input, deleteWorktree, signal) => {
|
|
10
|
+
const deadline = deleteWorktree ? ensureCleanupSchedule(deps.store, input.owner, deps.now()).deadline : deps.now() + 600_000;
|
|
11
|
+
let stage = "agent-stop";
|
|
12
|
+
try {
|
|
16
13
|
const stopContext = { ...input.owner, cwd: path.join(input.project.localPath, ".worktrees", "daynight", input.owner.taskId) };
|
|
17
|
-
|
|
18
|
-
const
|
|
14
|
+
await settleWorkerStops(deps, input.owner, signal, cleanupOperation);
|
|
15
|
+
const observe = async () => actualTaskPane(input.owner, await cleanupOperation(operation => deps.herdr.tasks.listResources(operation), signal));
|
|
16
|
+
let pane = await observe();
|
|
19
17
|
if (pane !== undefined) {
|
|
20
18
|
const agent = input.task?.agent ?? pane.kind ?? pane.nativeSession?.agent;
|
|
21
|
-
if (agent
|
|
22
|
-
await workerOperation((operation) => deps.herdr.tasks.stopAndClose(stopContext, pane.binding, operation), signal);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
19
|
+
if (agent !== undefined && liveAgent(pane) && deps.now() < deadline) {
|
|
25
20
|
const context = executionContext({ ...input, task: { agent } });
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
21
|
+
deps.emit({ kind: "cleanup-started", ...(input.task === undefined ? {} : { task: input.task }), message: `Cleaning claim ${input.owner.claimId}; observing its resources until ${new Date(deadline).toISOString()}.` });
|
|
22
|
+
// Herdr has no per-input operation lookup. The notification is advisory;
|
|
23
|
+
// a restarted attempt observes resources again and may notify the surviving agent.
|
|
24
|
+
try {
|
|
25
|
+
await cleanupOperation(operation => deps.herdr.tasks.submitPrompt(context, pane.binding, workerCleanupPrompt(input.owner, deadline), operation), signal, Math.max(1, Math.min(CLEANUP_OPERATION_MS, deadline - deps.now())));
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
signal?.throwIfAborted();
|
|
29
|
+
deps.emit({ kind: "cleanup-notification-error", ...(input.task === undefined ? {} : { task: input.task }), message: "Cleanup notification failed; actual resources will still be observed and stopped.", error });
|
|
30
|
+
}
|
|
31
|
+
while (true) {
|
|
32
|
+
if (deps.now() < deadline)
|
|
33
|
+
await delay(Math.max(1, Math.min(1000, deadline - deps.now())), undefined, signal === undefined ? {} : { signal });
|
|
34
|
+
pane = await observe();
|
|
35
|
+
if (pane === undefined || !liveAgent(pane) || pane.status === "idle" || deps.now() >= deadline)
|
|
36
|
+
break;
|
|
37
37
|
}
|
|
38
|
-
const completed = attempt.submitted && pane.status === "idle";
|
|
39
|
-
if (liveAgent(pane) && !completed && deps.now() < attempt.deadline)
|
|
40
|
-
return false;
|
|
41
|
-
await workerOperation((operation) => deps.herdr.tasks.stopAndClose(context, pane.binding, operation), signal);
|
|
42
38
|
}
|
|
39
|
+
if (pane !== undefined) {
|
|
40
|
+
try {
|
|
41
|
+
await cleanupOperation(operation => deps.herdr.tasks.stopAndClose(stopContext, pane.binding, operation), signal);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
signal?.throwIfAborted();
|
|
45
|
+
if (await observe() !== undefined)
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
await settleWorkerStops(deps, input.owner, signal, cleanupOperation);
|
|
51
|
+
if (await observe() !== undefined)
|
|
52
|
+
throw new Error("The original task pane still exists after cleanup.");
|
|
53
|
+
stage = "worktree-removal";
|
|
54
|
+
if (deleteWorktree) {
|
|
55
|
+
await cleanupOperation(operation => deps.git.removeWorktree(input.project, input.owner, operation), signal);
|
|
56
|
+
if (await cleanupOperation(operation => deps.git.findWorktree(input.project, input.owner, operation), signal) !== null)
|
|
57
|
+
throw new Error("The original task worktree resources still exist after cleanup.");
|
|
43
58
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
52
|
-
};
|
|
59
|
+
deps.emit({ kind: deleteWorktree ? "cleaned" : "agent-stopped", ...(input.task === undefined ? {} : { task: input.task }), message: deleteWorktree ? "Confirmed task resources absent; the branch remains." : "Confirmed task execution stopped and closed; its worktree remains." });
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw new WorkerCleanupError(stage, error);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
});
|
|
53
66
|
//# sourceMappingURL=cleanup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/worker/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/worker/cleanup.ts"],"names":[],"mappings":"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"}
|