@agentteams/runner 0.0.97 → 0.0.98
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/dist/api-client.d.ts +1 -0
- package/dist/api-client.js +20 -1
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.test.js +48 -1
- package/dist/api-client.test.js.map +1 -1
- package/dist/autostart.d.ts +37 -8
- package/dist/autostart.js +158 -68
- package/dist/autostart.js.map +1 -1
- package/dist/autostart.test.js +130 -76
- package/dist/autostart.test.js.map +1 -1
- package/dist/commands/start.js +2 -2
- package/dist/commands/stop.d.ts +10 -1
- package/dist/commands/stop.js +11 -7
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/stop.test.d.ts +1 -0
- package/dist/commands/stop.test.js +34 -0
- package/dist/commands/stop.test.js.map +1 -0
- package/dist/commands/uninstall.d.ts +13 -1
- package/dist/commands/uninstall.js +21 -10
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/uninstall.test.d.ts +1 -0
- package/dist/commands/uninstall.test.js +42 -0
- package/dist/commands/uninstall.test.js.map +1 -0
- package/dist/daemon-control.d.ts +2 -1
- package/dist/daemon-control.js +16 -6
- package/dist/daemon-control.js.map +1 -1
- package/dist/daemon-control.test.js +27 -3
- package/dist/daemon-control.test.js.map +1 -1
- package/dist/executable.test.js +13 -0
- package/dist/executable.test.js.map +1 -1
- package/dist/poller.test.js +23 -0
- package/dist/poller.test.js.map +1 -1
- package/dist/runners/capabilities.js +1 -0
- package/dist/runners/capabilities.js.map +1 -1
- package/dist/runners/capabilities.test.js +13 -1
- package/dist/runners/capabilities.test.js.map +1 -1
- package/dist/runners/codex.test.js +1 -1
- package/dist/runners/codex.test.js.map +1 -1
- package/dist/runners/cursor-cli.d.ts +27 -0
- package/dist/runners/cursor-cli.js +276 -0
- package/dist/runners/cursor-cli.js.map +1 -0
- package/dist/runners/cursor-cli.test.d.ts +1 -0
- package/dist/runners/cursor-cli.test.js +189 -0
- package/dist/runners/cursor-cli.test.js.map +1 -0
- package/dist/runners/index.js +3 -0
- package/dist/runners/index.js.map +1 -1
- package/dist/runners/index.test.js +2 -0
- package/dist/runners/index.test.js.map +1 -1
- package/dist/runners/stream-json-parser.d.ts +9 -0
- package/dist/runners/stream-json-parser.js +143 -0
- package/dist/runners/stream-json-parser.js.map +1 -1
- package/dist/runners/stream-json-parser.test.js +117 -1
- package/dist/runners/stream-json-parser.test.js.map +1 -1
- package/dist/utils/git-worktree.js +2 -1
- package/dist/utils/git-worktree.js.map +1 -1
- package/dist/utils/git-worktree.test.js +2 -2
- package/dist/utils/git-worktree.test.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +24 -6
package/dist/api-client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ClaimResult, DaemonInfo, InjectedConventionRecord, PollStateResponse, TriggerFinalStatus, TriggerLogInput, TriggerRuntime } from './types.js';
|
|
2
|
+
export declare const DAEMON_API_TRANSPORT_TIMEOUT_MS = 30000;
|
|
2
3
|
export declare class DaemonApiClient {
|
|
3
4
|
private readonly apiUrl;
|
|
4
5
|
private readonly daemonToken;
|
package/dist/api-client.js
CHANGED
|
@@ -5,6 +5,15 @@ const packageJson = require('../package.json');
|
|
|
5
5
|
const runnerVersion = packageJson.version ?? '0.0.0';
|
|
6
6
|
const MAX_NETWORK_RETRIES = 3;
|
|
7
7
|
const BASE_BACKOFF_MS = 1000;
|
|
8
|
+
export const DAEMON_API_TRANSPORT_TIMEOUT_MS = 30_000;
|
|
9
|
+
class DaemonApiTimeoutError extends Error {
|
|
10
|
+
timeoutMs;
|
|
11
|
+
constructor(timeoutMs) {
|
|
12
|
+
super(`Daemon API request timed out after ${timeoutMs}ms`);
|
|
13
|
+
this.timeoutMs = timeoutMs;
|
|
14
|
+
this.name = 'DaemonApiTimeoutError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
8
17
|
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
18
|
const isNetworkError = (error) => {
|
|
10
19
|
return error instanceof Error;
|
|
@@ -45,8 +54,13 @@ export class DaemonApiClient {
|
|
|
45
54
|
async requestWithRetry(path, options) {
|
|
46
55
|
const url = `${this.apiUrl}${path}`;
|
|
47
56
|
for (let attempt = 0; attempt <= MAX_NETWORK_RETRIES; attempt += 1) {
|
|
57
|
+
const timeoutController = new AbortController();
|
|
58
|
+
const timeoutError = new DaemonApiTimeoutError(DAEMON_API_TRANSPORT_TIMEOUT_MS);
|
|
59
|
+
const timeoutHandle = setTimeout(() => {
|
|
60
|
+
timeoutController.abort(timeoutError);
|
|
61
|
+
}, DAEMON_API_TRANSPORT_TIMEOUT_MS);
|
|
48
62
|
try {
|
|
49
|
-
return await fetch(url, options);
|
|
63
|
+
return await fetch(url, { ...options, signal: timeoutController.signal });
|
|
50
64
|
}
|
|
51
65
|
catch (error) {
|
|
52
66
|
if (!isNetworkError(error) || attempt >= MAX_NETWORK_RETRIES) {
|
|
@@ -56,11 +70,16 @@ export class DaemonApiClient {
|
|
|
56
70
|
const delayMs = BASE_BACKOFF_MS * 2 ** attempt;
|
|
57
71
|
logger.warn(`Retry ${retryNumber}/${MAX_NETWORK_RETRIES}: network error while requesting daemon API`, {
|
|
58
72
|
path,
|
|
73
|
+
retryNumber,
|
|
59
74
|
delayMs,
|
|
75
|
+
...(error instanceof DaemonApiTimeoutError ? { timeoutMs: error.timeoutMs } : {}),
|
|
60
76
|
error: error instanceof Error ? error.message : String(error),
|
|
61
77
|
});
|
|
62
78
|
await wait(delayMs);
|
|
63
79
|
}
|
|
80
|
+
finally {
|
|
81
|
+
clearTimeout(timeoutHandle);
|
|
82
|
+
}
|
|
64
83
|
}
|
|
65
84
|
throw new Error('Unexpected retry loop exit');
|
|
66
85
|
}
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAyB,CAAC;AACvE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.test.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import test, { mock } from 'node:test';
|
|
4
|
-
import { DaemonApiClient } from './api-client.js';
|
|
4
|
+
import { DAEMON_API_TRANSPORT_TIMEOUT_MS, DaemonApiClient } from './api-client.js';
|
|
5
5
|
import { logger } from './logger.js';
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
7
|
const packageJson = require('../package.json');
|
|
@@ -147,6 +147,9 @@ test('requestWithRetry retries network failures with exponential backoff and war
|
|
|
147
147
|
});
|
|
148
148
|
const delays = [];
|
|
149
149
|
globalThis.setTimeout = ((callback, delay) => {
|
|
150
|
+
if (delay === DAEMON_API_TRANSPORT_TIMEOUT_MS) {
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
150
153
|
delays.push(delay ?? 0);
|
|
151
154
|
callback();
|
|
152
155
|
return 0;
|
|
@@ -179,4 +182,48 @@ test('requestWithRetry retries network failures with exponential backoff and war
|
|
|
179
182
|
assert.match(warnings[0]?.message ?? '', /Retry 1\/3/);
|
|
180
183
|
assert.equal(warnings[1]?.meta?.delayMs, 2000);
|
|
181
184
|
});
|
|
185
|
+
test('requestWithRetry aborts stalled requests at the transport timeout and retries safely', async () => {
|
|
186
|
+
const warnings = [];
|
|
187
|
+
mock.method(logger, 'warn', (message, meta) => {
|
|
188
|
+
warnings.push({ message, meta });
|
|
189
|
+
});
|
|
190
|
+
const delays = [];
|
|
191
|
+
globalThis.setTimeout = ((callback, delay) => {
|
|
192
|
+
delays.push(delay ?? 0);
|
|
193
|
+
callback();
|
|
194
|
+
return 0;
|
|
195
|
+
});
|
|
196
|
+
const signals = [];
|
|
197
|
+
globalThis.fetch = (async (_url, options) => {
|
|
198
|
+
const signal = options?.signal;
|
|
199
|
+
assert.ok(signal);
|
|
200
|
+
signals.push(signal);
|
|
201
|
+
await new Promise((_resolve, reject) => {
|
|
202
|
+
if (signal.aborted) {
|
|
203
|
+
reject(signal.reason);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
signal.addEventListener('abort', () => reject(signal.reason), { once: true });
|
|
207
|
+
});
|
|
208
|
+
throw new Error('unreachable');
|
|
209
|
+
});
|
|
210
|
+
const client = new DaemonApiClient('https://api.example', 'daemon-token');
|
|
211
|
+
await assert.rejects(() => client.fetchPollState(), /timed out/);
|
|
212
|
+
assert.equal(signals.length, 4, 'initial request plus three retries');
|
|
213
|
+
assert.ok(signals.every((signal) => signal.aborted));
|
|
214
|
+
assert.deepEqual(delays, [30_000, 1000, 30_000, 2000, 30_000, 4000, 30_000]);
|
|
215
|
+
assert.equal(warnings.length, 3);
|
|
216
|
+
assert.deepEqual(warnings.map((warning) => ({
|
|
217
|
+
path: warning.meta?.path,
|
|
218
|
+
retryNumber: warning.meta?.retryNumber,
|
|
219
|
+
delayMs: warning.meta?.delayMs,
|
|
220
|
+
timeoutMs: warning.meta?.timeoutMs,
|
|
221
|
+
})), [
|
|
222
|
+
{ path: '/api/daemon-triggers/poll-state', retryNumber: 1, delayMs: 1000, timeoutMs: 30_000 },
|
|
223
|
+
{ path: '/api/daemon-triggers/poll-state', retryNumber: 2, delayMs: 2000, timeoutMs: 30_000 },
|
|
224
|
+
{ path: '/api/daemon-triggers/poll-state', retryNumber: 3, delayMs: 4000, timeoutMs: 30_000 },
|
|
225
|
+
]);
|
|
226
|
+
assert.ok(warnings.every((warning) => !JSON.stringify(warning).includes('daemon-token')));
|
|
227
|
+
assert.ok(warnings.every((warning) => !JSON.stringify(warning).includes('https://api.example')));
|
|
228
|
+
});
|
|
182
229
|
//# sourceMappingURL=api-client.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"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"}
|
package/dist/autostart.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { execSync, spawn } from 'node:child_process';
|
|
2
|
+
import { platform } from 'node:os';
|
|
3
|
+
import { resolveExecutablePath } from './executable.js';
|
|
1
4
|
export declare const buildPlistContent: (config: AutostartConfig) => string;
|
|
2
5
|
export declare const buildSystemdContent: (config: AutostartConfig) => string;
|
|
3
|
-
export declare const
|
|
6
|
+
export declare const buildWindowsPowerShellWrapper: (config: AutostartConfig, daemonPath?: string, logPath?: string, currentPath?: string) => string;
|
|
7
|
+
export declare const buildWindowsTaskXmlContent: (userId: string, wrapperPath: string) => string;
|
|
4
8
|
export type AutostartConfig = {
|
|
5
9
|
token: string;
|
|
6
10
|
apiUrl: string;
|
|
@@ -13,20 +17,45 @@ export type AutostartResult = {
|
|
|
13
17
|
export declare const registerAutostart: (config: AutostartConfig) => Promise<AutostartResult>;
|
|
14
18
|
export declare const unregisterAutostart: () => Promise<void>;
|
|
15
19
|
export declare const restartAutostartService: () => Promise<void>;
|
|
16
|
-
|
|
20
|
+
type AutostartStatusDeps = {
|
|
21
|
+
platform?: typeof platform;
|
|
22
|
+
execSync?: typeof execSync;
|
|
23
|
+
};
|
|
24
|
+
export declare const getAutostartStatus: (deps?: AutostartStatusDeps) => {
|
|
17
25
|
registered: boolean;
|
|
18
26
|
platform: string;
|
|
19
27
|
};
|
|
20
|
-
type
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
type WindowsAutostartDeps = {
|
|
29
|
+
execSync?: (command: string, options: {
|
|
30
|
+
windowsHide: boolean;
|
|
31
|
+
}) => unknown;
|
|
32
|
+
mkdir?: (path: string, options: {
|
|
24
33
|
recursive: boolean;
|
|
25
|
-
}) =>
|
|
34
|
+
}) => Promise<unknown>;
|
|
35
|
+
writeFile?: (path: string, data: string, encoding: BufferEncoding) => Promise<void>;
|
|
36
|
+
unlink?: (path: string) => Promise<void>;
|
|
37
|
+
chmodSync?: (path: string, mode: number) => void;
|
|
38
|
+
daemonPath?: string;
|
|
39
|
+
userId?: string;
|
|
40
|
+
};
|
|
41
|
+
export declare const registerWindowsTask: (config: AutostartConfig, deps?: WindowsAutostartDeps) => Promise<AutostartResult>;
|
|
42
|
+
export declare const unregisterWindowsTask: (deps?: WindowsAutostartDeps) => Promise<void>;
|
|
43
|
+
type RestartWindowsTaskDeps = {
|
|
26
44
|
execSync?: (command: string, options: {
|
|
27
45
|
windowsHide: boolean;
|
|
28
46
|
}) => unknown;
|
|
29
|
-
|
|
47
|
+
writeFile?: (path: string, data: string, encoding: BufferEncoding) => Promise<void>;
|
|
48
|
+
chmodSync?: (path: string, mode: number) => void;
|
|
49
|
+
daemonPath?: string;
|
|
50
|
+
};
|
|
51
|
+
export declare const restartWindowsTask: (config: AutostartConfig | null, deps?: RestartWindowsTaskDeps) => Promise<void>;
|
|
52
|
+
type ScheduleWindowsTaskRestartDeps = {
|
|
53
|
+
spawn?: typeof spawn;
|
|
54
|
+
};
|
|
55
|
+
export declare const scheduleWindowsTaskRestart: (deps?: ScheduleWindowsTaskRestartDeps) => void;
|
|
56
|
+
type LaunchWindowsHiddenDeps = {
|
|
57
|
+
spawn?: typeof spawn;
|
|
58
|
+
resolveExecutablePath?: typeof resolveExecutablePath;
|
|
30
59
|
};
|
|
31
60
|
export declare const launchWindowsHiddenDaemon: (deps?: LaunchWindowsHiddenDeps) => void;
|
|
32
61
|
export {};
|
package/dist/autostart.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
|
-
import { chmodSync, existsSync,
|
|
1
|
+
import { execSync, spawn } from 'node:child_process';
|
|
2
|
+
import { chmodSync, existsSync, promises as fs } from 'node:fs';
|
|
3
3
|
import { homedir, platform } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
5
|
import { resolveExecutablePath } from './executable.js';
|
|
6
6
|
import { logger } from './logger.js';
|
|
7
7
|
const SERVICE_LABEL = 'run.agentteams.runner';
|
|
8
8
|
const TASK_NAME = 'AgentRunner';
|
|
9
|
+
const WINDOWS_LOG_MAX_BYTES = 10 * 1024 * 1024;
|
|
9
10
|
// --- Path helpers ---
|
|
10
11
|
const getLaunchdPlistPath = () => join(homedir(), 'Library', 'LaunchAgents', `${SERVICE_LABEL}.plist`);
|
|
11
12
|
const getSystemdServicePath = () => join(homedir(), '.config', 'systemd', 'user', 'agentrunner.service');
|
|
12
13
|
const getWindowsBatPath = () => join(homedir(), '.agentteams', 'agentrunner-start.bat');
|
|
13
14
|
const getWindowsVbsPath = () => join(homedir(), '.agentteams', 'agentrunner-start.vbs');
|
|
14
15
|
const getWindowsRestartVbsPath = () => join(homedir(), '.agentteams', 'agentrunner-restart.vbs');
|
|
16
|
+
const getWindowsTaskXmlPath = () => join(homedir(), '.agentteams', 'agentrunner-task.xml');
|
|
17
|
+
const getWindowsWrapperPath = () => join(homedir(), '.agentteams', 'agentrunner-start.ps1');
|
|
18
|
+
const getWindowsLogPath = () => join(homedir(), '.agentteams', 'agentrunner.log');
|
|
15
19
|
const getWindowsStartupVbsPath = () => join(homedir(), 'AppData', 'Roaming', 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup', 'agentrunner-start.vbs');
|
|
16
20
|
// --- plist (macOS) ---
|
|
17
21
|
export const buildPlistContent = (config) => {
|
|
@@ -88,19 +92,67 @@ SyslogIdentifier=agentrunner
|
|
|
88
92
|
[Install]
|
|
89
93
|
WantedBy=default.target`;
|
|
90
94
|
};
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
export const
|
|
95
|
+
const escapeForPowerShellString = (value) => value.replaceAll("'", "''");
|
|
96
|
+
const escapeForXml = (value) => value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"');
|
|
97
|
+
export const buildWindowsPowerShellWrapper = (config, daemonPath = resolveExecutablePath('agentrunner'), logPath = getWindowsLogPath(), currentPath = process.env.PATH ?? '') => {
|
|
94
98
|
return [
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
"$ErrorActionPreference = 'Stop'",
|
|
100
|
+
`$env:PATH = '${escapeForPowerShellString(currentPath)}'`,
|
|
101
|
+
`$env:AGENTTEAMS_DAEMON_TOKEN = '${escapeForPowerShellString(config.token)}'`,
|
|
102
|
+
`$env:AGENTTEAMS_API_URL = '${escapeForPowerShellString(config.apiUrl)}'`,
|
|
103
|
+
"$env:CODEX_SANDBOX_LEVEL = 'off'",
|
|
104
|
+
`$logPath = '${escapeForPowerShellString(logPath)}'`,
|
|
105
|
+
`$maxLogBytes = ${WINDOWS_LOG_MAX_BYTES}`,
|
|
106
|
+
'try {',
|
|
107
|
+
' if ((Test-Path -LiteralPath $logPath -PathType Leaf) -and ((Get-Item -LiteralPath $logPath).Length -ge $maxLogBytes)) {',
|
|
108
|
+
' Move-Item -LiteralPath $logPath -Destination "$logPath.1" -Force',
|
|
109
|
+
' }',
|
|
110
|
+
'} catch {',
|
|
111
|
+
' Clear-Content -LiteralPath $logPath -ErrorAction SilentlyContinue',
|
|
112
|
+
'}',
|
|
113
|
+
`& '${escapeForPowerShellString(daemonPath)}' start *>> '${escapeForPowerShellString(logPath)}'`,
|
|
114
|
+
'exit $LASTEXITCODE',
|
|
102
115
|
].join('\r\n');
|
|
103
116
|
};
|
|
117
|
+
export const buildWindowsTaskXmlContent = (userId, wrapperPath) => {
|
|
118
|
+
const escapedUserId = escapeForXml(userId);
|
|
119
|
+
const argumentsValue = escapeForXml(`-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File "${wrapperPath}"`);
|
|
120
|
+
return `<?xml version="1.0" encoding="UTF-16"?>
|
|
121
|
+
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
|
|
122
|
+
<RegistrationInfo><Description>AgentTeams Runner</Description></RegistrationInfo>
|
|
123
|
+
<Triggers>
|
|
124
|
+
<LogonTrigger>
|
|
125
|
+
<Enabled>true</Enabled>
|
|
126
|
+
<UserId>${escapedUserId}</UserId>
|
|
127
|
+
</LogonTrigger>
|
|
128
|
+
</Triggers>
|
|
129
|
+
<Principals>
|
|
130
|
+
<Principal id="Author">
|
|
131
|
+
<UserId>${escapedUserId}</UserId>
|
|
132
|
+
<LogonType>InteractiveToken</LogonType>
|
|
133
|
+
<RunLevel>LeastPrivilege</RunLevel>
|
|
134
|
+
</Principal>
|
|
135
|
+
</Principals>
|
|
136
|
+
<Settings>
|
|
137
|
+
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
|
|
138
|
+
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
|
|
139
|
+
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
|
|
140
|
+
<StartWhenAvailable>true</StartWhenAvailable>
|
|
141
|
+
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
|
|
142
|
+
<Hidden>true</Hidden>
|
|
143
|
+
<RestartOnFailure>
|
|
144
|
+
<Interval>PT1M</Interval>
|
|
145
|
+
<Count>3</Count>
|
|
146
|
+
</RestartOnFailure>
|
|
147
|
+
</Settings>
|
|
148
|
+
<Actions Context="Author">
|
|
149
|
+
<Exec>
|
|
150
|
+
<Command>powershell.exe</Command>
|
|
151
|
+
<Arguments>${argumentsValue}</Arguments>
|
|
152
|
+
</Exec>
|
|
153
|
+
</Actions>
|
|
154
|
+
</Task>`;
|
|
155
|
+
};
|
|
104
156
|
const getAutostartConfigFromEnv = () => {
|
|
105
157
|
const token = process.env.AGENTTEAMS_DAEMON_TOKEN;
|
|
106
158
|
const apiUrl = process.env.AGENTTEAMS_API_URL;
|
|
@@ -151,16 +203,17 @@ export const restartAutostartService = async () => {
|
|
|
151
203
|
return;
|
|
152
204
|
}
|
|
153
205
|
if (os === 'win32') {
|
|
154
|
-
await
|
|
206
|
+
await restartWindowsTask(config);
|
|
155
207
|
return;
|
|
156
208
|
}
|
|
157
209
|
throw new Error(`Autostart restart is not supported on '${os}'.`);
|
|
158
210
|
};
|
|
159
|
-
export const getAutostartStatus = () => {
|
|
160
|
-
const os = platform();
|
|
211
|
+
export const getAutostartStatus = (deps = {}) => {
|
|
212
|
+
const os = (deps.platform ?? platform)();
|
|
213
|
+
const resolvedExecSync = deps.execSync ?? execSync;
|
|
161
214
|
if (os === 'darwin') {
|
|
162
215
|
try {
|
|
163
|
-
const output =
|
|
216
|
+
const output = resolvedExecSync(`launchctl list ${SERVICE_LABEL} 2>/dev/null`, {
|
|
164
217
|
encoding: 'utf8',
|
|
165
218
|
});
|
|
166
219
|
return { registered: output.includes(SERVICE_LABEL), platform: 'launchd' };
|
|
@@ -171,7 +224,7 @@ export const getAutostartStatus = () => {
|
|
|
171
224
|
}
|
|
172
225
|
if (os === 'linux') {
|
|
173
226
|
try {
|
|
174
|
-
const output =
|
|
227
|
+
const output = resolvedExecSync('systemctl --user is-enabled agentrunner 2>/dev/null', {
|
|
175
228
|
encoding: 'utf8',
|
|
176
229
|
});
|
|
177
230
|
return { registered: output.trim() === 'enabled', platform: 'systemd' };
|
|
@@ -181,10 +234,13 @@ export const getAutostartStatus = () => {
|
|
|
181
234
|
}
|
|
182
235
|
}
|
|
183
236
|
if (os === 'win32') {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
platform: '
|
|
187
|
-
}
|
|
237
|
+
try {
|
|
238
|
+
resolvedExecSync(`schtasks /Query /TN "${TASK_NAME}"`, { windowsHide: true });
|
|
239
|
+
return { registered: true, platform: 'task-scheduler' };
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return { registered: false, platform: 'task-scheduler' };
|
|
243
|
+
}
|
|
188
244
|
}
|
|
189
245
|
return { registered: false, platform: os };
|
|
190
246
|
};
|
|
@@ -288,55 +344,75 @@ const restartSystemd = async (config) => {
|
|
|
288
344
|
}
|
|
289
345
|
execSync('systemctl --user restart agentrunner');
|
|
290
346
|
};
|
|
291
|
-
|
|
292
|
-
const
|
|
347
|
+
export const registerWindowsTask = async (config, deps = {}) => {
|
|
348
|
+
const resolvedExecSync = deps.execSync ?? execSync;
|
|
349
|
+
const resolvedMkdir = deps.mkdir ?? fs.mkdir;
|
|
350
|
+
const resolvedWriteFile = deps.writeFile ?? fs.writeFile;
|
|
351
|
+
const resolvedUnlink = deps.unlink ?? fs.unlink;
|
|
352
|
+
const resolvedChmodSync = deps.chmodSync ?? chmodSync;
|
|
353
|
+
const taskXmlPath = getWindowsTaskXmlPath();
|
|
354
|
+
const wrapperPath = getWindowsWrapperPath();
|
|
293
355
|
const startupVbsPath = getWindowsStartupVbsPath();
|
|
294
356
|
const legacyVbsPath = getWindowsVbsPath();
|
|
295
357
|
const legacyBatPath = getWindowsBatPath();
|
|
358
|
+
const restartVbsPath = getWindowsRestartVbsPath();
|
|
359
|
+
await resolvedMkdir(dirname(taskXmlPath), { recursive: true });
|
|
296
360
|
// Remove legacy Task Scheduler entry if any.
|
|
297
361
|
try {
|
|
298
|
-
|
|
362
|
+
resolvedExecSync(`schtasks /Delete /TN "${TASK_NAME}" /F 2>nul`, { windowsHide: true });
|
|
299
363
|
}
|
|
300
364
|
catch {
|
|
301
365
|
// Not registered — that's fine.
|
|
302
366
|
}
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
|
|
367
|
+
const userName = process.env.USERNAME ?? process.env.USER ?? '';
|
|
368
|
+
const userId = deps.userId ?? (process.env.USERDOMAIN ? `${process.env.USERDOMAIN}\\${userName}` : userName);
|
|
369
|
+
if (!userId) {
|
|
370
|
+
throw new Error('Cannot register Windows Task Scheduler autostart: current user is unknown.');
|
|
371
|
+
}
|
|
372
|
+
await resolvedWriteFile(wrapperPath, buildWindowsPowerShellWrapper(config, deps.daemonPath ?? resolveExecutablePath('agentrunner')), 'utf8');
|
|
373
|
+
await resolvedWriteFile(taskXmlPath, buildWindowsTaskXmlContent(userId, wrapperPath), 'utf16le');
|
|
374
|
+
resolvedChmodSync(wrapperPath, 0o600);
|
|
375
|
+
resolvedChmodSync(taskXmlPath, 0o600);
|
|
306
376
|
// Clean up legacy files.
|
|
307
|
-
for (const legacyPath of [legacyVbsPath, legacyBatPath]) {
|
|
377
|
+
for (const legacyPath of [startupVbsPath, legacyVbsPath, legacyBatPath, restartVbsPath]) {
|
|
308
378
|
try {
|
|
309
|
-
await
|
|
379
|
+
await resolvedUnlink(legacyPath);
|
|
310
380
|
}
|
|
311
381
|
catch {
|
|
312
382
|
// Legacy file may not exist.
|
|
313
383
|
}
|
|
314
384
|
}
|
|
315
|
-
|
|
385
|
+
resolvedExecSync(`schtasks /Create /TN "${TASK_NAME}" /XML "${taskXmlPath}" /F`, { windowsHide: true });
|
|
386
|
+
// Start the registered task immediately.
|
|
316
387
|
try {
|
|
317
|
-
|
|
388
|
+
resolvedExecSync(`schtasks /Run /TN "${TASK_NAME}"`, { windowsHide: true });
|
|
318
389
|
}
|
|
319
390
|
catch {
|
|
320
391
|
logger.warn('Autostart registered but immediate start failed. It will start at next logon.');
|
|
321
392
|
}
|
|
322
|
-
logger.info('Registered Windows
|
|
323
|
-
return { registered: true, servicePath:
|
|
393
|
+
logger.info('Registered Windows Task Scheduler autostart', { taskXmlPath });
|
|
394
|
+
return { registered: true, servicePath: taskXmlPath, platform: 'task-scheduler' };
|
|
324
395
|
};
|
|
325
|
-
const unregisterWindowsTask = async () => {
|
|
396
|
+
export const unregisterWindowsTask = async (deps = {}) => {
|
|
397
|
+
const resolvedExecSync = deps.execSync ?? execSync;
|
|
398
|
+
const resolvedUnlink = deps.unlink ?? fs.unlink;
|
|
326
399
|
const startupVbsPath = getWindowsStartupVbsPath();
|
|
327
400
|
const legacyVbsPath = getWindowsVbsPath();
|
|
328
401
|
const legacyBatPath = getWindowsBatPath();
|
|
402
|
+
const restartVbsPath = getWindowsRestartVbsPath();
|
|
403
|
+
const taskXmlPath = getWindowsTaskXmlPath();
|
|
404
|
+
const wrapperPath = getWindowsWrapperPath();
|
|
329
405
|
// Remove legacy Task Scheduler entry if any.
|
|
330
406
|
try {
|
|
331
|
-
|
|
407
|
+
resolvedExecSync(`schtasks /Delete /TN "${TASK_NAME}" /F 2>nul`, { windowsHide: true });
|
|
332
408
|
}
|
|
333
409
|
catch {
|
|
334
410
|
// Not registered — that's fine.
|
|
335
411
|
}
|
|
336
412
|
// Remove Startup folder VBS and legacy files.
|
|
337
|
-
for (const filePath of [startupVbsPath, legacyVbsPath, legacyBatPath]) {
|
|
413
|
+
for (const filePath of [startupVbsPath, legacyVbsPath, legacyBatPath, restartVbsPath, taskXmlPath, wrapperPath]) {
|
|
338
414
|
try {
|
|
339
|
-
await
|
|
415
|
+
await resolvedUnlink(filePath);
|
|
340
416
|
logger.info('Removed autostart file', { filePath });
|
|
341
417
|
}
|
|
342
418
|
catch {
|
|
@@ -344,40 +420,54 @@ const unregisterWindowsTask = async () => {
|
|
|
344
420
|
}
|
|
345
421
|
}
|
|
346
422
|
};
|
|
347
|
-
const
|
|
348
|
-
const
|
|
349
|
-
if (!existsSync(startupVbsPath)) {
|
|
350
|
-
throw new Error('Windows startup script is not registered.');
|
|
351
|
-
}
|
|
423
|
+
export const restartWindowsTask = async (config, deps = {}) => {
|
|
424
|
+
const resolvedExecSync = deps.execSync ?? execSync;
|
|
352
425
|
if (config) {
|
|
353
|
-
const
|
|
354
|
-
await fs.writeFile(
|
|
355
|
-
chmodSync(
|
|
356
|
-
logger.info('Regenerated Windows
|
|
426
|
+
const wrapperPath = getWindowsWrapperPath();
|
|
427
|
+
await (deps.writeFile ?? fs.writeFile)(wrapperPath, buildWindowsPowerShellWrapper(config, deps.daemonPath ?? resolveExecutablePath('agentrunner')), 'utf8');
|
|
428
|
+
(deps.chmodSync ?? chmodSync)(wrapperPath, 0o600);
|
|
429
|
+
logger.info('Regenerated Windows task wrapper before restart', { wrapperPath });
|
|
357
430
|
}
|
|
358
|
-
|
|
359
|
-
};
|
|
360
|
-
// Run agentrunner via wscript+VBS so no console window appears.
|
|
361
|
-
// Prefers the registered Startup VBS if present; otherwise writes a fresh VBS
|
|
362
|
-
// next to the daemon config and runs it.
|
|
363
|
-
export const launchWindowsHiddenDaemon = (deps = {}) => {
|
|
364
|
-
const resolvedExists = deps.existsSync ?? existsSync;
|
|
365
|
-
const resolvedWrite = deps.writeFileSync ?? writeFileSync;
|
|
366
|
-
const resolvedMkdir = deps.mkdirSync ?? mkdirSync;
|
|
367
|
-
const resolvedExec = deps.execSync ?? execSync;
|
|
368
|
-
const resolvedGetConfig = deps.getAutostartConfig ?? getAutostartConfigFromEnv;
|
|
369
|
-
const startupVbsPath = getWindowsStartupVbsPath();
|
|
370
|
-
if (resolvedExists(startupVbsPath)) {
|
|
371
|
-
resolvedExec(`wscript.exe "${startupVbsPath}"`, { windowsHide: true });
|
|
372
|
-
return;
|
|
431
|
+
try {
|
|
432
|
+
resolvedExecSync(`schtasks /End /TN "${TASK_NAME}"`, { windowsHide: true });
|
|
373
433
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
throw new Error('Cannot launch Windows daemon hidden: AGENTTEAMS_DAEMON_TOKEN/AGENTTEAMS_API_URL are missing.');
|
|
434
|
+
catch {
|
|
435
|
+
// The task may already be stopped — continue with an explicit run.
|
|
377
436
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
437
|
+
resolvedExecSync(`schtasks /Run /TN "${TASK_NAME}"`, { windowsHide: true });
|
|
438
|
+
};
|
|
439
|
+
// A task cannot run a second instance while its current action is still alive.
|
|
440
|
+
// Queue the explicit start in a detached helper so it runs after this daemon exits
|
|
441
|
+
// cleanly, rather than consuming Task Scheduler's failure-restart budget.
|
|
442
|
+
export const scheduleWindowsTaskRestart = (deps = {}) => {
|
|
443
|
+
const resolvedSpawn = deps.spawn ?? spawn;
|
|
444
|
+
const child = resolvedSpawn('powershell.exe', [
|
|
445
|
+
'-NoProfile',
|
|
446
|
+
'-NonInteractive',
|
|
447
|
+
'-WindowStyle',
|
|
448
|
+
'Hidden',
|
|
449
|
+
'-ExecutionPolicy',
|
|
450
|
+
'Bypass',
|
|
451
|
+
'-Command',
|
|
452
|
+
`Start-Sleep -Milliseconds 500; schtasks /Run /TN '${TASK_NAME}'`,
|
|
453
|
+
], {
|
|
454
|
+
detached: true,
|
|
455
|
+
stdio: 'ignore',
|
|
456
|
+
windowsHide: true,
|
|
457
|
+
env: process.env,
|
|
458
|
+
});
|
|
459
|
+
child.unref();
|
|
460
|
+
};
|
|
461
|
+
export const launchWindowsHiddenDaemon = (deps = {}) => {
|
|
462
|
+
const resolvedSpawn = deps.spawn ?? spawn;
|
|
463
|
+
const daemonPath = (deps.resolveExecutablePath ?? resolveExecutablePath)('agentrunner');
|
|
464
|
+
const command = `& '${escapeForPowerShellString(daemonPath)}' start`;
|
|
465
|
+
const child = resolvedSpawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-WindowStyle', 'Hidden', '-ExecutionPolicy', 'Bypass', '-Command', command], {
|
|
466
|
+
detached: true,
|
|
467
|
+
stdio: 'ignore',
|
|
468
|
+
windowsHide: true,
|
|
469
|
+
env: process.env,
|
|
470
|
+
});
|
|
471
|
+
child.unref();
|
|
382
472
|
};
|
|
383
473
|
//# sourceMappingURL=autostart.js.map
|