@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.
Files changed (181) hide show
  1. package/README.md +116 -8
  2. package/config.example.yml +3 -0
  3. package/dist/api/client.js +2 -2
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/parse.js +14 -2
  6. package/dist/api/parse.js.map +1 -1
  7. package/dist/api/types.d.ts +4 -1
  8. package/dist/api/worker-mode.d.ts +6 -0
  9. package/dist/api/worker-mode.js +14 -0
  10. package/dist/api/worker-mode.js.map +1 -0
  11. package/dist/cli/commands.js +2 -0
  12. package/dist/cli/commands.js.map +1 -1
  13. package/dist/commands/controller/command-controls.d.ts +4 -0
  14. package/dist/commands/controller/command-controls.js +33 -0
  15. package/dist/commands/controller/command-controls.js.map +1 -0
  16. package/dist/commands/controller/definition.d.ts +3 -0
  17. package/dist/commands/controller/definition.js +22 -0
  18. package/dist/commands/controller/definition.js.map +1 -0
  19. package/dist/commands/controller/independent.d.ts +3 -0
  20. package/dist/commands/controller/independent.js +344 -0
  21. package/dist/commands/controller/independent.js.map +1 -0
  22. package/dist/commands/controller/index.d.ts +12 -0
  23. package/dist/commands/controller/index.js +73 -0
  24. package/dist/commands/controller/index.js.map +1 -0
  25. package/dist/commands/controller/launch-ticket.d.ts +49 -0
  26. package/dist/commands/controller/launch-ticket.js +99 -0
  27. package/dist/commands/controller/launch-ticket.js.map +1 -0
  28. package/dist/commands/controller/lifecycle-store.d.ts +84 -0
  29. package/dist/commands/controller/lifecycle-store.js +278 -0
  30. package/dist/commands/controller/lifecycle-store.js.map +1 -0
  31. package/dist/commands/controller/local-client.d.ts +44 -0
  32. package/dist/commands/controller/local-client.js +75 -0
  33. package/dist/commands/controller/local-client.js.map +1 -0
  34. package/dist/commands/controller/local-content.d.ts +23 -0
  35. package/dist/commands/controller/local-content.js +103 -0
  36. package/dist/commands/controller/local-content.js.map +1 -0
  37. package/dist/commands/controller/process-proof.d.ts +13 -0
  38. package/dist/commands/controller/process-proof.js +121 -0
  39. package/dist/commands/controller/process-proof.js.map +1 -0
  40. package/dist/commands/controller/providers/claude.d.ts +2 -0
  41. package/dist/commands/controller/providers/claude.js +470 -0
  42. package/dist/commands/controller/providers/claude.js.map +1 -0
  43. package/dist/commands/controller/providers/codex.d.ts +2 -0
  44. package/dist/commands/controller/providers/codex.js +254 -0
  45. package/dist/commands/controller/providers/codex.js.map +1 -0
  46. package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
  47. package/dist/commands/controller/providers/controls-claude.js +138 -0
  48. package/dist/commands/controller/providers/controls-claude.js.map +1 -0
  49. package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
  50. package/dist/commands/controller/providers/controls-codex.js +199 -0
  51. package/dist/commands/controller/providers/controls-codex.js.map +1 -0
  52. package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
  53. package/dist/commands/controller/providers/controls-copilot.js +143 -0
  54. package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
  55. package/dist/commands/controller/providers/controls.d.ts +21 -0
  56. package/dist/commands/controller/providers/controls.js +53 -0
  57. package/dist/commands/controller/providers/controls.js.map +1 -0
  58. package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
  59. package/dist/commands/controller/providers/copilot-interactions.js +295 -0
  60. package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
  61. package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
  62. package/dist/commands/controller/providers/copilot-projection.js +93 -0
  63. package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
  64. package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
  65. package/dist/commands/controller/providers/copilot-runtime.js +127 -0
  66. package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
  67. package/dist/commands/controller/providers/copilot.d.ts +2 -0
  68. package/dist/commands/controller/providers/copilot.js +309 -0
  69. package/dist/commands/controller/providers/copilot.js.map +1 -0
  70. package/dist/commands/controller/providers/interactions.d.ts +3 -0
  71. package/dist/commands/controller/providers/interactions.js +79 -0
  72. package/dist/commands/controller/providers/interactions.js.map +1 -0
  73. package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
  74. package/dist/commands/controller/providers/native-rpc.js +85 -0
  75. package/dist/commands/controller/providers/native-rpc.js.map +1 -0
  76. package/dist/commands/controller/providers/projection.d.ts +23 -0
  77. package/dist/commands/controller/providers/projection.js +99 -0
  78. package/dist/commands/controller/providers/projection.js.map +1 -0
  79. package/dist/commands/controller/providers/turns.d.ts +7 -0
  80. package/dist/commands/controller/providers/turns.js +21 -0
  81. package/dist/commands/controller/providers/turns.js.map +1 -0
  82. package/dist/commands/controller/providers/types.d.ts +44 -0
  83. package/dist/commands/controller/providers/types.js +2 -0
  84. package/dist/commands/controller/providers/types.js.map +1 -0
  85. package/dist/commands/controller/recovery.d.ts +6 -0
  86. package/dist/commands/controller/recovery.js +22 -0
  87. package/dist/commands/controller/recovery.js.map +1 -0
  88. package/dist/commands/controller/relay.d.ts +18 -0
  89. package/dist/commands/controller/relay.js +299 -0
  90. package/dist/commands/controller/relay.js.map +1 -0
  91. package/dist/commands/controller/resume.d.ts +18 -0
  92. package/dist/commands/controller/resume.js +193 -0
  93. package/dist/commands/controller/resume.js.map +1 -0
  94. package/dist/commands/controller/runtime.d.ts +5 -0
  95. package/dist/commands/controller/runtime.js +455 -0
  96. package/dist/commands/controller/runtime.js.map +1 -0
  97. package/dist/commands/controller/windows-job.d.ts +3 -0
  98. package/dist/commands/controller/windows-job.js +59 -0
  99. package/dist/commands/controller/windows-job.js.map +1 -0
  100. package/dist/commands/controller/wire-display.d.ts +5 -0
  101. package/dist/commands/controller/wire-display.js +11 -0
  102. package/dist/commands/controller/wire-display.js.map +1 -0
  103. package/dist/commands/skill/skills/using-daynight/SKILL.md +24 -20
  104. package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +16 -10
  105. package/dist/commands/skill/skills/using-daynight/references/create-task.md +40 -39
  106. package/dist/commands/skill/skills/using-daynight/references/goal.md +40 -29
  107. package/dist/commands/skill/skills/using-daynight/references/handbook.md +4 -3
  108. package/dist/commands/skill/skills/using-daynight/references/handoff.md +3 -0
  109. package/dist/commands/skill/skills/using-daynight/references/run-task.md +3 -3
  110. package/dist/commands/skill/skills/using-daynight/references/task-content.md +96 -51
  111. package/dist/commands/skill/skills/using-daynight/references/task-execution.md +28 -22
  112. package/dist/commands/worker/backend.d.ts +7 -0
  113. package/dist/commands/worker/backend.js +7 -0
  114. package/dist/commands/worker/backend.js.map +1 -0
  115. package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
  116. package/dist/commands/worker/backends/grant-renewal.js +42 -0
  117. package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
  118. package/dist/commands/worker/backends/session-api.d.ts +66 -0
  119. package/dist/commands/worker/backends/session-api.js +84 -0
  120. package/dist/commands/worker/backends/session-api.js.map +1 -0
  121. package/dist/commands/worker/backends/web-process.d.ts +79 -0
  122. package/dist/commands/worker/backends/web-process.js +156 -0
  123. package/dist/commands/worker/backends/web-process.js.map +1 -0
  124. package/dist/commands/worker/backends/web-store.d.ts +49 -0
  125. package/dist/commands/worker/backends/web-store.js +323 -0
  126. package/dist/commands/worker/backends/web-store.js.map +1 -0
  127. package/dist/commands/worker/backends/web-types.d.ts +83 -0
  128. package/dist/commands/worker/backends/web-types.js +3 -0
  129. package/dist/commands/worker/backends/web-types.js.map +1 -0
  130. package/dist/commands/worker/backends/web.d.ts +26 -0
  131. package/dist/commands/worker/backends/web.js +178 -0
  132. package/dist/commands/worker/backends/web.js.map +1 -0
  133. package/dist/commands/worker/config.js +12 -5
  134. package/dist/commands/worker/config.js.map +1 -1
  135. package/dist/commands/worker/control.d.ts +2 -0
  136. package/dist/commands/worker/control.js +11 -4
  137. package/dist/commands/worker/control.js.map +1 -1
  138. package/dist/commands/worker/coordinator.d.ts +7 -0
  139. package/dist/commands/worker/coordinator.js +138 -19
  140. package/dist/commands/worker/coordinator.js.map +1 -1
  141. package/dist/commands/worker/herdr/agents.js +11 -8
  142. package/dist/commands/worker/herdr/agents.js.map +1 -1
  143. package/dist/commands/worker/herdr/arguments.js +10 -5
  144. package/dist/commands/worker/herdr/arguments.js.map +1 -1
  145. package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
  146. package/dist/commands/worker/herdr/claude-input.js +20 -0
  147. package/dist/commands/worker/herdr/claude-input.js.map +1 -0
  148. package/dist/commands/worker/herdr/instance.js +1 -1
  149. package/dist/commands/worker/herdr/instance.js.map +1 -1
  150. package/dist/commands/worker/herdr/preflight.d.ts +1 -1
  151. package/dist/commands/worker/herdr/preflight.js +31 -10
  152. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  153. package/dist/commands/worker/herdr.js +5 -1
  154. package/dist/commands/worker/herdr.js.map +1 -1
  155. package/dist/commands/worker/prompts.js +5 -1
  156. package/dist/commands/worker/prompts.js.map +1 -1
  157. package/dist/commands/worker/repositories.js +2 -2
  158. package/dist/commands/worker/repositories.js.map +1 -1
  159. package/dist/commands/worker/runtime.js +62 -10
  160. package/dist/commands/worker/runtime.js.map +1 -1
  161. package/dist/commands/worker/setup-environment.d.ts +2 -1
  162. package/dist/commands/worker/setup-environment.js +10 -4
  163. package/dist/commands/worker/setup-environment.js.map +1 -1
  164. package/dist/commands/worker/setup.js +5 -5
  165. package/dist/commands/worker/setup.js.map +1 -1
  166. package/dist/commands/worker/store.d.ts +2 -1
  167. package/dist/commands/worker/store.js +19 -9
  168. package/dist/commands/worker/store.js.map +1 -1
  169. package/dist/commands/worker/types.d.ts +4 -1
  170. package/dist/commands/worker/worktrees.js +9 -6
  171. package/dist/commands/worker/worktrees.js.map +1 -1
  172. package/dist/session/controller-protocol.d.ts +245 -0
  173. package/dist/session/controller-protocol.js +218 -0
  174. package/dist/session/controller-protocol.js.map +1 -0
  175. package/dist/session/controls.d.ts +28 -0
  176. package/dist/session/controls.js +37 -0
  177. package/dist/session/controls.js.map +1 -0
  178. package/dist/session/protocol.d.ts +290 -0
  179. package/dist/session/protocol.js +307 -0
  180. package/dist/session/protocol.js.map +1 -0
  181. 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>;