@agentteams/runner 0.0.102 → 0.0.105

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 (37) hide show
  1. package/dist/autostart.d.ts +21 -6
  2. package/dist/autostart.js +262 -43
  3. package/dist/autostart.js.map +1 -1
  4. package/dist/autostart.test.js +155 -22
  5. package/dist/autostart.test.js.map +1 -1
  6. package/dist/commands/restart.d.ts +9 -1
  7. package/dist/commands/restart.js +16 -4
  8. package/dist/commands/restart.js.map +1 -1
  9. package/dist/commands/restart.test.d.ts +1 -0
  10. package/dist/commands/restart.test.js +31 -0
  11. package/dist/commands/restart.test.js.map +1 -0
  12. package/dist/commands/start.js +5 -0
  13. package/dist/commands/start.js.map +1 -1
  14. package/dist/daemon-control.d.ts +32 -6
  15. package/dist/daemon-control.js +198 -13
  16. package/dist/daemon-control.js.map +1 -1
  17. package/dist/daemon-control.test.js +260 -26
  18. package/dist/daemon-control.test.js.map +1 -1
  19. package/dist/executable.js +10 -0
  20. package/dist/executable.js.map +1 -1
  21. package/dist/executable.test.js +31 -9
  22. package/dist/executable.test.js.map +1 -1
  23. package/dist/poller.js +12 -11
  24. package/dist/poller.js.map +1 -1
  25. package/dist/poller.test.js +51 -7
  26. package/dist/poller.test.js.map +1 -1
  27. package/dist/restart-handoff.d.ts +71 -0
  28. package/dist/restart-handoff.js +169 -0
  29. package/dist/restart-handoff.js.map +1 -0
  30. package/dist/restart-handoff.test.d.ts +1 -0
  31. package/dist/restart-handoff.test.js +228 -0
  32. package/dist/restart-handoff.test.js.map +1 -0
  33. package/dist/runners/cursor-cli.test.js +3 -1
  34. package/dist/runners/cursor-cli.test.js.map +1 -1
  35. package/dist/utils/resolve-member-repo.test.js +1 -1
  36. package/dist/utils/resolve-member-repo.test.js.map +1 -1
  37. package/package.json +2 -2
@@ -38,7 +38,7 @@ test('getAutostartStatus queries Task Scheduler with hidden execution on Windows
38
38
  });
39
39
  assert.deepEqual(status, { registered: true, platform: 'task-scheduler' });
40
40
  assert.equal(calls.length, 1);
41
- assert.match(calls[0].command, /schtasks \/Query \/TN "AgentRunner"/u);
41
+ assert.match(calls[0].command, /schtasks \/Query \/TN "AgentRunner" 2>nul/u);
42
42
  assert.equal(calls[0].windowsHide, true);
43
43
  });
