@codetreker/daynight 0.25.2 → 0.26.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 +116 -8
- package/config.example.yml +3 -0
- package/dist/api/client.js +2 -2
- package/dist/api/client.js.map +1 -1
- package/dist/api/parse.js +14 -2
- package/dist/api/parse.js.map +1 -1
- package/dist/api/types.d.ts +4 -1
- package/dist/api/worker-mode.d.ts +6 -0
- package/dist/api/worker-mode.js +14 -0
- package/dist/api/worker-mode.js.map +1 -0
- package/dist/cli/commands.js +2 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/commands/controller/command-controls.d.ts +4 -0
- package/dist/commands/controller/command-controls.js +33 -0
- package/dist/commands/controller/command-controls.js.map +1 -0
- package/dist/commands/controller/definition.d.ts +3 -0
- package/dist/commands/controller/definition.js +22 -0
- package/dist/commands/controller/definition.js.map +1 -0
- package/dist/commands/controller/independent.d.ts +3 -0
- package/dist/commands/controller/independent.js +344 -0
- package/dist/commands/controller/independent.js.map +1 -0
- package/dist/commands/controller/index.d.ts +12 -0
- package/dist/commands/controller/index.js +73 -0
- package/dist/commands/controller/index.js.map +1 -0
- package/dist/commands/controller/launch-ticket.d.ts +49 -0
- package/dist/commands/controller/launch-ticket.js +99 -0
- package/dist/commands/controller/launch-ticket.js.map +1 -0
- package/dist/commands/controller/lifecycle-store.d.ts +84 -0
- package/dist/commands/controller/lifecycle-store.js +278 -0
- package/dist/commands/controller/lifecycle-store.js.map +1 -0
- package/dist/commands/controller/local-client.d.ts +44 -0
- package/dist/commands/controller/local-client.js +75 -0
- package/dist/commands/controller/local-client.js.map +1 -0
- package/dist/commands/controller/local-content.d.ts +23 -0
- package/dist/commands/controller/local-content.js +103 -0
- package/dist/commands/controller/local-content.js.map +1 -0
- package/dist/commands/controller/process-proof.d.ts +13 -0
- package/dist/commands/controller/process-proof.js +121 -0
- package/dist/commands/controller/process-proof.js.map +1 -0
- package/dist/commands/controller/providers/claude.d.ts +2 -0
- package/dist/commands/controller/providers/claude.js +470 -0
- package/dist/commands/controller/providers/claude.js.map +1 -0
- package/dist/commands/controller/providers/codex.d.ts +2 -0
- package/dist/commands/controller/providers/codex.js +254 -0
- package/dist/commands/controller/providers/codex.js.map +1 -0
- package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
- package/dist/commands/controller/providers/controls-claude.js +138 -0
- package/dist/commands/controller/providers/controls-claude.js.map +1 -0
- package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
- package/dist/commands/controller/providers/controls-codex.js +199 -0
- package/dist/commands/controller/providers/controls-codex.js.map +1 -0
- package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
- package/dist/commands/controller/providers/controls-copilot.js +143 -0
- package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
- package/dist/commands/controller/providers/controls.d.ts +21 -0
- package/dist/commands/controller/providers/controls.js +53 -0
- package/dist/commands/controller/providers/controls.js.map +1 -0
- package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
- package/dist/commands/controller/providers/copilot-interactions.js +295 -0
- package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
- package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
- package/dist/commands/controller/providers/copilot-projection.js +93 -0
- package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
- package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
- package/dist/commands/controller/providers/copilot-runtime.js +127 -0
- package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
- package/dist/commands/controller/providers/copilot.d.ts +2 -0
- package/dist/commands/controller/providers/copilot.js +309 -0
- package/dist/commands/controller/providers/copilot.js.map +1 -0
- package/dist/commands/controller/providers/interactions.d.ts +3 -0
- package/dist/commands/controller/providers/interactions.js +79 -0
- package/dist/commands/controller/providers/interactions.js.map +1 -0
- package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
- package/dist/commands/controller/providers/native-rpc.js +85 -0
- package/dist/commands/controller/providers/native-rpc.js.map +1 -0
- package/dist/commands/controller/providers/projection.d.ts +23 -0
- package/dist/commands/controller/providers/projection.js +99 -0
- package/dist/commands/controller/providers/projection.js.map +1 -0
- package/dist/commands/controller/providers/turns.d.ts +7 -0
- package/dist/commands/controller/providers/turns.js +21 -0
- package/dist/commands/controller/providers/turns.js.map +1 -0
- package/dist/commands/controller/providers/types.d.ts +44 -0
- package/dist/commands/controller/providers/types.js +2 -0
- package/dist/commands/controller/providers/types.js.map +1 -0
- package/dist/commands/controller/recovery.d.ts +6 -0
- package/dist/commands/controller/recovery.js +22 -0
- package/dist/commands/controller/recovery.js.map +1 -0
- package/dist/commands/controller/relay.d.ts +18 -0
- package/dist/commands/controller/relay.js +299 -0
- package/dist/commands/controller/relay.js.map +1 -0
- package/dist/commands/controller/resume.d.ts +18 -0
- package/dist/commands/controller/resume.js +193 -0
- package/dist/commands/controller/resume.js.map +1 -0
- package/dist/commands/controller/runtime.d.ts +5 -0
- package/dist/commands/controller/runtime.js +455 -0
- package/dist/commands/controller/runtime.js.map +1 -0
- package/dist/commands/controller/windows-job.d.ts +3 -0
- package/dist/commands/controller/windows-job.js +59 -0
- package/dist/commands/controller/windows-job.js.map +1 -0
- package/dist/commands/controller/wire-display.d.ts +5 -0
- package/dist/commands/controller/wire-display.js +11 -0
- package/dist/commands/controller/wire-display.js.map +1 -0
- package/dist/commands/skill/skills/using-daynight/SKILL.md +24 -20
- package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +16 -10
- package/dist/commands/skill/skills/using-daynight/references/create-task.md +40 -39
- package/dist/commands/skill/skills/using-daynight/references/goal.md +40 -29
- package/dist/commands/skill/skills/using-daynight/references/handbook.md +4 -3
- package/dist/commands/skill/skills/using-daynight/references/handoff.md +3 -0
- package/dist/commands/skill/skills/using-daynight/references/run-task.md +3 -3
- package/dist/commands/skill/skills/using-daynight/references/task-content.md +96 -51
- package/dist/commands/skill/skills/using-daynight/references/task-execution.md +28 -22
- package/dist/commands/worker/backend.d.ts +7 -0
- package/dist/commands/worker/backend.js +7 -0
- package/dist/commands/worker/backend.js.map +1 -0
- package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
- package/dist/commands/worker/backends/grant-renewal.js +42 -0
- package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
- package/dist/commands/worker/backends/session-api.d.ts +66 -0
- package/dist/commands/worker/backends/session-api.js +84 -0
- package/dist/commands/worker/backends/session-api.js.map +1 -0
- package/dist/commands/worker/backends/web-process.d.ts +79 -0
- package/dist/commands/worker/backends/web-process.js +156 -0
- package/dist/commands/worker/backends/web-process.js.map +1 -0
- package/dist/commands/worker/backends/web-store.d.ts +49 -0
- package/dist/commands/worker/backends/web-store.js +323 -0
- package/dist/commands/worker/backends/web-store.js.map +1 -0
- package/dist/commands/worker/backends/web-types.d.ts +83 -0
- package/dist/commands/worker/backends/web-types.js +3 -0
- package/dist/commands/worker/backends/web-types.js.map +1 -0
- package/dist/commands/worker/backends/web.d.ts +26 -0
- package/dist/commands/worker/backends/web.js +178 -0
- package/dist/commands/worker/backends/web.js.map +1 -0
- package/dist/commands/worker/config.js +12 -5
- package/dist/commands/worker/config.js.map +1 -1
- package/dist/commands/worker/control.d.ts +2 -0
- package/dist/commands/worker/control.js +11 -4
- package/dist/commands/worker/control.js.map +1 -1
- package/dist/commands/worker/coordinator.d.ts +7 -0
- package/dist/commands/worker/coordinator.js +138 -19
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/herdr/agents.js +11 -8
- package/dist/commands/worker/herdr/agents.js.map +1 -1
- package/dist/commands/worker/herdr/arguments.js +10 -5
- package/dist/commands/worker/herdr/arguments.js.map +1 -1
- package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
- package/dist/commands/worker/herdr/claude-input.js +20 -0
- package/dist/commands/worker/herdr/claude-input.js.map +1 -0
- package/dist/commands/worker/herdr/instance.js +1 -1
- package/dist/commands/worker/herdr/instance.js.map +1 -1
- package/dist/commands/worker/herdr/preflight.d.ts +1 -1
- package/dist/commands/worker/herdr/preflight.js +31 -10
- package/dist/commands/worker/herdr/preflight.js.map +1 -1
- package/dist/commands/worker/herdr.js +5 -1
- package/dist/commands/worker/herdr.js.map +1 -1
- package/dist/commands/worker/prompts.js +5 -1
- package/dist/commands/worker/prompts.js.map +1 -1
- package/dist/commands/worker/repositories.js +2 -2
- package/dist/commands/worker/repositories.js.map +1 -1
- package/dist/commands/worker/runtime.js +62 -10
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/setup-environment.d.ts +2 -1
- package/dist/commands/worker/setup-environment.js +10 -4
- package/dist/commands/worker/setup-environment.js.map +1 -1
- package/dist/commands/worker/setup.js +5 -5
- package/dist/commands/worker/setup.js.map +1 -1
- package/dist/commands/worker/store.d.ts +2 -1
- package/dist/commands/worker/store.js +19 -9
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/commands/worker/types.d.ts +4 -1
- package/dist/commands/worker/worktrees.js +9 -6
- package/dist/commands/worker/worktrees.js.map +1 -1
- package/dist/session/controller-protocol.d.ts +245 -0
- package/dist/session/controller-protocol.js +218 -0
- package/dist/session/controller-protocol.js.map +1 -0
- package/dist/session/controls.d.ts +28 -0
- package/dist/session/controls.js +37 -0
- package/dist/session/controls.js.map +1 -0
- package/dist/session/protocol.d.ts +290 -0
- package/dist/session/protocol.js +307 -0
- package/dist/session/protocol.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type ControllerLaunchTicket } from "../../controller/launch-ticket.js";
|
|
2
|
+
import type { WebExecutionStore } from "./web-store.js";
|
|
3
|
+
import type { LocalTask } from "./web-types.js";
|
|
4
|
+
import type { WorkerSessionApi } from "./session-api.js";
|
|
5
|
+
export declare const createWebControllerLauncher: (options: {
|
|
6
|
+
homeDirectory: string;
|
|
7
|
+
packageDirectory: string;
|
|
8
|
+
store: WebExecutionStore;
|
|
9
|
+
sessionApi: WorkerSessionApi;
|
|
10
|
+
now: () => number;
|
|
11
|
+
}) => {
|
|
12
|
+
prepare: (...args: Parameters<(input: LocalTask, prompt: string, signal: AbortSignal) => Promise<ControllerLaunchTicket>>) => Promise<({
|
|
13
|
+
readonly schemaVersion: 1;
|
|
14
|
+
readonly launchId: string;
|
|
15
|
+
readonly executionId: string;
|
|
16
|
+
readonly controllerId: string;
|
|
17
|
+
readonly controllerInstanceId: string;
|
|
18
|
+
readonly sessionId: string;
|
|
19
|
+
readonly executionGeneration: string;
|
|
20
|
+
readonly serverOrigin: string;
|
|
21
|
+
readonly provider: "codex" | "claude" | "copilot";
|
|
22
|
+
readonly cwd: string;
|
|
23
|
+
readonly nativeHome: string;
|
|
24
|
+
readonly configuration: import("../types.js").FrozenExecutionConfiguration;
|
|
25
|
+
readonly initialOperationId: string;
|
|
26
|
+
readonly initialPrompt: string;
|
|
27
|
+
readonly resumeNativeSessionId: string | null;
|
|
28
|
+
readonly credentialFile: string;
|
|
29
|
+
readonly ipcEndpoint: string;
|
|
30
|
+
readonly ipcSecret: string;
|
|
31
|
+
readonly createdAt: string;
|
|
32
|
+
} & {
|
|
33
|
+
readonly claimId: string;
|
|
34
|
+
readonly testExecutionId?: never;
|
|
35
|
+
} & {
|
|
36
|
+
readonly claimId: string;
|
|
37
|
+
readonly projectId: string;
|
|
38
|
+
readonly taskId: string;
|
|
39
|
+
readonly workerId: string;
|
|
40
|
+
readonly worktreeId: string;
|
|
41
|
+
readonly userId: string;
|
|
42
|
+
readonly ownerUserId?: never;
|
|
43
|
+
readonly initialInput?: never;
|
|
44
|
+
}) | ({
|
|
45
|
+
readonly schemaVersion: 1;
|
|
46
|
+
readonly launchId: string;
|
|
47
|
+
readonly executionId: string;
|
|
48
|
+
readonly controllerId: string;
|
|
49
|
+
readonly controllerInstanceId: string;
|
|
50
|
+
readonly sessionId: string;
|
|
51
|
+
readonly executionGeneration: string;
|
|
52
|
+
readonly serverOrigin: string;
|
|
53
|
+
readonly provider: "codex" | "claude" | "copilot";
|
|
54
|
+
readonly cwd: string;
|
|
55
|
+
readonly nativeHome: string;
|
|
56
|
+
readonly configuration: import("../types.js").FrozenExecutionConfiguration;
|
|
57
|
+
readonly initialOperationId: string;
|
|
58
|
+
readonly initialPrompt: string;
|
|
59
|
+
readonly resumeNativeSessionId: string | null;
|
|
60
|
+
readonly credentialFile: string;
|
|
61
|
+
readonly ipcEndpoint: string;
|
|
62
|
+
readonly ipcSecret: string;
|
|
63
|
+
readonly createdAt: string;
|
|
64
|
+
} & {
|
|
65
|
+
readonly testExecutionId: string;
|
|
66
|
+
readonly claimId?: never;
|
|
67
|
+
} & {
|
|
68
|
+
readonly testExecutionId: string;
|
|
69
|
+
readonly ownerUserId: string;
|
|
70
|
+
readonly initialInput: "none" | "prompt";
|
|
71
|
+
readonly projectId?: never;
|
|
72
|
+
readonly taskId?: never;
|
|
73
|
+
readonly workerId?: never;
|
|
74
|
+
readonly worktreeId?: never;
|
|
75
|
+
readonly userId?: never;
|
|
76
|
+
})>;
|
|
77
|
+
launch: (...args: Parameters<(input: LocalTask, ticket: ControllerLaunchTicket, signal: AbortSignal) => Promise<void>>) => Promise<void>;
|
|
78
|
+
refreshGrant: (...args: Parameters<(input: LocalTask, ticket: ControllerLaunchTicket, signal: AbortSignal) => Promise<void>>) => Promise<void>;
|
|
79
|
+
};
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { open, mkdir, readFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
5
|
+
import { controllerExecutionDirectory, controllerTicketPath, readLaunchTicket, writeLaunchTicket } from "../../controller/launch-ticket.js";
|
|
6
|
+
import { readControllerSnapshot } from "../../controller/lifecycle-store.js";
|
|
7
|
+
import { requestController } from "../../controller/local-client.js";
|
|
8
|
+
import { captureProcessProof } from "../../controller/process-proof.js";
|
|
9
|
+
import { writeControllerCredential } from "./session-api.js";
|
|
10
|
+
export const createWebControllerLauncher = (options) => {
|
|
11
|
+
const current = (task) => { const latest = options.store.getTask(task); if (latest?.webExecution == null)
|
|
12
|
+
throw new Error("The web execution identity disappeared."); return latest; };
|
|
13
|
+
const tails = new Map();
|
|
14
|
+
const serialize = async (task, action) => {
|
|
15
|
+
const key = task.webExecution?.executionId ?? task.claimId;
|
|
16
|
+
const previous = tails.get(key) ?? Promise.resolve();
|
|
17
|
+
let release;
|
|
18
|
+
const gate = new Promise(resolve => { release = resolve; });
|
|
19
|
+
const tail = previous.then(() => gate);
|
|
20
|
+
tails.set(key, tail);
|
|
21
|
+
await previous;
|
|
22
|
+
try {
|
|
23
|
+
return await action();
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
release();
|
|
27
|
+
if (tails.get(key) === tail)
|
|
28
|
+
tails.delete(key);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const methods = {
|
|
32
|
+
prepare: async (input, prompt, signal) => {
|
|
33
|
+
let task = current(input);
|
|
34
|
+
let execution = task.webExecution;
|
|
35
|
+
if (execution.ticketPath !== null) {
|
|
36
|
+
const ticket = await readLaunchTicket(options.homeDirectory, execution.launchId);
|
|
37
|
+
if (execution.nativeHome === null)
|
|
38
|
+
options.store.updateWebExecution(task, { nativeHome: ticket.nativeHome }, options.now());
|
|
39
|
+
return ticket;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const existing = await readLaunchTicket(options.homeDirectory, execution.launchId);
|
|
43
|
+
if (existing.executionId !== execution.executionId || existing.claimId !== task.claimId || existing.executionGeneration !== execution.executionGeneration || existing.controllerInstanceId !== execution.controllerInstanceId || existing.initialOperationId !== execution.initialOperationId || existing.sessionId !== execution.sessionId || existing.initialPrompt !== execution.initialPrompt)
|
|
44
|
+
throw new Error("An existing launch ticket does not match the durable execution intent.");
|
|
45
|
+
options.store.updateWebExecution(task, { ticketPath: controllerTicketPath(options.homeDirectory, execution.launchId), nativeHome: existing.nativeHome }, options.now());
|
|
46
|
+
return existing;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
if (execution.initialPrompt === null) {
|
|
53
|
+
task = options.store.updateWebExecution(task, { initialPrompt: prompt }, options.now());
|
|
54
|
+
execution = task.webExecution;
|
|
55
|
+
}
|
|
56
|
+
if (task.resources.worktree === null || task.configuration === null || task.userId === null)
|
|
57
|
+
throw new Error("Controller launch requires its original worktree, provider and owner.");
|
|
58
|
+
if (execution.sessionId === null) {
|
|
59
|
+
const registered = await options.sessionApi.register(task, execution, signal);
|
|
60
|
+
task = options.store.updateWebExecution(task, { sessionId: registered.sessionId }, options.now());
|
|
61
|
+
execution = task.webExecution;
|
|
62
|
+
}
|
|
63
|
+
const directory = controllerExecutionDirectory(options.homeDirectory, execution.executionId);
|
|
64
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
65
|
+
const credentialFile = path.join(directory, "credential.json");
|
|
66
|
+
const previous = readControllerSnapshot(path.join(directory, "journal.sqlite"));
|
|
67
|
+
const stop = previous !== null && previous.executionGeneration !== execution.executionGeneration && previous.nativeStopped && previous.stoppedAt !== null ? { generation: previous.executionGeneration, instanceId: previous.controllerInstanceId, recordId: execution.launchId, stoppedAt: previous.stoppedAt } : undefined;
|
|
68
|
+
const grant = await options.sessionApi.grant(task, execution, signal, stop);
|
|
69
|
+
await writeControllerCredential(credentialFile, grant);
|
|
70
|
+
const endpointKey = createHash("sha256").update(`${options.homeDirectory}:${execution.launchId}`).digest("hex").slice(0, 20);
|
|
71
|
+
const ipcEndpoint = process.platform === "win32" ? `\\\\.\\pipe\\daynight-${endpointKey}` : path.join(options.homeDirectory, ".daynight", "c", `${endpointKey}.sock`);
|
|
72
|
+
if (process.platform !== "win32" && Buffer.byteLength(ipcEndpoint) > (process.platform === "darwin" ? 103 : 107))
|
|
73
|
+
throw new Error("The controller IPC endpoint exceeds this platform's socket path limit.");
|
|
74
|
+
if (process.platform !== "win32")
|
|
75
|
+
await mkdir(path.dirname(ipcEndpoint), { recursive: true, mode: 0o700 });
|
|
76
|
+
if (task.resources.worktree === null || task.configuration === null || task.userId === null)
|
|
77
|
+
throw new Error("The frozen launch binding disappeared.");
|
|
78
|
+
const nativeHome = execution.nativeHome ?? (task.configuration.agent === "codex" ? process.env.CODEX_HOME ?? path.join(options.homeDirectory, ".codex")
|
|
79
|
+
: task.configuration.agent === "claude" ? process.env.CLAUDE_CONFIG_DIR ?? path.join(options.homeDirectory, ".claude")
|
|
80
|
+
: process.env.COPILOT_HOME ?? path.join(options.homeDirectory, ".copilot"));
|
|
81
|
+
if (execution.nativeHome === null)
|
|
82
|
+
execution = options.store.updateWebExecution(task, { nativeHome }, options.now()).webExecution;
|
|
83
|
+
const initialPrompt = execution.initialPrompt ?? prompt;
|
|
84
|
+
const ticket = { schemaVersion: 1, launchId: execution.launchId, executionId: execution.executionId, controllerId: execution.controllerId, controllerInstanceId: execution.controllerInstanceId, sessionId: execution.sessionId, executionGeneration: execution.executionGeneration, serverOrigin: task.serverOrigin, projectId: task.projectId, taskId: task.taskId, claimId: task.claimId, workerId: task.workerId, worktreeId: task.worktreeId, userId: task.userId, provider: task.configuration.agent, cwd: task.resources.worktree.worktreePath, nativeHome, configuration: task.configuration, initialOperationId: execution.initialOperationId, initialPrompt, resumeNativeSessionId: task.resources.nativeSession?.sessionId ?? null, credentialFile, ipcEndpoint, ipcSecret: randomBytes(32).toString("hex"), createdAt: new Date(options.now()).toISOString() };
|
|
85
|
+
const ticketPath = await writeLaunchTicket(options.homeDirectory, ticket);
|
|
86
|
+
options.store.updateWebExecution(task, { ticketPath, initialPrompt }, options.now());
|
|
87
|
+
return ticket;
|
|
88
|
+
},
|
|
89
|
+
launch: async (input, ticket, signal) => {
|
|
90
|
+
let task = current(input);
|
|
91
|
+
if (task.webExecution.launchSubmission !== "not-submitted")
|
|
92
|
+
return;
|
|
93
|
+
// A reusable grant also supports the first hello, including a lost bootstrap handshake.
|
|
94
|
+
await writeControllerCredential(ticket.credentialFile, await options.sessionApi.grant(task, { ...task.webExecution, launchSubmission: "unknown" }, signal));
|
|
95
|
+
const directory = controllerExecutionDirectory(options.homeDirectory, ticket.executionId);
|
|
96
|
+
const log = await open(path.join(directory, "controller.log"), "a", 0o600);
|
|
97
|
+
try {
|
|
98
|
+
signal.throwIfAborted();
|
|
99
|
+
task = options.store.updateWebExecution(task, { launchSubmission: "unknown" }, options.now());
|
|
100
|
+
const child = spawn(process.execPath, [path.join(options.packageDirectory, "dist", "main.js"), "controller", ticket.provider, "--launch-id", ticket.launchId], { cwd: ticket.cwd, env: { ...process.env, HOME: options.homeDirectory, USERPROFILE: options.homeDirectory }, detached: process.platform !== "win32", stdio: ["ignore", log.fd, log.fd], windowsHide: true });
|
|
101
|
+
await new Promise((resolve, reject) => { child.once("spawn", resolve); child.once("error", reject); });
|
|
102
|
+
child.unref();
|
|
103
|
+
if (child.pid === undefined)
|
|
104
|
+
throw new Error("Controller spawn did not establish its process identity.");
|
|
105
|
+
const proof = await captureProcessProof(child.pid);
|
|
106
|
+
task = options.store.updateWebExecution(task, { controllerProcess: proof }, options.now());
|
|
107
|
+
const deadline = Date.now() + 30000;
|
|
108
|
+
while (Date.now() < deadline) {
|
|
109
|
+
signal.throwIfAborted();
|
|
110
|
+
try {
|
|
111
|
+
const response = await requestController(ticket, { kind: "observe" }, { signal, timeoutMs: 1000 });
|
|
112
|
+
options.store.updateWebExecution(task, { launchSubmission: "acknowledged", nativeProcesses: response.snapshot.nativeProcesses }, options.now());
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
if (child.exitCode !== null || child.signalCode !== null)
|
|
117
|
+
throw new Error("Controller exited before its authenticated initialization; inspect its private log.");
|
|
118
|
+
}
|
|
119
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
120
|
+
}
|
|
121
|
+
throw new Error("Controller startup outcome is unknown; the original process and launch intent are retained.");
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
await log.close();
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
refreshGrant: async (input, ticket, signal) => {
|
|
128
|
+
const task = current(input);
|
|
129
|
+
if (task.webExecution.launchId !== ticket.launchId || task.cleanup?.agentStopped)
|
|
130
|
+
return;
|
|
131
|
+
let expiresAt;
|
|
132
|
+
try {
|
|
133
|
+
expiresAt = JSON.parse(await readFile(ticket.credentialFile, "utf8")).expiresAt;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
throw new Error("Controller credential state is unavailable; it cannot be silently replaced.");
|
|
137
|
+
}
|
|
138
|
+
if (typeof expiresAt !== "string" || !Number.isFinite(Date.parse(expiresAt)))
|
|
139
|
+
throw new Error("Controller credential expiry is invalid.");
|
|
140
|
+
if (Date.parse(expiresAt) - options.now() > 120_000)
|
|
141
|
+
return;
|
|
142
|
+
const grant = await options.sessionApi.grant(task, task.webExecution, signal);
|
|
143
|
+
const latest = current(task);
|
|
144
|
+
if (latest.webExecution.launchId !== ticket.launchId || latest.cleanup?.agentStopped)
|
|
145
|
+
return;
|
|
146
|
+
signal.throwIfAborted();
|
|
147
|
+
await writeControllerCredential(ticket.credentialFile, grant);
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
prepare: (...args) => serialize(args[0], () => methods.prepare(...args)),
|
|
152
|
+
launch: (...args) => serialize(args[0], () => methods.launch(...args)),
|
|
153
|
+
refreshGrant: (...args) => serialize(args[0], () => methods.refreshGrant(...args)),
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=web-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-process.js","sourceRoot":"","sources":["../../../../src/commands/worker/backends/web-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ExecutionConfiguration as FrozenExecutionConfiguration, WorkerProject, ResourceOwner } from "../types.js";
|
|
2
|
+
import type { LocalTask, ClaimIdentity, CleanupState, WorktreeBinding, WebExecutionState } from "./web-types.js";
|
|
3
|
+
export declare const openWebExecutionStore: (filename: string) => {
|
|
4
|
+
close: () => void;
|
|
5
|
+
getTask: (identity: ClaimIdentity) => LocalTask | null;
|
|
6
|
+
listUnfinishedTasks: () => LocalTask[];
|
|
7
|
+
register: (input: ResourceOwner & {
|
|
8
|
+
project: WorkerProject;
|
|
9
|
+
serverOrigin: string;
|
|
10
|
+
workerId: string;
|
|
11
|
+
userId: string;
|
|
12
|
+
configuration: FrozenExecutionConfiguration;
|
|
13
|
+
}, now: number) => LocalTask;
|
|
14
|
+
clearShutdown: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
15
|
+
beginRecovery: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
16
|
+
authorizeRecoveryRetry: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
17
|
+
bindNativeSession: (identity: ClaimIdentity, reference: {
|
|
18
|
+
source: "controller";
|
|
19
|
+
sessionId: string;
|
|
20
|
+
}, now: number) => LocalTask;
|
|
21
|
+
completeTask: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
22
|
+
initializeWebExecution: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
23
|
+
updateWebExecution: (identity: ClaimIdentity, patch: Partial<WebExecutionState>, now: number) => LocalTask;
|
|
24
|
+
beginWebGeneration: (identity: ClaimIdentity, previous: {
|
|
25
|
+
executionGeneration: string;
|
|
26
|
+
controllerInstanceId: string;
|
|
27
|
+
nativeSessionId: string | null;
|
|
28
|
+
nativeStopped: boolean;
|
|
29
|
+
}, now: number) => LocalTask;
|
|
30
|
+
confirmBackendResourcesClosed: (identity: ClaimIdentity, proof: {
|
|
31
|
+
controllerStopped: true;
|
|
32
|
+
endpointClosed: true;
|
|
33
|
+
}, now: number) => LocalTask;
|
|
34
|
+
bindWorktree: (identity: ClaimIdentity, binding: WorktreeBinding, now: number) => LocalTask;
|
|
35
|
+
beginCleanup: (identity: ClaimIdentity, input: {
|
|
36
|
+
kind: CleanupState["kind"];
|
|
37
|
+
deadline: number;
|
|
38
|
+
}, now: number) => LocalTask;
|
|
39
|
+
markCleanupInputSubmitting: (identity: ClaimIdentity, now: number) => LocalTask;
|
|
40
|
+
recordCleanupInputOutcome: (identity: ClaimIdentity, input: "submitted" | "rejected" | "unavailable", now: number) => LocalTask;
|
|
41
|
+
recordCleanupResult: (identity: ClaimIdentity, result: NonNullable<CleanupState["result"]>, error: string | null, now: number) => LocalTask;
|
|
42
|
+
confirmAgentStopped: (identity: ClaimIdentity, proof: {
|
|
43
|
+
agentStopped: true;
|
|
44
|
+
}, now: number) => LocalTask;
|
|
45
|
+
confirmWorktreeDeleted: (identity: ClaimIdentity, proof: {
|
|
46
|
+
worktreeDeleted: true;
|
|
47
|
+
}, now: number) => LocalTask;
|
|
48
|
+
};
|
|
49
|
+
export type WebExecutionStore = ReturnType<typeof openWebExecutionStore>;
|