44
44
  test('registerWindowsTask writes scheduler assets, removes legacy files, and creates and runs the task', async () => {
@@ -65,13 +65,31 @@ test('registerWindowsTask writes scheduler assets, removes legacy files, and cre
65
65
  assert.equal(result.platform, 'task-scheduler');
66
66
  assert.equal(writes.length, 2);
67
67
  assert.ok(writes.some((write) => write.path.endsWith('agentrunner-start.ps1') && write.encoding === 'utf8'));
68
- assert.ok(writes.some((write) => write.path.endsWith('agentrunner-task.xml') && write.encoding === 'utf16le'));
68
+ assert.ok(writes.some((write) => write.path.endsWith('agentrunner-task.xml') && write.encoding === 'utf16le' && write.data.startsWith('\uFEFF')));
69
69
  assert.ok(removed.some((path) => path.endsWith('agentrunner-start.vbs')));
70
70
  assert.ok(removed.some((path) => path.endsWith('agentrunner-restart.vbs')));
71
71
  assert.match(commands[0], /schtasks \/Delete/u);
72
72
  assert.match(commands[1], /schtasks \/Create .* \/XML .* \/F/u);
73
73
  assert.match(commands[2], /schtasks \/Run/u);
74
74
  });
75
+ test('registerWindowsTask can repair registration without starting a duplicate runner', async () => {
76
+ const commands = [];
77
+ await registerWindowsTask({ token: 'token', apiUrl: 'https://api.example' }, {
78
+ userId: 'DOMAIN\\runner',
79
+ daemonPath: 'C:\\Tools\\agentrunner.cmd',
80
+ startImmediately: false,
81
+ mkdir: async () => undefined,
82
+ writeFile: async () => undefined,
83
+ unlink: async () => undefined,
84
+ chmodSync: () => undefined,
85
+ execSync: (command) => {
86
+ commands.push(command);
87
+ return Buffer.from('');
88
+ },
89
+ });
90
+ assert.ok(commands.some((command) => command.startsWith('schtasks /Create')));
91
+ assert.ok(!commands.some((command) => command.startsWith('schtasks /Run')));
92
+ });
75
93
  test('unregisterWindowsTask deletes the task and all generated or legacy artifacts idempotently', async () => {
76
94
  const commands = [];
77
95
  const removed = [];
@@ -91,26 +109,104 @@ test('unregisterWindowsTask deletes the task and all generated or legacy artifac
91
109
  assert.ok(removed.some((path) => path.endsWith('agentrunner-start.ps1')));
92
110
  assert.ok(removed.some((path) => path.endsWith('agentrunner-start.vbs')));
93
111
  });
94
- test('restartWindowsTask ends the running task before starting it again', async () => {
112
+ test('restartWindowsTask ends the task, probes its state, then starts it again', async () => {
95
113
  const commands = [];
96
114
  await restartWindowsTask(null, {
97
115
  execSync: (command, options) => {
98
116
  commands.push(command);
99
117
  assert.equal(options.windowsHide, true);
118
+ // State 3 (Ready) → confirmed stopped, so the wait loop exits immediately.
119
+ return Buffer.from(/-EncodedCommand/u.test(command) ? '3' : '');
120
+ },
121
+ });
122
+ const schtasksCommands = commands.filter((command) => command.startsWith('schtasks'));
123
+ assert.deepEqual(schtasksCommands, ['schtasks /End /TN "AgentRunner" 2>nul', 'schtasks /Run /TN "AgentRunner"']);
124
+ // A locale-independent state probe runs between End and Run.
125
+ assert.ok(commands.some((command) => /powershell\.exe .*-EncodedCommand/u.test(command)));
126
+ });
127
+ test('restartWindowsTask waits while the task is still running before starting it again', async () => {
128
+ const commands = [];
129
+ const sleeps = [];
130
+ let stateQueries = 0;
131
+ await restartWindowsTask(null, {
132
+ execSync: (command, options) => {
133
+ commands.push(command);
134
+ assert.equal(options.windowsHide, true);
135
+ if (/-EncodedCommand/u.test(command)) {
136
+ stateQueries += 1;
137
+ // State 4 (Running) for the first two probes, then 3 (Ready).
138
+ return Buffer.from(stateQueries < 3 ? '4' : '3');
139
+ }
100
140
  return Buffer.from('');
101
141
  },
142
+ sleep: async (milliseconds) => {
143
+ sleeps.push(milliseconds);
144
+ },
145
+ now: () => 0,
102
146
  });
103
- assert.deepEqual(commands, ['schtasks /End /TN "AgentRunner"', 'schtasks /Run /TN "AgentRunner"']);
147
+ // Polled twice while the old instance was still running, then ran once stopped.
148
+ assert.equal(sleeps.length, 2);
149
+ assert.equal(stateQueries, 3);
150
+ const schtasksCommands = commands.filter((command) => command.startsWith('schtasks'));
151
+ assert.deepEqual(schtasksCommands, ['schtasks /End /TN "AgentRunner" 2>nul', 'schtasks /Run /TN "AgentRunner"']);
104
152
  });
105
- test('scheduleWindowsTaskRestart queues an out-of-job task restart after the current action exits', () => {
153
+ test('restartWindowsTask aborts /Run (throws) when the task never reaches a stopped state', async () => {
154
+ const commands = [];
155
+ let clock = 0;
156
+ await assert.rejects(restartWindowsTask(null, {
157
+ execSync: (command) => {
158
+ commands.push(command);
159
+ // Always reports State 4 (Running) — the old instance never stops.
160
+ return Buffer.from(/-EncodedCommand/u.test(command) ? '4' : '');
161
+ },
162
+ sleep: async () => undefined,
163
+ now: () => {
164
+ const value = clock;
165
+ clock += 16_000; // crosses the 30s deadline after two probes
166
+ return value;
167
+ },
168
+ }), /did not reach a stopped state/u);
169
+ // /End ran, but /Run must NOT — IgnoreNew would discard it while still running.
170
+ assert.ok(commands.some((command) => command.startsWith('schtasks /End')));
171
+ assert.ok(!commands.some((command) => command.startsWith('schtasks /Run')));
172
+ });
173
+ test('restartWindowsTask aborts /Run (throws) when the task state cannot be determined', async () => {
174
+ const commands = [];
175
+ let clock = 0;
176
+ await assert.rejects(restartWindowsTask(null, {
177
+ execSync: (command) => {
178
+ commands.push(command);
179
+ // State probe fails → 'unknown'; must not be treated as stopped.
180
+ if (/-EncodedCommand/u.test(command)) {
181
+ throw new Error('COM query failed');
182
+ }
183
+ return Buffer.from('');
184
+ },
185
+ sleep: async () => undefined,
186
+ now: () => {
187
+ const value = clock;
188
+ clock += 16_000;
189
+ return value;
190
+ },
191
+ }), /did not reach a stopped state/u);
192
+ assert.ok(!commands.some((command) => command.startsWith('schtasks /Run')));
193
+ });
194
+ test('scheduleWindowsTaskRestart creates the out-of-job restart helper and verifies its correlated ready marker', async () => {
106
195
  const calls = [];
107
- let unrefCalled = false;
108
- scheduleWindowsTaskRestart({
109
- spawn: ((command, args, options) => {
196
+ const scheduled = await scheduleWindowsTaskRestart({
197
+ handoffId: 'active-handoff',
198
+ parentPid: 4321,
199
+ daemonPath: 'C:\\Tools\\agentrunner.cmd',
200
+ execFileSync: ((command, args, options) => {
110
201
  calls.push({ command, args, options });
111
- return { unref: () => (unrefCalled = true) };
202
+ return Buffer.from('');
112
203
  }),
204
+ readFile: async () => `\uFEFF${JSON.stringify({ handoffId: 'active-handoff', replacementPid: 9876, state: 'prepared' })}`,
205
+ unlink: async () => undefined,
206
+ isProcessRunning: (pid) => pid === 9876,
113
207
  });
208
+ assert.equal(scheduled.status, 'prepared');
209
+ assert.equal(scheduled.handoffId, 'active-handoff');
114
210
  assert.equal(calls.length, 1);
115
211
  assert.equal(calls[0].command, 'powershell.exe');
116
212
  const command = calls[0].args.at(-1) ?? '';
@@ -120,28 +216,63 @@ test('scheduleWindowsTaskRestart queues an out-of-job task restart after the cur
120
216
  const encodedCommand = command.match(/-EncodedCommand ([A-Za-z0-9+/=]+)/u)?.[1];
121
217
  assert.ok(encodedCommand);
122
218
  const restartScript = Buffer.from(encodedCommand, 'base64').toString('utf16le');
219
+ assert.match(restartScript, /Set-Content -LiteralPath \$handoffPath/u);
220
+ assert.match(restartScript, /handoffId = \$handoffId; replacementPid = \$PID; state = 'prepared'/u);
221
+ assert.match(restartScript, /state -eq 'acknowledged'/u);
222
+ assert.match(restartScript, /AddSeconds\(180\)/u);
223
+ assert.match(restartScript, /Test-HandoffAcknowledged/u);
123
224
  assert.match(restartScript, /schtasks \/Query \/TN \$taskName/u);
124
- assert.match(restartScript, /do\s*\{/u);
125
- assert.match(restartScript, /\$task\.State -ne 4/u);
126
- assert.match(restartScript, /schtasks \/End \/TN \$taskName/u);
225
+ assert.match(restartScript, /for \(\$attempt = 1; \$attempt -le 20; \$attempt\+\+\)/u);
226
+ assert.match(restartScript, /\$task\.State -eq 4/u);
127
227
  assert.match(restartScript, /schtasks \/Run \/TN \$taskName/u);
128
- assert.ok(restartScript.indexOf('schtasks /End') < restartScript.indexOf('schtasks /Run'));
129
- assert.doesNotMatch(restartScript, /Start-Sleep -Milliseconds 500/u);
228
+ assert.match(restartScript, /Start-DirectFallback/u);
229
+ assert.match(restartScript, /& \$daemonPath start/u);
130
230
  // Every abort/failure path must leave a diagnostic trace in the daemon log so a
131
231
  // silent non-recovery is diagnosable (code review P2/P3).
132
232
  assert.match(restartScript, /function Write-RestartLog/u);
133
233
  assert.match(restartScript, /\*>> \$logPath/u);
134
234
  assert.match(restartScript, /trap \{/u);
135
- // GetTask is wrapped so a TOCTOU deletion is logged instead of crashing silently.
235
+ // GetTask is wrapped so a TOCTOU deletion is retried instead of crashing silently.
136
236
  assert.match(restartScript, /try \{\s*\$task = \$folder\.GetTask\(\$taskName\)\s*\}\s*catch \{/u);
137
- // The 30s deadline and Query-failure branches log before exiting.
138
- assert.match(restartScript, /after 30s deadline; aborting restart"; exit 1/u);
139
- assert.match(restartScript, /schtasks \/Query failed .*; aborting restart"; exit 1/u);
237
+ assert.match(restartScript, /schtasks \/Query failed with exit \$LASTEXITCODE on attempt \$attempt/u);
238
+ assert.match(restartScript, /schtasks \/Run failed with exit \$LASTEXITCODE on attempt \$attempt/u);
140
239
  // The outer WMI create logs its ReturnValue on failure.
141
240
  assert.match(command, /Win32_Process\.Create failed with ReturnValue/u);
142
241
  assert.equal(calls[0].options.windowsHide, true);
143
- assert.equal(calls[0].options.detached, true);
144
- assert.equal(unrefCalled, true);
242
+ // Runs synchronously (blocking) so the helper exists before the daemon exits —
243
+ // must NOT be a detached spawn, which never executes its -Command on Windows.
244
+ assert.notEqual(calls[0].options.detached, true);
245
+ });
246
+ test('scheduleWindowsTaskRestart returns a retryable failure when the helper cannot be created', async () => {
247
+ const scheduled = await scheduleWindowsTaskRestart({
248
+ handoffId: 'create-failure',
249
+ execFileSync: (() => {
250
+ throw new Error('Win32_Process.Create failed');
251
+ }),
252
+ unlink: async () => undefined,
253
+ });
254
+ assert.equal(scheduled.status, 'retryable-failure');
255
+ assert.equal(scheduled.handoffId, 'create-failure');
256
+ assert.equal(scheduled.reason, 'helper-preparation-failed');
257
+ });
258
+ test('scheduleWindowsTaskRestart rejects a stale ready marker and times out safely', async () => {
259
+ let clock = 0;
260
+ const scheduled = await scheduleWindowsTaskRestart({
261
+ handoffId: 'current-handoff',
262
+ execFileSync: (() => Buffer.from('')),
263
+ readFile: async () => JSON.stringify({ handoffId: 'stale-handoff', replacementPid: 9876, state: 'prepared' }),
264
+ unlink: async () => undefined,
265
+ isProcessRunning: () => true,
266
+ sleep: async () => undefined,
267
+ now: () => {
268
+ const value = clock;
269
+ clock += 3_000;
270
+ return value;
271
+ },
272
+ });
273
+ assert.equal(scheduled.status, 'retryable-failure');
274
+ assert.equal(scheduled.handoffId, 'current-handoff');
275
+ assert.ok(clock >= 20_000, 'Windows helper preparation should allow at least 20 seconds');
145
276
  });
146
277
  test('buildPlistContent injects CODEX_SANDBOX_LEVEL=off', () => {
147
278
  const content = buildPlistContent({
@@ -158,7 +289,7 @@ test('buildSystemdContent injects CODEX_SANDBOX_LEVEL=off', () => {
158
289
  });
159
290
  assert.match(content, /Environment="CODEX_SANDBOX_LEVEL=off"/u);
160
291
  });
161
- test('launchWindowsHiddenDaemon starts a detached hidden PowerShell process without VBS', () => {
292
+ test('launchWindowsHiddenDaemon starts a hidden PowerShell process without detaching it', () => {
162
293
  const calls = [];
163
294
  let unrefCalled = false;
164
295
  launchWindowsHiddenDaemon({
@@ -178,7 +309,9 @@ test('launchWindowsHiddenDaemon starts a detached hidden PowerShell process with
178
309
  assert.ok(calls[0].args.includes('Hidden'));
179
310
  assert.match(calls[0].args.at(-1) ?? '', /agentrunner\.cmd.* start/u);
180
311
  assert.equal(calls[0].options.windowsHide, true);
181
- assert.equal(calls[0].options.detached, true);
312
+ // Must NOT be detached: DETACHED_PROCESS leaves the hidden powershell created
313
+ // but never running its command on Windows, so the runner never starts.
314
+ assert.notEqual(calls[0].options.detached, true);
182
315
  assert.equal(unrefCalled, true);
183
316
  });
184
317
  //# sourceMappingURL=autostart.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autostart.test.js","sourceRoot":"","sources":["../src/autostart.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autostart.test.js","sourceRoot":"","sources":["../src/autostart.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1,9 @@
1
- export declare const runRestartCommand: () => Promise<void>;
1
+ import { restartDaemon, waitForDaemonToStart } from '../daemon-control.js';
2
+ import { logger } from '../logger.js';
3
+ type RunRestartCommandDeps = {
4
+ restartDaemon?: typeof restartDaemon;
5
+ waitForDaemonToStart?: typeof waitForDaemonToStart;
6
+ logger?: Pick<typeof logger, 'info'>;
7
+ };
8
+ export declare const runRestartCommand: (deps?: RunRestartCommandDeps) => Promise<void>;
9
+ export {};
@@ -1,7 +1,19 @@
1
- import { restartDaemon } from '../daemon-control.js';
1
+ import { restartDaemon, waitForDaemonToStart } from '../daemon-control.js';
2
2
  import { logger } from '../logger.js';
3
- export const runRestartCommand = async () => {
4
- await restartDaemon();
5
- logger.info('AgentRunner restart completed');
3
+ export const runRestartCommand = async (deps = {}) => {
4
+ const resolvedRestartDaemon = deps.restartDaemon ?? restartDaemon;
5
+ const resolvedWaitForDaemonToStart = deps.waitForDaemonToStart ?? waitForDaemonToStart;
6
+ const resolvedLogger = deps.logger ?? logger;
7
+ await resolvedRestartDaemon();
8
+ const status = await resolvedWaitForDaemonToStart();
9
+ if (status.running) {
10
+ resolvedLogger.info('AgentRunner restart completed', { pid: status.pid });
11
+ return;
12
+ }
13
+ // The runner never reported running within the timeout. Fail with a non-zero
14
+ // exit code so shells and install automation don't treat a broken restart as
15
+ // success — the whole point of the confirmation step.
16
+ throw new Error('AgentRunner restart was triggered but the runner did not report running within the timeout. ' +
17
+ 'Check `agentrunner status`.');
6
18
  };
7
19
  //# sourceMappingURL=restart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,MAAM,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC,CAAC"}
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAA8B,EAAE,EAAiB,EAAE;IACzF,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;IAClE,MAAM,4BAA4B,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IACvF,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAE7C,MAAM,qBAAqB,EAAE,CAAC;IAE9B,MAAM,MAAM,GAAG,MAAM,4BAA4B,EAAE,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,IAAI,KAAK,CACb,8FAA8F;QAC5F,6BAA6B,CAChC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { runRestartCommand } from './restart.js';
4
+ test('runRestartCommand resolves and logs the pid once the runner reports running', async () => {
5
+ const infos = [];
6
+ let restarted = false;
7
+ await runRestartCommand({
8
+ restartDaemon: async () => {
9
+ restarted = true;
10
+ },
11
+ waitForDaemonToStart: async () => ({ running: true, pid: 4321 }),
12
+ logger: {
13
+ info: (message, meta) => {
14
+ infos.push({ message, meta });
15
+ },
16
+ },
17
+ });
18
+ assert.equal(restarted, true);
19
+ assert.equal(infos.length, 1);
20
+ assert.match(infos[0].message, /restart completed/u);
21
+ assert.deepEqual(infos[0].meta, { pid: 4321 });
22
+ });
23
+ test('runRestartCommand throws (non-zero exit) when the runner never reports running', async () => {
24
+ await assert.rejects(runRestartCommand({
25
+ restartDaemon: async () => undefined,
26
+ // Confirmation timed out — runner did not come up.
27
+ waitForDaemonToStart: async () => ({ running: false, pid: null }),
28
+ logger: { info: () => undefined },
29
+ }), /did not report running within the timeout/u);
30
+ });
31
+ //# sourceMappingURL=restart.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.test.js","sourceRoot":"","sources":["../../src/commands/restart.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;IAC7F,MAAM,KAAK,GAA+C,EAAE,CAAC;IAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,iBAAiB,CAAC;QACtB,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAChE,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,OAAe,EAAE,IAAc,EAAE,EAAE;gBACxC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,CAAC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;IAChG,MAAM,MAAM,CAAC,OAAO,CAClB,iBAAiB,CAAC;QAChB,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;QACpC,mDAAmD;QACnD,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACjE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;KAClC,CAAC,EACF,4CAA4C,CAC7C,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -5,6 +5,7 @@ import { createTriggerHandler } from '../handlers/trigger-handler.js';
5
5
  import { writePidFile, removePidFile } from '../pid.js';
6
6
  import { logger } from '../logger.js';
7
7
  import { refreshWindowsPathFromRegistry } from '../windows-path.js';
8
+ import { activatePreparedRestartHandoff } from '../restart-handoff.js';
8
9
  /**
9
10
  * The Windows Task Scheduler wrapper injects a PATH snapshot
10
11
  * frozen at registration time, so runner CLIs installed afterwards become
@@ -34,6 +35,10 @@ const ensureCodexSandboxDefault = () => {
34
35
  export const runStartCommand = async () => {
35
36
  refreshExecutablePath();
36
37
  ensureCodexSandboxDefault();
38
+ const activatedHandoff = await activatePreparedRestartHandoff();
39
+ if (activatedHandoff) {
40
+ logger.info('Replacement runner activated after restart handoff');
41
+ }
37
42
  await writePidFile();
38
43
  const cleanup = async () => {
39
44
  await removePidFile();
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,GAAS,EAAE;IACvC,MAAM,YAAY,GAAG,8BAA8B,EAAE,CAAC;IACtD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,uEAAuE,EAAE;YACnF,YAAY;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,GAAS,EAAE;IAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,qBAAqB,EAAE,CAAC;IACxB,yBAAyB,EAAE,CAAC;IAC5B,MAAM,YAAY,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,+EAA+E;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtE,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;AACvH,CAAC,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,GAAS,EAAE;IACvC,MAAM,YAAY,GAAG,8BAA8B,EAAE,CAAC;IACtD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,uEAAuE,EAAE;YACnF,YAAY;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,GAAS,EAAE;IAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,qBAAqB,EAAE,CAAC;IACxB,yBAAyB,EAAE,CAAC;IAC5B,MAAM,gBAAgB,GAAG,MAAM,8BAA8B,EAAE,CAAC;IAChE,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,YAAY,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,+EAA+E;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtE,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;AACvH,CAAC,CAAC"}
@@ -1,18 +1,20 @@
1
1
  import { platform as getPlatform } from 'node:os';
2
- import { getAutostartStatus, restartAutostartService, scheduleWindowsTaskRestart } from './autostart.js';
2
+ import { getAutostartStatus, registerWindowsTask, restartAutostartService, scheduleWindowsTaskRestart } from './autostart.js';
3
3
  import { logger } from './logger.js';
4
+ import { acknowledgePreparedRestartHandoff, waitForPreparedRestartHandoff, type RestartExecutionResult, type RestartHandoffLaunch, type RestartHandoffPreparation } from './restart-handoff.js';
4
5
  type RunningDaemonStatus = {
5
6
  running: boolean;
6
7
  pid: number | null;
7
8
  };
8
9
  type DetachedChildProcess = {
10
+ pid?: number;
9
11
  unref: () => void;
10
12
  };
11
13
  type RestartDeps = {
12
14
  getDaemonStatus?: () => Promise<RunningDaemonStatus>;
13
15
  getAutostartStatus?: typeof getAutostartStatus;
14
16
  restartAutostartService?: typeof restartAutostartService;
15
- spawnDetachedDaemon?: () => DetachedChildProcess | void;
17
+ spawnDetachedDaemon?: (launch?: RestartHandoffLaunch) => DetachedChildProcess | void;
16
18
  kill?: typeof process.kill;
17
19
  sleep?: (milliseconds: number) => Promise<void>;
18
20
  logger?: Pick<typeof logger, 'info'>;
@@ -20,12 +22,36 @@ type RestartDeps = {
20
22
  type ExecuteRestartDeps = {
21
23
  getAutostartStatus?: typeof getAutostartStatus;
22
24
  scheduleWindowsTaskRestart?: typeof scheduleWindowsTaskRestart;
23
- spawnDetachedDaemon?: () => DetachedChildProcess | void;
25
+ registerWindowsTask?: typeof registerWindowsTask;
26
+ prepareDetachedDaemon?: () => Promise<RestartHandoffPreparation>;
27
+ spawnDetachedDaemon?: (launch?: RestartHandoffLaunch) => DetachedChildProcess | void;
28
+ acknowledgeRestart?: () => Promise<void>;
29
+ acknowledgePreparedHandoff?: typeof acknowledgePreparedRestartHandoff;
30
+ config?: {
31
+ daemonToken: string;
32
+ apiUrl: string;
33
+ };
24
34
  platform?: typeof getPlatform;
25
- processExit?: (code: number) => never;
35
+ processExit?: (code: number) => void;
26
36
  logger?: Pick<typeof logger, 'info'>;
27
37
  };
28
- export declare const spawnDetachedDaemon: () => DetachedChildProcess | void;
29
- export declare const executeRestartRequest: (deps?: ExecuteRestartDeps) => void;
38
+ type WaitForStartDeps = {
39
+ getDaemonStatus?: () => Promise<RunningDaemonStatus>;
40
+ sleep?: (milliseconds: number) => Promise<void>;
41
+ now?: () => number;
42
+ timeoutMs?: number;
43
+ };
44
+ export declare const waitForDaemonToStart: (deps?: WaitForStartDeps) => Promise<RunningDaemonStatus>;
45
+ export declare const spawnDetachedDaemon: (launch?: RestartHandoffLaunch) => DetachedChildProcess | void;
46
+ type PrepareDetachedRestartDeps = {
47
+ spawnDetachedDaemon?: (launch: RestartHandoffLaunch) => DetachedChildProcess | void;
48
+ waitForPreparedRestartHandoff?: typeof waitForPreparedRestartHandoff;
49
+ unlink?: (path: string) => Promise<void>;
50
+ handoffId?: string;
51
+ parentPid?: number;
52
+ markerPath?: string;
53
+ };
54
+ export declare const prepareDetachedRestartHandoff: (deps?: PrepareDetachedRestartDeps) => Promise<RestartHandoffPreparation>;
55
+ export declare const executeRestartRequest: (deps?: ExecuteRestartDeps) => Promise<RestartExecutionResult>;
30
56
  export declare const restartDaemon: (deps?: RestartDeps) => Promise<void>;
31
57
  export {};